Я недавно решил написать свой собственный ИИ, чтобы охранник в игре в тюрьму шел вперед и назад. Важно отметить, что он идет прямо влево и повторяет. У меня есть цикл 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());
}
}
Я не знаю единства, но я подозрительно отношусь к методу «пустоты», содержащему «возврат доходности». –
Когда 'i' не менее 10? Move Left вызывается после возвращения, поэтому никогда не вызывался. – Catwood
'StartCoroutine (move());' вызывается каждое обновление? Я бы начал снова и, возможно, вообще не использовал Coroutines. – Catwood