- Home /
Make a player only move in one direction
Hello!
I am trying to create a game where the player can only move in the direction it is facing, but the following code allows the player to move in all 4 directions. (This is for a 3D project)
Any help would be appreciated! Thanks!
public class PlayerController : MonoBehaviour {
 public float speed;
 private Rigidbody rb;
 void Start() {
     rb = GetComponent<Rigidbody>();
 }
 void FixedUpdate() {
     float moveHorizontal = Input.GetAxis("Horizontal");
     float moveVertical = Input.GetAxis("Vertical");
     Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
     rb.AddForce(movement * speed);
 }
}
Answer by ScaniX · Dec 22, 2017 at 10:50 AM
From looking at your code, you seem to move the player independent of the direction you are looking in.
 public class PlayerController : MonoBehaviour {
      public float speed;
      private Rigidbody rb;
      private Transform tfCam;
 
      void Start() {
          rb = GetComponent<Rigidbody>();
          tfCam = Camera.main.transform; // get transform of main camera (the player's view)
      }
   
      void FixedUpdate() {
          float moveHorizontal = Input.GetAxis("Horizontal");
          float moveVertical = Input.GetAxis("Vertical");
          if (moveVertical > 0) { // only forward, not backwards (was this your intention?)
             Vector3 direction = new Vector3(tfCam.forward * moveVertical, 0, tfCam.right * moveHorizontal);
             rb.AddForce(direction * speed);
          }
      }
 } 
 
This is untested code and a simplification of what a final movement script would probably do, but I think something like this would work.
Your answer
 
 
             Follow this Question
Related Questions
(RigidBody) Velocity at an Angle 0 Answers
Why is my character controller moving in unrelated directions? 1 Answer
Player getting stuck in ground (3D) player has Rigidbody, and Box Collider, world is Mesh Colliders 0 Answers
Player not affected by moving platform? 0 Answers
Moving a non-player object in a random direction which bounces off other objects. 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                