Unity Pong AI移动速度

时间:2014-05-30 17:53:03

标签: c# unity3d artificial-intelligence pong

我试图在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);
    }
}
}

1 个答案:

答案 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;
}