- Home /
Quarternion.LookRotation is only rotating my game object on one axis
I am using Quaternion.LookRotation to change the rotation of a gameobject to a new rotation determined by a ray trace. Here is the script:
 using UnityEngine;
 public class Example : MonoBehaviour
 {
     public float speed = 0.5f;
     private Vector3 targetPos;
     private Vector3 startPos;
     private Vector3 mousePos;
 
 
     public void Start()
     {
         startPos = transform.position;
     }
     public void Update()
     {
 
             mousePos = Input.mousePosition;
             Ray mouseCast = Camera.main.ScreenPointToRay(mousePos);
             Plane groundPlane = new Plane(Vector3.up, Vector3.zero);
             RaycastHit hit;
             float rayLength;
             if (Physics.Raycast(mouseCast, out hit, 9999))
             {
                 Debug.DrawLine(mousePos, targetPos, Color.blue);
                 targetPos = new Vector3(hit.point.x, 0f, hit.point.z);
 
 
                 if (Vector3.Distance(targetPos, transform.position) >= 0.5f)
                 {
 
                 Quaternion rot = Quaternion.LookRotation(targetPos);
                 transform.rotation = Quaternion.Slerp(transform.rotation, rot, speed * Time.deltaTime);
 
                 Debug.Log(targetPos);
             }
         }
 
     }
 }
I'm currently getting this result in my scene: 
This is the desired result however I want the X axis to also change. For example when I use something simple like transform.LookAt(targetPos) I get the desired result however I can't do this function overtime like I can with RotateTowards. This is the result I get using LookAt instead of RotateTowards: 
The latter method is what I ideally want to achieve however I don't want the rotation to happen in just one frame I want the turret to slowly pan over to the new rotation just like the first method. How can I pull both these methods together to fit my needs?
Answer by Namey5 · Sep 25, 2020 at 09:20 AM
Quaternion.LookRotation takes in a view vector, not a position. You'll need to calculate that yourself;
 Quaternion rot = Quaternion.LookRotation(targetPos - transform.position);
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                