Скорость передвижения ИИ Unity Pong

Я пытался создать ИИ для игры в Понг на Unity C #, но проблема в том, что ИИ, кажется, движется с той же скоростью, что и мяч. Кажется, я не могу понять, как заставить ИИ двигаться с заданной скоростью или с той же скоростью, что и игрок.

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);
    }
}
}

person Ezurek    schedule 30.05.2014    source источник
comment
В какой момент вы заставляете его реагировать на поведение игрока?   -  person Rowland Shaw    schedule 30.05.2014
comment
Он реагирует на движение мяча, но почему-то с той же скоростью, что и мяч.   -  person Ezurek    schedule 30.05.2014
comment
Что вы ожидаете от вашего текущего кода, кроме как AI y position tracking ball y position?   -  person hyde    schedule 30.05.2014


Ответы (1)


Дело не в том, что ИИ движется с мячом с той же скоростью, а в том, что ИИ находится в том же положении, что и мяч. Посмотри на это:

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;
}
person DSquare    schedule 30.05.2014