图示:
实现
///<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;
}
}