我试图在Unity C#中为Pong游戏做人工智能,但问题是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);
}
}
}
答案 0 :(得分:2)
AI不是以相同的速度在球上移动,而是AI 与球的位置相同。看看这个:
Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);
AI.position.y
始终是球的位置Ball.position.y
。人工智能永远不会失败。
您必须以可能更新播放器的方式更新AI。在AI.y中制作或减少。只需比较Ball的位置和AI的位置并更新最后一个。
行间的一些事情:
if (Ball.position.y > Ai.position.y)
{
Ai.position.y += AiSpeed;
}
else
{
Ai.position.y -= AiSpeed;
}