NPC不会在距离玩家一定距离的地方停下来

本文关键字:距离 停下来 玩家 NPC | 更新日期: 2023-09-27 18:08:47

我有一个NPC跟随我的玩家,但当它与玩家保持一定距离时,我无法让它停下来。这让我整个晚上都很沮丧,因为网上没有任何东西可以这样做。

它们碰撞并相互撞击!

这是我移动NPC的代码:

using UnityEngine;
using System.Collections;
public class AI : MonoBehaviour {
public Transform target;
public int moveSpeed = 5;
public int rotationSpeed = 2;
public Transform myTransform;
void Awake ()
{
    myTransform = transform;
}
void Start ()
{
    target = GameObject.FindWithTag ("Player").transform;
}
void Update ()
{
    myTransform.rotation = Quaternion.Slerp (myTransform.rotation, Quaternion.LookRotation (target.position - myTransform.position), rotationSpeed * moveSpeed * Time.deltaTime);
    myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
}

NPC不会在距离玩家一定距离的地方停下来

您只需要在距离太远时应用移动代码。如果它足够接近,那么不应用移动代码。这个更新应该是:

Vector3 Distance = target.position - myTransform.position;
if(Distance.sqrMagnitude>minDistance*minDistance)
{
    myTransform.rotation = Quaternion.Slerp (myTransform.rotation, Quaternion.LookRotation (target.position - myTransform.position), rotationSpeed * moveSpeed * Time.deltaTime);
    myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}