Make the character face the direction he is moving?

Hey guys, I’m trying to make the character face the direction it is moving but I can’t make it work. I’m working on a 3d game with a diablo-style camera but without depending on the mouse, and I’m using the script from ‘Survival Shooter’ as a reference.

Here’s the movement script:

public float speed = 6f;            // The speed that the player will move at.
	public float rotateSpeed = 2f;
	public Camera playerCam;
	
	Vector3 movement;                   // The vector to store the direction of the player's movement.
	Animator anim;                      // Reference to the animator component.
	Rigidbody playerRigidbody;          // Reference to the player's rigidbody.
	int floorMask;                      // A layer mask so that a ray can be cast just at gameobjects on the floor layer.
	float camRayLength = 100f;          // The length of the ray from the camera into the scene.
	Vector3 rotationY;

	void Awake ()
	{
		// Create a layer mask for the floor layer.
		floorMask = LayerMask.GetMask ("Floor");
		
		// Set up references.
		anim = GetComponent <Animator> ();
		playerRigidbody = GetComponent <Rigidbody> ();
	}
	
	
	void FixedUpdate ()
	{
		// Store the input axes.
		float h = Input.GetAxisRaw ("Horizontal");
		float v = Input.GetAxisRaw ("Vertical");
		
		// Move the player around the scene.
		Move (h, v);
		
		// Turn the player to face the mouse cursor.
		Turning (h, v);
	}
	
	void Move (float h, float v)
	{
		// Move the player to it's current position plus the movement.
		Vector3 targetDirection = new Vector3(h, 0f, v);

		targetDirection = Camera.main.transform.TransformDirection(targetDirection);

		targetDirection = targetDirection.normalized * speed * Time.deltaTime;

		targetDirection.y = 0.0f;

		playerRigidbody.MovePosition (transform.position + targetDirection);
	}
	
	void Turning(float y, float x) 
	{    
		if (y != 0) {
			rotationY.Set (0f, y, 0f);
			//rotationY = rotationY.normalized * (5 * rotateSpeed);
			Quaternion deltaRotation = Quaternion.Euler (rotationY);
			playerRigidbody.MoveRotation (deltaRotation);
		}
	}

However when I move the character it always faces the bottom-left side of the screen. How can I fix that?

Hi,

You can always try with transform.LookAt(Vector3 target);

var rotSpeed = 6;//setting the speed the character will rotate
var moveSpeed = 6;//setting the speed the character will walk
function Update()
{
var v3 = Vector3 (0.0, Input.GetAxis (“Horizontal”), 0.0);
transform.Rotate (v3 * rotSpeed * Time.deltaTime);
v3 = Vector3 (0.0, 0.0, Input.GetAxis(“Vertical”));
transform.Translate (v3 * moveSpeed * Time.deltaTime);
}