我的场景中有两个带有盒子碰撞器的 3D 刚体机器人。这是我在其中一个上的脚本,用于跟随另一个(不旋转)并推动它:
public class BotFollowSwerve : MonoBehaviour
{
public Transform target;
public float force = 10f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
Vector3 targetDirection = (target.position - transform.position).normalized;
rb.AddForce(targetDirection * force, ForceMode.Force);
}
}
另一个机器人由玩家控制,可以旋转和移动。问题是,当玩家背对跟随机器人时,跟随机器人只会将自己排成距玩家机器人约 2 个机器人长度的距离,并开始在原地进行振动/绕圈移动。如果我移动玩家机器人而不旋转它 - 跟随者会跟随它,但保持距离。如果我旋转回跟随者,它的正常跟随和猛击会再次开始。
我试图查看
targetDirection
是否最终为零,因此除了值偶尔波动之外,机器人不会移动。但这似乎并没有产生任何结果。
我建议您使用 Navmesh,因为它非常容易为 AI 设置,并且可以为您完成大部分工作。 在此输入链接描述