Unity3d 敌方Ai单位脚本移动问题

Unity3d 敌方Ai单位脚本移动问题,unity3d,artificial-intelligence,unityscript,Unity3d,Artificial Intelligence,Unityscript,我现在使用的密码会让敌人在远处注意到我,如果我靠近,就跟着我。我现在的问题是它们如何移动。我正在制作一款雷霆风格的游戏,但我不能让敌人呆在地上,像我使用fps控制器一样跳上每个街区。它们似乎向我飘来了尽可能短的距离 代码: var目标:转换//敌人的目标 var移动速度=3//移动速度 var旋转速度=3//转动速度 var范围:浮动=10f; 变量范围2:浮动=10f; var停止:浮动=0; var-myTransform:Transform//该敌人的当前转换数据 函数Awake() {

我现在使用的密码会让敌人在远处注意到我,如果我靠近,就跟着我。我现在的问题是它们如何移动。我正在制作一款雷霆风格的游戏,但我不能让敌人呆在地上,像我使用fps控制器一样跳上每个街区。它们似乎向我飘来了尽可能短的距离

代码:

var目标:转换//敌人的目标
var移动速度=3//移动速度
var旋转速度=3//转动速度
var范围:浮动=10f;
变量范围2:浮动=10f;
var停止:浮动=0;
var-myTransform:Transform//该敌人的当前转换数据
函数Awake()
{
myTransform=transform;//缓存转换数据以便于访问/执行
}
函数Start()
{
target=GameObject.FindWithTag(“1Player”).transform;//以玩家为目标
}
函数更新(){
//旋转看球员
变量距离=向量3.距离(myTransform.position,target.position);
如果(距离=范围){
myTransform.rotation=四元数.Slerp(myTransform.rotation,
四元数。LookRotation(target.position-myTransform.position),rotationSpeed*Time.deltaTime);
}
否则如果(距离停止){
//向玩家移动
myTransform.rotation=四元数.Slerp(myTransform.rotation,
四元数。LookRotation(target.position-myTransform.position),rotationSpeed*Time.deltaTime);
myTransform.position+=myTransform.forward*moveSpeed*Time.deltaTime;
}

否则,如果(距离好,现在您缺少的是:

1.将x轴和z轴上的旋转锁定为零

myTransform.eulerAngles = new Vector3(0f, myTransform.eulerAngles.y, 0);
在末尾加上这一行

2.在AI前面进行短距离光线投射,如果它检测到一些障碍物,停止当前移动并沿y轴移动,如果没有像您在脚本中所写的那样移动障碍物

至于raycasting goes,我不需要在这里写它,您可以在Unity3D文档中找到更多关于它的信息:
本教程适用于州政府:

好的,现在您缺少的是:

1.将x轴和z轴上的旋转锁定为零

myTransform.eulerAngles = new Vector3(0f, myTransform.eulerAngles.y, 0);
在末尾加上这一行

2.在AI前面进行短距离光线投射,如果它检测到一些障碍物,停止当前移动并沿y轴移动,如果没有像您在脚本中所写的那样移动障碍物

至于raycasting goes,我不需要在这里写它,您可以在Unity3D文档中找到更多关于它的信息:
本教程对staters很有用:

这就是您编写代码的目的,让它们直接朝您浮动。您可以尝试设置Navmesh(尽管我不知道它是否能在不断变化的3d环境中正常工作)或者查找/编写您自己的更复杂的AI导航脚本。这就是您编写代码的目的,让它们直接飘向您。您可以尝试设置Navmesh(尽管我不知道它是否能在不断变化的3d环境中正常工作)或者找到/编写自己更复杂的AI导航脚本。对于新手来说,这是一个很好的开始,但我很确定这只会让敌人上坡,而不是下坡。要在雷击机类型的世界中保持强大,我认为可能真的很难。哈哈哈,对不起,我完全忘记了下坡,添加另一个光线投射,在下面拍摄e播放器的方向是向下的,如果它撞到非常近的东西(意味着地面在下面),继续你的脚本,否则会掉下来。也可以尝试使用物理来处理这个问题,并使用力移动它,而不是直接操纵变换,可能会有一些意想不到的(但可能很有趣!)后果。@NotAGenie看了那个教程,但我似乎无法让它工作,现在必须恢复到原始代码,并锁定x轴和z轴。而且,当我再次离开敌人的视野时,他们似乎只是漂浮在水面上?对于新手来说,这看起来是一个不错的开始,但我非常确定这只会让敌人上坡,而不是道琼斯指数nhill。在雷击类型的世界里,要想变得强壮,我想可能真的很难。哈哈哈,对不起,我完全忘记了下坡,添加另一个光线投射,在玩家下方以向下的方向射击,如果它击中了非常近的物体(意味着地面正下方)继续你的脚本,否则会失败。也可以尝试使用物理来处理这个问题,并使用力来移动它,而不是直接操纵变换,这可能会带来一些意想不到的(但可能很有趣!)后果。@NotAGenie看了那个教程,但我似乎无法让它工作,现在必须恢复到原始代码,并锁定x轴和z轴。而且当我再次离开敌人的视图时,它们似乎只是漂浮了?