Unity人工智能学习—确定性AI算法之反追踪算法

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/zhangxiao13627093203/article/details/47667995

CSDN个人博客地址,凯尔八阿哥栏http://blog.csdn.net/zhangxiao13627093203,转载请注明出处

没错,不要觉得疑惑!所谓有生必有死,物极必反,下一个AI技术就是让游戏中的生物能避开你。其实这一部分就比较简单了,因为你只需要将我前面的追踪算法里面的代码改成刚好相反的行为就OK啦。在Unity中的C#代码如下:

  //先判断距离
        Vector2 vecDis = this.transform.position - target.transform.position;
        if(PointDistance_2D(vecDis.x,vecDis.y)<MINDodgeDistance)
        {
            //x方向的闪避
            if(target.transform.position.x<this.transform.position.x)
            {
                this.transform.position += new Vector3(dodge_x, 0, 0) * DodgeSpeed;
            }
            else if(target.transform.position.x>this.target.transform.position.x)
            {
                this.transform.position -= new Vector3(dodge_x, 0, 0) * DodgeSpeed;
            }
            //y方向的闪避
            if(target.transform.position.y<this.transform.position.y)
            {
                this.transform.position += new Vector3(0, dodge_y, 0) * DodgeSpeed;
            }
            else if(target.transform.position.y>this.transform.position.y)
            {
                this.transform.position += new Vector3(0, dodge_y, 0) * DodgeSpeed;
            }
        }
         //让它移动到屏幕的中间
        else
        {
            //x方向的移动
            if(Screen.width/2>this.transform.position.x)
            {
                this.transform.position += new Vector3(freeMove_x, 0, 0) * freeMoveSpeed;
            }
            else if(Screen.width/2<this.transform.position.x)
            {
                this.transform.position -= new Vector3(freeMove_x, 0, 0) * freeMoveSpeed;
            }
            //y方向上的移动
            if(Screen.height/2>this.transform.position.y)
            {
                this.transform.position += new Vector3(0, freeMove_y, 0) * freeMoveSpeed;
            }
            else if(Screen.height/2<this.transform.position.y)
            {
                this.transform.position -= new Vector3(0, freeMove_y, 0) * freeMoveSpeed;
            }
        }
注意:我的代码里面并没有处理==的条件,因为我觉得这样的情况下移动会显得很突兀,所以我什么都不错默认就休眠了。如果你愿意可以做你自己喜欢的处理。
效果图如图所示:



阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页