我试图为一场在联合C#的乒乓球比赛做人工智能,但问题是AI似乎以同样的速度移动,因为球在飞。我似乎不知道如何使AI移动一个设定的速度或相同的速度与球员。
using UnityEngine;
using System.Collections;
public class AIController : MonoBehaviour {
Transform Ball;
Transform Ai;
void Update ()
{
//
Ball = GameObject.FindGameObjectWithTag ("Ball").transform;
Ai = GameObject.FindGameObjectWithTag ("Ai").transform;
if (Ball.position.y > 0) {
Debug.Log ("Ball Pos " + Ball.position.y);
Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);
}
else if (Ball.position.y < 0)
{
Debug.Log("Ball Pos " + Ball.position.y);
Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);
}
}
}发布于 2014-05-30 18:00:15
这并不是说AI在球上以同样的速度移动,而是因为AI和球的位置相同。看看这个:
Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);AI.position.y总是球的位置,Ball.position.y。这个人工智能从不输。
你必须以类似的方式更新AI,你很可能是在更新玩家。在AI.y中增加或减少。只需比较球的位置和人工智能的位置,并更新最后一个。
字里行间的东西:
if (Ball.position.y > Ai.position.y)
{
Ai.position.y += AiSpeed;
}
else
{
Ai.position.y -= AiSpeed;
}https://stackoverflow.com/questions/23960654
复制相似问题