- Home /
Incorrect usage of Vector3.Dot?
Hello, I am trying to make a game similar to Rimworld or Prison Architect, so I have a AI controlled sprite character with 4 different sprites for each main direction and I'm currently trying to calculate the target direction via Vector3.Dot and then assign the correct sprite:
 void Update()
 {
         float dotUp = Vector3.Dot(_navMeshAgent.destination - _thisTransform.position, Vector3.forward);
         float dotRight = Vector3.Dot(_navMeshAgent.destination - _thisTransform.position, Vector3.right);
         if(dotUp > 0.8f)
         {
             // walking up
             spriteObject.GetComponent<SpriteRenderer>().sprite = sprite_Back;
         }
         else if(dotUp < -0.8f)
         {
             // walking down
             spriteObject.GetComponent<SpriteRenderer>().sprite = sprite_Front;
         }
         else if(dotRight > 0.1f)
         {
             // walking right
             spriteObject.GetComponent<SpriteRenderer>().sprite = sprite_Right;
         }
         else if(dotRight < -0.1f)
         {
             // walking left
             spriteObject.GetComponent<SpriteRenderer>().sprite = sprite_Left;
         }
  }
The problem is that if the character has to change direction from left to right or vice versa and if he runs a bit up or down diagonally, he ends up looking up or down first before watching right/left. Is there a way that I can use the Vector3.Dot product to make it behave as it should?
Here's a Web Player demo which should clarify what I mean: WebPlayerDemo
Your answer
 
 
             Follow this Question
Related Questions
How do I transform the position of my cube AWAY from the larger cube its attached to? 0 Answers
[2D] Object at X distance to Y direction from point 1 Answer
2D Sprite in a 3D Game 1 Answer
Fanning out projectiles depending on direction 1 Answer
2 Objects Moving in the Same Direction, which is in front and behind? 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                