Rotating game object to movement direction

Hello, similar questions are asked but I still can not resolve mine. I am trying to rotate my game object to a mouse position but I think i have something wrong. I want to rotate my object only at Y-axis.

public class Drag : MonoBehaviour
{

    private Vector3 offset;
    private Vector3 movementDirection;
    public Vector3 mousePosition;
    public Camera cam;
    
    void Update()
    {
        //smoothLookTowardDirectionOfMovement();
        if (Input.GetMouseButton(0))
        {
            Plane plane = new Plane(Vector3.up, new Vector3(0, 18.4f, 0));
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            float distance;
            if (plane.Raycast(ray, out distance))
            {
                transform.position = ray.GetPoint(distance);
            }
            mousePosition = cam.ScreenToWorldPoint(Input.mousePosition);
            calcuateNewMovementVector();
            gameObject.transform.rotation = Quaternion.LookRotation(movementDirection);
        }

    }
    void calcuateNewMovementVector()
    {
        movementDirection = new Vector3(0, mousePosition.y,0).normalized;

    }

Just pointing out, your movementDirection is always going to be the y unit vector. (0,1,0). Because you are only setting the mousePosition in the y component, when you normalize itit realizes there is only one component(y) that is utilized and sets it to zero.


You might want to use Mathf.Atan2(y, x)

here is the pseudo-code

pos = mousePos - position;
float direction = Mathf.Rad2Deg * Mathf.Atan2(pos.y, pos.x);

You may have to play around with the signs of the x and y when passing into the Atan2 function. You also may need to add or subtract 90 degrees. Just keep moving numbers around until you find the correct one.