- Home /
Question by
menesekinci · Aug 26, 2021 at 04:39 PM ·
rotationmovement3d
When my player stop to run, is rotation reset.
When my player stop to run, is rotation reset. Sample:
public float speed = 5f;
Vector3 forward;
Vector3 right;
void Start()
{
forward = Camera.main.transform.forward;
forward.y = 0;
forward = Vector3.Normalize(forward);
right = Quaternion.Euler(new Vector3(0f, 90f, 0f)) * forward;
}
private void MoveController()
{
Vector3 direction = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
Vector3 rightMovement = right * speed * Time.deltaTime * Input.GetAxis("Horizontal");
Vector3 upMovement = forward * speed * Time.deltaTime * Input.GetAxis("Vertical");
Vector3 heading = Vector3.Normalize(rightMovement + upMovement);
transform.forward += heading;
transform.position += rightMovement;
transform.position += upMovement;
}
Comment
Answer by Robotinker · Aug 26, 2021 at 06:14 PM
Only execute line 19 if (rightMovement + upMovement).magnitude > 0. Otherwise you'll still be adjusting heading even if rightMovement and upMovement are both 0.
Your answer
![](https://koobas.hobune.stream/wayback/20220613041946im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
3D Heat Seeking Missile (C#) - Odd problem 1 Answer
How to synchronize both movement and rotation? 1 Answer
Click to move 1 Answer
Stop player rotation when there is no movement 1 Answer
Rotate towards movement direction 1 Answer