- Home /
Problem with moving player relative to camera
Hi, I'm trying to achieve movement so that player can move up, down, right and left, but the character only rotates to match the sideways movement. (Similar to old beat-em up games like Battletoads and Double Dragon). The problem I have is when pressing the key A (moving left) the character moves to right instead of left. Every other direction works fine.
I have it setup like this: the character has a character controller inside it. Camera is a child of the player so it follows around. I'm processing input with a modified code based on this : http://unity3d.com/support/documentation/ScriptReference/CharacterController.Move.html and here's my code:
void Update()
{
CharacterController controller = GetComponent<CharacterController>();
if (controller.isGrounded)
{
moveDirection = new Vector3(Input.GetAxis("Vertical"), 0, -Input.GetAxis("Horizontal"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if(Input.GetKey("a")){
transform.rotation = Quaternion.Euler(0, 270, 0);
}
if(Input.GetKey("d")){
transform.rotation = Quaternion.Euler(0, 90, 0);
}
}
controller.Move(moveDirection * Time.deltaTime);
Debug.Log(moveDirection);
}
Rotating the player obviously causes the problem here, as it flips the local axis around, but if I have understood right, using transform.TransformDirection should move the player in world space(?)... I have been stuck with this problem for a while now so any help is greatly appreciated!
Answer by AprendaGames · Feb 12, 2012 at 11:23 PM
You could make the graphic a child element. Then when you push a, just rotate the child (just the graphic) and move the character separately.
myGraphicGameObject.transform.rotation = Quaternion.Euler(0, 270, 0);
Wow, thanks a lot. Of course it had to be something this simple... I actually thought of this but never really tried (stupid me :D) because I thought it would cause some kind of problems. But great, now I can move on with this. I'll let you know if it causes any problems.
Your answer
![](https://koobas.hobune.stream/wayback/20220613064015im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Setting z value of trans.pos relative to rotation 1 Answer
Relative position? 1 Answer
Movement relative to Camera and XZ Plane 1 Answer
Character Controller won't move forward 0 Answers