How can I make my character direction change depending on the rotation of my camera?

So, first of all, I am pretty much brand new to programming in c#, and have never done so before. I can’t read just any code though. I have a hard time reading my own code, so please try to make the answer as user friendly as possible. : )

My problem is that I want the direction you are moving the player in to change when you rotate the camera around him. If I hold W down to keep my character moving forward and rotate the camera, he keeps following in the same direction. I cant make him switch directions as I turn the camera. Also, if you put this code into a capsule, you will see that the rotation direction changes after you finish moving, so it looks really bad. The effect is especially worse when you use a custom skin like the one I did. I had a face on him, and he faces the direction he’s moving. but when he stops moving, he rotates back to his original position. Also, my character was a capsule, so if you copy the code exactly, you can see all these problems for yourself :slight_smile:

I am not sure if this is useful, because it could be that the code I need is for the camera, but I don’t have any scripts for the camera, I am using Cinemachine. So, here’s the c# for the character: (P.S: sorry, I couldn’t figure out how to make that using different stuff piece of the code show in the code box, hence all of the slashes… after the slashes end, the code starts


using System.Collections;
using System.Collections.Generic;
using UnityEditor.UIElements;
using UnityEngine;

public class control : MonoBehaviour
public float moveSpeed;
public float jumpForce;
public CharacterController controller;

private Vector3 moveDirection;
public float gravityScale;

void Start()

  Cursor.visible = false;

    controller = GetComponent<CharacterController>();

void Update()

    if (controller.isGrounded)
      moveDirection = new Vector3(Input.GetAxis("Horizontal") * moveSpeed, 0f, Input.GetAxis("Vertical") * moveSpeed);

      transform.rotation = Quaternion.LookRotation(moveDirection);
      transform.rotation *= Quaternion.Euler(0f,90f,0f);
        if (Input.GetButtonDown("Jump"))

            moveDirection.y = jumpForce;

    else {

   moveDirection.x = Input.GetAxis("Horizontal") * moveSpeed/2;

   moveDirection.z = Input.GetAxis("Vertical") * moveSpeed/2;

    moveDirection.y = moveDirection.y + (Physics.gravity.y * gravityScale * Time.deltaTime);
    controller.Move(moveDirection * Time.deltaTime);



where do I add this? to a camera script?

sorry, feel like that is a lame question

just make another camera rotate that camera and bomm