2015-10-17 6 views
1

Я недавно решил написать свой собственный ИИ, чтобы охранник в игре в тюрьму шел вперед и назад. Важно отметить, что он идет прямо влево и повторяет. У меня есть цикл while, который устанавливает его координаты и переключатели между общедоступными функциями пустоты, но он, похоже, не работает: охранник просто ходит в одном направлении навсегда.Enemy AI не работает

Есть и другие ошибки, поэтому мне нужен эксперт, который может это исправить, если вы получите то, что я пытаюсь сделать. Вот код:

using UnityEngine; 
using System.Collections; 

public class enemyAI : MonoBehaviour 
{ 

private float rightDistance; 
private float leftDistance; 

public void moveRight(float rightDistance) 
{ 
    rightDistance = 0.02f; 
    transform.position = new Vector3(transform.position.x + rightDistance, transform.position.y, transform.position.z); 
    yield return new WaitForSeconds(1); 
} 

public void moveLeft(float leftDistance) 
{ 
    leftDistance = 0.02f; 
    transform.position = new Vector3(transform.position.x - leftDistance, transform.position.y, transform.position.z); 
    yield return new WaitForSeconds(1); 
} 



public IEnumerator move() 
{ 
    int i = 0; 
    while (i < 10) 
    { 
     moveRight(); 
     yield return new WaitForSeconds(1); 
     moveLeft(); 
    } 
} 


// Update is called once per frame 
void Update() 
{ 
    StartCoroutine(move()); 
} 

} 
+1

Я не знаю единства, но я подозрительно отношусь к методу «пустоты», содержащему «возврат доходности». –

+0

Когда 'i' не менее 10? Move Left вызывается после возвращения, поэтому никогда не вызывался. – Catwood

+0

'StartCoroutine (move());' вызывается каждое обновление? Я бы начал снова и, возможно, вообще не использовал Coroutines. – Catwood

ответ

0

Как вы зовете: move()? Он должен быть вызван с StartCoroutine(move());, чтобы перечислить Unity's WaitForSeconds. См. this question для аналогичной проблемы.

while (i < 10) 
{ 
    moveRight(); 
    yield return new WaitForSeconds(1); 
    moveLeft(); 
} 

Кроме того, вы забыли приступить к увеличению i?