public override Vector3 Calculate(Steering instance, SteeringSettings settings) { pr = settings.prPursuit; weight = settings.weightPursuit; if (Random.Range(0.0f, 1.0f) > pr) { if (instance.TargetTrans != null) { return(Calculate(instance, instance.GetUsefulTarget(instance.TargetTrans.position)) * weight / pr); } else { return(Calculate(instance, instance.GetUsefulTarget(instance.TargetPos)) * weight / pr); } } return(Vector3.zero); }
public override Vector3 Calculate(Steering instance, SteeringSettings settings) { pr = settings.prArrive; weight = settings.weightArrive; deceleration = settings.deceleration; if (Random.Range(0.0f, 1.0f) > pr) { if (instance.TargetTrans != null) { return(Calculate(instance, instance.GetUsefulTarget(instance.TargetTrans.position), deceleration, decelerationRate) * weight / pr); } else { return(Calculate(instance, instance.GetUsefulTarget(instance.TargetPos), deceleration, decelerationRate) * weight / pr); } } return(Vector3.zero); }
public static Vector3 Calculate(Steering instance) { Vector3 target = new Vector3(); target += new Vector3(Random.Range(-1f, 1f) * jitter, Random.Range(-1f, 1f) * jitter, Random.Range(-1f, 1f) * jitter); target = instance.GetUsefulTarget(target); target.Normalize(); target *= radius; target += new Vector3(0, 0, distance); Vector3 worldTarget = instance.Owner.transform.TransformPoint(target); return(worldTarget - instance.Owner.transform.position); }