public override SteeringOutput GetSteering() { // no KS? get it if (this.ownKS == null) { this.ownKS = GetComponent <KinematicState>(); } if (this.target == null) { Debug.Log("Null target in Seek of " + this.gameObject); } return(My_KeepDistanceVersatile.GetSteering(this.ownKS, this.target, this.RequiredDistance, this.DesiredAngle)); }
public static SteeringOutput GetSteering(KinematicState ownKS, GameObject target, string idTag, float RequiredDistance, float DesiredAngle, float RepulsionThreshold) { SteeringOutput rp = LinearRepulsion.GetSteering(ownKS, idTag, RepulsionThreshold); SteeringOutput Kep = My_KeepDistanceVersatile.GetSteering(ownKS, target, RequiredDistance, DesiredAngle); if (rp == null) { rp = new SteeringOutput(); } SteeringOutput result = new SteeringOutput(); result.linearAcceleration = rp.linearAcceleration * 0.6f + Kep.linearAcceleration * 0.4f; if (result.linearAcceleration.magnitude > ownKS.maxAcceleration) { result.linearAcceleration = result.linearAcceleration.normalized * ownKS.maxAcceleration; } return(result); }