- Home /
Rigid Body Wait
I'm using the below code to add force to my character so he can jump:
rigidbody.AddForce (Vector3.up * 50);
...but I want the "AddForce" to only last for a split second so it simulates my character jumping. I tried adding a "Sleep" command after the "AddForce":
rigidbody.AddForce (Vector3.up * 50);
rigidbody.Sleep();
...but it cancelled out the jump altogether. Maybe it's because I'm using the wrong input? Currently it's set to "GetKey". I tried "GetKeyDown" but that made him not jump at all. See below:
else if (Input.GetKey("space"))
{
state = WalkingState.JumpUp;
Please help if you can. Thank you so much!
velketor
Answer by Bunny83 · Jun 19, 2012 at 09:32 PM
You add a force. A force results in an acceleration based on the mass. Acceleration always happens over time. Just think about a car. When you step on the accelerator the car starts accelerating, but you want reach 100 Km/h immediately ;)
The good thing about games or simulated things is we don't have to stick to the real world. What you need is an instant velocity change that is applied in one frame.
You can use
rigidbody.AddForce(Vector3.up*2, ForceMode.VelocityChange);
or just
rigidbody.velocity += Vector3.up*2;
Which should be the same.
for more information see the ForceMode page and maybe on wikipedia Force or Acceleration. I've tried to find some simpler sites, but couldn't find any...
edit:
As shortly mentioned, you would apply this velocity change only one time per jump, so you should use GetKeyDown instead of GetKey
Btw. rigidbody.Sleep will put the rigidbody in sleep mode which effectively deactivates physics calculations. A rigidbody usually automatically falls asleep when not moved or touched by other rigidbodies. With Sleep you can force it to sleep for at least one frame. Another RB can wake it up again in the next frame.
Your answer
Follow this Question
Related Questions
AddForce to Camera 1 Answer
Having issues with Input.GetKey... 3 Answers
How can I calibrate phone accelerometer? 0 Answers
Car Enter/Exit Script Problems 1 Answer