public override Vector2 CalculateSteering(MovingEntity vehicle) { Vector2 steeringForce = new Vector2(); if (seek) { steeringForce += SteeringBehaviors.Seek(vehicle); } if (flee) { steeringForce += SteeringBehaviors.Flee(vehicle); } if (arrive) { steeringForce += SteeringBehaviors.Arrive(vehicle, SteeringBehaviors.Deceleration.normal); } if (separation) { steeringForce += SteeringBehaviors.Separation(vehicle) * 3; } if (pursuit) { steeringForce += SteeringBehaviors.Pursuit(vehicle); } return(steeringForce); }
public override Vector2 CalculateSteering(MovingEntity vehicle) { Vector2 steeringForce = Vector2.zero; Vector2 force; if (separation) { force = SteeringBehaviors.Separation(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force) && force != Vector2.zero) { return(steeringForce); } } if (seek) { force = SteeringBehaviors.Seek(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } if (flee) { force = SteeringBehaviors.Flee(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } if (arrive) { force = SteeringBehaviors.Arrive(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } if (pursuit) { force = SteeringBehaviors.Pursuit(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } return(steeringForce); }