1
有一个简单的AI,它在范围内跟随玩家,并在不在玩家范围内时随机移动AI。当人工智能撞墙并超出玩家范围时,它始终开始旋转。无法弄清楚为什么它一直这样做。Ai在发生碰撞时始终在旋转
我可能会错过一件简单的事情...... 非常感谢您的任何帮助。
void Update()
{
Target = GameObject.FindGameObjectWithTag("Player");
if (Vector3.Distance(Target.transform.position, transform.position) < 25)
{
followPlayer();
}
else
{
randomMovement();
}
}
public void followPlayer()
{
if (Vector3.Distance(transform.position, Target.transform.position) >= MinDist)
{
transform.position += transform.forward * MoveSpeed * Time.deltaTime;
transform.LookAt(Target.transform);
if (Vector3.Distance(transform.position, Target.transform.position) <= MaxDist)
{
}
}
else
{
}
}
public void randomMovement()
{
transform.position += transform.forward * MoveSpeed * Time.deltaTime;
transform.Rotate(RandomDirection * Time.deltaTime * 10.0f);
}
void OnCollisionEnter(Collision col)
{
bool hasTurned = false;
if (col.transform.gameObject.name != "Terrain")
{
if(hasTurned == false)
{
RandomDirection = new Vector3(0, Mathf.Sin(TimeBetween) * (RotationRange/2) + OriginalDirection, 0);
randomMovement();
hasTurned = true;
}
else
{
randomMovement();
hasTurned = false;
}
Debug.Log("Hit");
}
你有一个刚体连接到你的AI实体吗?这可能会导致碰撞后的旋转。如果是这样,请尝试冻结旋转。看看:https://docs.unity3d.com/ScriptReference/Rigidbody-freezeRotation.html它也可能,它看起来像它的旋转,导致它不断进入与墙壁的碰撞,因为你选择了一个漂亮随机旋转,让它移动,而不是有一个“智能”的方式摆脱障碍 –
是的,我可以,这可能是问题的原因!谢谢@TobiasTheel – Robertgold
如果你可以确认,这是真的,我会为此创建一个答案:) –