Steering Arrive (seek with slowdown)
Steering: Arrive (seek with slowdown)¶
function arrive(entity, target, maxSpeed, maxForce, slowRadius):
toTarget = target.position - entity.position
distance = length(toTarget)
if distance < slowRadius:
desiredSpeed = maxSpeed * (distance / slowRadius)
else:
desiredSpeed = maxSpeed
desired = normalize(toTarget) * desiredSpeed
steering = desired - entity.velocity
steering = clampMagnitude(steering, maxForce)
return steering