- Home /
How do I rotate my character to face straight depending on which wasd key i press?
Hey there, I'm trying to figure out movement for my rpg character, kinda like in fifa games, say your character is facing north and you click the d button, the character rotates to face east and is facing "forwards", and if you pressed a key, he would do an animation to turn to face west and be facing "forwards" relative to that direction.
Here's my character controller code so far.
using System.Collections;
using System.Collections.Generic;
using System.Security.AccessControl;
using UnityEngine;
public class BitchMovement : MonoBehaviour
{
[SerializeField]
public float _speed = 5;
[SerializeField]
private float _speedTwo;
public KeyCode rotateLeft, rotateRight;
[SerializeField]
public float rotateSpeed;
Animator animator;
int isWalkingHash;
int isRunningHash;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
isWalkingHash = Animator.StringToHash("isWalking");
isRunningHash = Animator.StringToHash("isRunning");
CharacterController controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
bool runningPressed = Input.GetKey("left shift");
bool forwardPressed = Input.GetKey("w");
bool isWalking = animator.GetBool(isWalkingHash);
bool isRunning = animator.GetBool(isRunningHash);
//If player presses w key
if (!isWalking && forwardPressed)
{
//sets isWalking boolean to true
animator.SetBool(isWalkingHash, true);
}
//if the player is not pressing w key
if (isWalking && !forwardPressed)
{
// sets isWalking boolean to false
animator.SetBool(isWalkingHash, false);
}
//if player is walking and not running and presses left shift
if (!isRunning && (forwardPressed && runningPressed))
{
//sets the boolean of is running to true
animator.SetBool(isRunningHash, true);
}
//if player is running and stops running or walking
if (isRunning && (!forwardPressed || !runningPressed))
{
//sets the boolean of is running to false
animator.SetBool(isRunningHash, false);
}
if (Input.GetKey(rotateLeft))
{
}
//float horizontalInput = Input.GetAxis("Horizontal");
//transform.Translate(new Vector3(horizontalInput, 0, 0) * _speed * Time.deltaTime);
float verticalInput = Input.GetAxis("Vertical");
transform.Translate(new Vector3(0, 0, verticalInput) * _speed * Time.deltaTime);
float horizontalInput = Input.GetAxis("Horizontal");
transform.Rotate(new Vector3(0, horizontalInput, 0) * rotateSpeed * Time.deltaTime);
}
}
But right now I only managed to make my character rotate and not instantly snap to north/east/south/west and face forwards. Appreciate the help!
Your answer
![](https://koobas.hobune.stream/wayback/20220613014832im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Rigidbody character controller issues 0 Answers
accessing charactercontroller 1 Answer
Mounting a player character to a mount 0 Answers
Make a character rotate around a point. 1 Answer
How can i make my simple character controller rotate? 0 Answers