自动行为操控Steering(十一)—分散(群体操控)

xiaoxiao2021-02-28  83

图示:

实现

///<summary> ///分散 ///</summary> public class SteeringForDisperse : Steering { //雷达 private Radar radar; public float companionDistance; public override void Init() { base.Init(); radar = GetComponent<Radar>(); } public override Vector3 ComputerFinalForce() { var arr = radar.GetCompanion(); exceptForce = Vector3.zero; //讲出自己以外的所有同伴的排斥力叠加 for (int i = 0; i < arr.Length; i++) { var dir = transform.position - arr[i].transform.position; if(dir.magnitude<companionDistance&&arr[i]!=gameObject)//如果与同伴距离较近 { exceptForce += dir.normalized; } } exceptForce =exceptForce.normalized * speed; return (exceptForce - vehicle.currentForce) * weight; } }

转载请注明原文地址: https://www.6miu.com/read-40900.html

最新回复(0)