C# 多个敌人不跟随玩家-Unity C
我做了一个RPG,敌人跟随玩家。当我复制敌人时,只有一个跟着他 所有的敌人都会跑动,他们会移动他的手臂和腿,但不会移动他的目的地,只有一个跟随玩家 我认为问题来自navMeshAgent,只有一个是所有敌人共享的C# 多个敌人不跟随玩家-Unity C,c#,unity3d,C#,Unity3d,我做了一个RPG,敌人跟随玩家。当我复制敌人时,只有一个跟着他 所有的敌人都会跑动,他们会移动他的手臂和腿,但不会移动他的目的地,只有一个跟随玩家 我认为问题来自navMeshAgent,只有一个是所有敌人共享的 public float lookRadius = 10f; Transform target; static NavMeshAgent agent; CharacterCombat combat; public float timeLlegadaE = 10f; public
public float lookRadius = 10f;
Transform target;
static NavMeshAgent agent;
CharacterCombat combat;
public float timeLlegadaE = 10f;
public float velocidadAtaque;
private float attackCooldown = 0f;
bool ataque = false;
void Start()
{
target = PlayerManager.instance.player.transform;
agent = GetComponent<NavMeshAgent>();
combat = GetComponent<CharacterCombat>();
attackCooldown = velocidadAtaque;
}
// Update is called once per frame
void Update()
{
attackCooldown -= Time.deltaTime;
if (timeLlegadaE < 0)
{
ataqueFalse();
float distance = Vector3.Distance(target.position, transform.position);
if (distance <= lookRadius)
{
if(agent != null)
{
agent.SetDestination(target.position);
avanzarTrue();
if (distance <= (agent.stoppingDistance) && attackCooldown <= 0)
{
ataqueTrue();
//anim.SetBool("Atack", false);
//Debug.Log("Interacting with " + transform.name);
FaceTarget();
attackCooldown = velocidadAtaque;
}
else if (distance <= (agent.stoppingDistance) && attackCooldown > 0)
{
avanzarFalse();
}
}
}
lookRadius = 150f;
gameObject.GetComponent<NavMeshAgent>().enabled = true;
}
else
{
timeLlegadaE -= Time.deltaTime;
}
}
你的
is=>基本上在该脚本的所有实例之间共享,因此
agent = GetComponent<NavMeshAgent>();
如果可能的话,已经通过检查员进行分配
agent = GetComponent<NavMeshAgent>();
[SerializeField] private NavMeshAgent agent;
private void Start()
{
if(!agent) agent = GetComponent<NavMeshAgent>();
...
}