【问题标题】:Unity Pong AI movement speedUnity Pong AI 移动速度
【发布时间】:2014-05-30 17:53:03
【问题描述】:

我试图在 Unity C# 中为 Pong 游戏制作 AI,但问题是 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);
    }
}
}

【问题讨论】:

  • 你在什么时候让它对玩家的行为做出反应?
  • 它对球的运动做出反应,但由于某种原因与球的速度相同。
  • 期望你当前的代码做什么,除了 AI y position 跟踪球的精确位置?

标签: c# unity3d artificial-intelligence pong


【解决方案1】:

并不是说 AI 在球上以相同的速度移动,而是 AI 与球的位置相同。看看这个:

Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);

AI.position.y 始终是球的位置,Ball.position.y。这个 AI 永远不会输。

您必须以与更新播放器类似的方式更新 AI。在 AI.y 中进行增量或减量。只需比较 Ball 的位置和 AI 的位置并更新最后一个。

言外之意:

if (Ball.position.y > Ai.position.y)
{
    Ai.position.y += AiSpeed;
}
else
{
    Ai.position.y -= AiSpeed;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多