- Home /
Look rotation viewing is zero warning
Sorry for the noob question, and also for my bad english.
I am following a tutorial on how to get started with the basics of unity. I'm at a part of it that is teaching me how to rotate a player according to the direction it is moving, so that it will face said direction. Since the destination of said movement is set to a Vector 3 variable called "currentMovement" , I thought that using "transform.rotation = Quaternion.LookRotation(currentMovement)" would work. It indeed works when the player is moving, but when the player just stays put Unity gives a warning saying "Look rotation viewing is zero" and then the player object starts to glitch (and by glitch I mean starting to constantly alternate between random rotations or something like that). The tutorial said/told that the fix to this would be to use "Quaternion.LookRotation(new Vector3(currentMovement.x, 0, currentMovement.z))" instead of the code I used, since currentMovement.y is set to 0 when the player is on the ground (and said player WAS standing on the groun), and apparentely you can't give a zero value to a look rotation (as indicated by the warning). **But the solution proposed also sets the y axis to 0, so why did it work?**It doesn't make sense to me, since it seens that one value that would end up being set to 0 (currentMovement.y) was replaced by the integer 0 itself...
I'm going to paste my code below:
 public float movSpeed = 5;
 public float rotateSpeed = 90;
 public float jumpSpeed = 10;
 public float gravity = 15;
 public float moveSpeedSmooth = 0.3f;
 public float rotateSpeedSmooth = 0.3f;
 CharacterController controller;
 Vector3 currentMovement;
 Vector3 currentMovementV;
 Transform cameraTransform;
 float verticalSpeed;
 public float currentForwardSpeed;
 public float forwardSpeedV;
 public float targetRotation;
 public float currentRotation;
 public float rotationV;
 void Start()
 {
     controller = GetComponent<CharacterController>();
     cameraTransform = Camera.main.transform;
 }
 void Update()
 {
     Vector3 movementInput = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
     if (movementInput.magnitude > 1)
     {
         movementInput.Normalize();
     }
     Vector3 targetMovement = movementInput;
     targetMovement = cameraTransform.TransformDirection(targetMovement);
     targetMovement.y = 0;
     targetMovement *= movementInput.magnitude;
     currentMovement = Vector3.SmoothDamp(currentMovement, targetMovement * movSpeed, ref currentMovementV, moveSpeedSmooth);
     transform.rotation = Quaternion.LookRotation(new Vector3(currentMovement.x, 0, currentMovement.z));
     if (!controller.isGrounded)
     {
         verticalSpeed -= gravity * Time.deltaTime;
     }
     
     else
     {
         verticalSpeed = 0;
     }
     if (controller.isGrounded && Input.GetButtonDown("Jump"))
     {
         verticalSpeed = jumpSpeed;
     }
     
     currentMovement.y = verticalSpeed;
     
     controller.Move(currentMovement * movSpeed * Time.deltaTime);
 }
Your answer
 
 
             Follow this Question
Related Questions
How to walk in the direction the player is looking at in the Vive headset 1 Answer
Character rotating to previous rotation 1 Answer
Issues with camera lookrotation - please help 1 Answer
Character rotation and move to mouse click point with speed 0 Answers
FPS Controller rotation,FPS Controller rotation problem 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                