我用NavMesh代理的agent.destination写了一段简单的代码,它允许敌人追踪玩家。但是,在追踪目标的过程中,敌人不断地滑倒,无法正确地追踪。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using static UnityEngine.EventSystems.EventTrigger;
public class Enemy : MonoBehaviour
{
public Transform target;
public Transform runAwayPos;
public NavMeshAgent agent;
public Transform spwanPosition;
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
StartCoroutine(Run());
if (Time.timeScale == 0)
{
transform.position = spwanPosition.position;
}
}
IEnumerator Run()
{
agent.speed = 9f;
agent.destination = target.transform.position;
yield return null;
}
private void OnTriggerEnter(Collider collision)
{
if (collision.gameObject.CompareTag("Player"))
{
transform.position = spwanPosition.position;
Debug.Log("hit");
}
}
}
我想知道敌人怎么能追踪一个玩家而不滑倒。
1条答案
按热度按时间xurqigkl1#
首先,你调用每帧的IEnumarator。这会导致不想要的结果。使用update或IEnumarator。
在我看来,
顺便说一下,您应该使用布尔值来检查未跟踪的案例。