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
如果你可以確認,這是真的,我會爲此創建一個答案:) –