Skip to content

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