- Home /
 
Couping Navmesh and animations
I am tring to understand unity documentation code but I am stuck at a dot Product link : https://docs.unity3d.com/Manual/nav-CouplingAnimationAndNavigation.html using UnityEngine; using UnityEngine.AI;
 [RequireComponent (typeof (NavMeshAgent))]
 [RequireComponent (typeof (Animator))]
 public class LocomotionSimpleAgent : MonoBehaviour {
     Animator anim;
     NavMeshAgent agent;
     Vector2 smoothDeltaPosition = Vector2.zero;
     Vector2 velocity = Vector2.zero;
 
     void Start ()
     {
         anim = GetComponent<Animator> ();
         agent = GetComponent<NavMeshAgent> ();
         // Don’t update position automatically
         agent.updatePosition = false;
     }
     
     void Update ()
     {
         Vector3 worldDeltaPosition = agent.nextPosition - transform.position;
 
         // Map 'worldDeltaPosition' to local space
         float dx = Vector3.Dot (transform.right, worldDeltaPosition);
         float dy = Vector3.Dot (transform.forward, worldDeltaPosition);
         Vector2 deltaPosition = new Vector2 (dx, dy);
 
         // Low-pass filter the deltaMove
         float smooth = Mathf.Min(1.0f, Time.deltaTime/0.15f);
         smoothDeltaPosition = Vector2.Lerp (smoothDeltaPosition, deltaPosition, smooth);
 
         // Update velocity if time advances
         if (Time.deltaTime > 1e-5f)
             velocity = smoothDeltaPosition / Time.deltaTime;
 
         bool shouldMove = velocity.magnitude > 0.5f && agent.remainingDistance > agent.radius;
 
         // Update animation parameters
         anim.SetBool("move", shouldMove);
         anim.SetFloat ("velx", velocity.x);
         anim.SetFloat ("vely", velocity.y);
 
         GetComponent<LookAt>().lookAtTargetPosition = agent.steeringTarget + transform.forward;
     }
 
     void OnAnimatorMove ()
     {
         // Update position to agent position
         transform.position = agent.nextPosition;
     }
 }
 
               this three lines I can't grasp:
   float dx = Vector3.Dot (transform.right, worldDeltaPosition);
   float dy = Vector3.Dot (transform.forward, worldDeltaPosition);
   Vector2 deltaPosition = new Vector2 (dx, dy);
 
               Why they are using Dot product and for what purpose?
               Comment
              
 
               
              Your answer
 
             Follow this Question
Related Questions
Multiply quaternion by vector3... how is it done (mathematically)? 1 Answer
Inversing fixed delta time 1 Answer
Code based 3d multiple cube instantiation 1 Answer
Help with orbit path predictor 2 Answers
Lerp & jumping with sin/cos 1 Answer