C# 敌人AI不工作

C# 敌人AI不工作,c#,unity3d,artificial-intelligence,unity5,C#,Unity3d,Artificial Intelligence,Unity5,我最近决定写我自己的人工智能,让一名狱警在监狱游戏中来回走动。重要的是要注意,他先向右走,然后向左走,然后重复。我有一个while循环,可以设置他的坐标并在公共void函数之间切换,但它似乎不起作用:守卫永远只朝一个方向走 也有其他错误,所以我需要一个专家谁可以修复这一点,如果你得到我试图做的。代码如下: using UnityEngine; using System.Collections; public class enemyAI : MonoBehaviour { private f

我最近决定写我自己的人工智能,让一名狱警在监狱游戏中来回走动。重要的是要注意,他先向右走,然后向左走,然后重复。我有一个while循环,可以设置他的坐标并在公共void函数之间切换,但它似乎不起作用:守卫永远只朝一个方向走

也有其他错误,所以我需要一个专家谁可以修复这一点,如果你得到我试图做的。代码如下:

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

}
使用UnityEngine;
使用系统集合;
公共类enemyAI:单一行为
{
私人浮动距离;
私人浮动距离;
公共无效移动右(浮动右距离)
{
右距离=0.02f;
transform.position=新矢量3(transform.position.x+右距离,transform.position.y,transform.position.z);
返回新的WaitForSeconds(1);
}
公共空间向左移动(浮动向左距离)
{
左距=0.02f;
transform.position=新矢量3(transform.position.x-左距离,transform.position.y,transform.position.z);
返回新的WaitForSeconds(1);
}
公共IEnumerator移动()
{
int i=0;
而(i<10)
{
moveRight();
返回新的WaitForSeconds(1);
左移();
}
}
//每帧调用一次更新
无效更新()
{
start例程(move());
}
}
如何调用
move()
?需要使用
start例程(move())调用它
枚举Unity的
WaitForSeconds
。有关类似问题,请参阅

while (i < 10)
{
    moveRight();
    yield return new WaitForSeconds(1);
    moveLeft();
}
while(i<10)
{
moveRight();
返回新的WaitForSeconds(1);
左移();
}
另外,您是否忘记递增
i

如何调用
move()
?需要使用
start例程(move())调用它
枚举Unity的
WaitForSeconds
。有关类似问题,请参阅

while (i < 10)
{
    moveRight();
    yield return new WaitForSeconds(1);
    moveLeft();
}
while(i<10)
{
moveRight();
返回新的WaitForSeconds(1);
左移();
}

此外,您是否忘记递增
i

我不知道Unity,但我怀疑包含“收益率回报”的“无效”方法。何时
i
不小于10?返回后会调用Move Left,因此从未调用。
start例程(Move())吗?我会重新开始,可能根本不使用协同程序。一般来说,当我制作一个AI脚本时,我会将它分为-1.检查条件(它在哪里,它能感觉到什么),2.采取什么行动(它应该向左移动、停止、向右移动、开火吗?)我不知道Unity,但我怀疑包含“收益回报”的“void”方法.何时
i
不小于10?返回后会调用Move Left,因此从未调用。
start例程(Move())吗?我会重新开始,可能根本不使用协同程序。通常,当我制作一个AI脚本时,我会将它分为-1.检查条件(它在哪里,它能感觉到什么),2.采取什么行动(它会向左移动、停止、向右移动、开火吗?)