Example #1
0
    public static void UpdateSteering(Steering behavior, Bird bird, float dt)
    {
        if (behavior == null)
            return;

        var steering = behavior.GetSteering();

        if (!steering.IsNoSteering())
        {
            // update position
            bird.velocity += steering.linearVel * dt;

            bird.velocity = Vector3.ClampMagnitude(bird.velocity, bird.maxSpeed);

            if (bird.maxSpeed != 0f)
            {
                var rotation = Quaternion.LookRotation(bird.velocity);
                bird.transform.rotation = Quaternion.Slerp(bird.transform.rotation, rotation, 1f);
            }
        }
        else
            bird.GetComponent<Rigidbody>().velocity = Vector3.zero;
    }