- Home /
Platformer movement using Unity physics
I am trying to create a game where the player is constantly moving to the right, but is also able to jump. I am able to get the jumping working, or I am able to get the horizontal movement working, but not both. The horizontal movement is constant, and does not really need to be subject to physics, but the velocity from jumping does need to be subject to physics.
//This allows me to have the player constantly move right
rigidbody2D.velocity = new Vector3(playerSpeed, 0);
//This has the player jump
rigidbody2D.AddForce(new Vector3(0, jumpForce));
The problem is that every time FixedUpdate() is called, the force is set back to 0 because of the first statement. Is there any way to combine these two, or use something else to fix this?
Answer by DoTA_KAMIKADzE · May 25, 2015 at 10:08 PM
You should retain the y velocity value like that:
rigidbody2D.velocity = new Vector3(playerSpeed, rigidbody2D.velocity.y);
Also I'd recommend instead of constantly adding forces do it on your condition, e.g.:
if (jumpForce > 0) rigidbody2D.AddForce(new Vector3(0, jumpForce));
//or
if (jumpKeyIsTrue) rigidbody2D.AddForce(new Vector3(0, jumpForce));
//or...
Your answer
Follow this Question
Related Questions
2D movement that allows 2 or more forces.,2D movement that allows to have 2 different forces. 0 Answers
character controller sinks into platform while using raycast to detect collision 0 Answers
Make Character move along a curved path at a constant speed 0 Answers
How can I add an impulse force on top of my walking force? 1 Answer
Lift issues in Unity 1 Answer