自动行为操控Steering(七)—避开障碍物(单体操控)

来源:互联网 发布:windows系统制作mac 编辑:程序博客网 时间:2024/05/18 02:28

图示:


实现:

///<summary>    ///躲避障碍物    ///</summary>    public class AvoidBarrierSteering : Steering    {        //探头-射线        //探头长度        public float probeLenght = 15;        //障碍物标记        public string obstacleTag = "Obstacle";        //最小推力        public float minPushForce = 30;        public Transform probePos;        private RaycastHit hit;        public override Vector3 ComputerFinalForce()        {            //向正前方发出指定长度的射线            if (Physics.Raycast(probePos.position, probePos.forward, out hit, probeLenght) && hit.collider.tag == obstacleTag)            {                //障碍物想碰撞点产生一个推力                var force = hit.point - hit.collider.transform.position;                //如果推力太小,则放大                if (force.magnitude < minPushForce)                    force = force.normalized * minPushForce;                //返回推力                return force;            }            return Vector3.zero;        }    }


阅读全文
1 0
原创粉丝点击