- Home /
Simulate gravity on rigidbody
Hi, I want to simulate gravity for a rigidbody, I have 2 separate objects, each one have the same mass, one is set to "use gravity" (rigidbody) and the other isn't. On the object that doesn't use gravity, I made a script that is basically like this:
rigidbody.AddForce(new Vector3 (0f, (gravity * rigidbody.mass) * Time.deltaTime, 0f));
being gravity a float with the value of 9.81. The thing is, the object that uses gravity is falling a lot faster than the one with the script, what am I doing wrong? maybe I shouldn't use addForce? but if I set it's velocity instead it may not collide properly, how can I avoid those issues?
Answer by robertbu · Dec 18, 2013 at 04:57 PM
Try this:
#pragma strict
function FixedUpdate() {
rigidbody.AddForce(Physics.gravity);
}
You can also do this so you don't have to worry about mass:
#pragma strict
function FixedUpdate() {
rigidbody.AddForce(Physics.gravity, ForceMode.Acceleration);
}
The falling velocity is still kinda different, anyway, I really don't want to use Physiscs.gravity, I want to use just float to use it as force
Physics.gravity is just Vector3(0.0, -9.81, 0.0), so you can do:
rigidbody.AddForce(Vector3(0.0, -9.81, 0.0), Force$$anonymous$$ode.Acceleration);
And I just ran a test of two spheres of the same size and mass, one with built-in gravity and one with this script. They fell at exactly the same rate.
Your answer
Follow this Question
Related Questions
What's the Rigidbody's gravity unit? 1 Answer
Gravitational Object Creation for 3D Game 1 Answer
How to not get velocity by the other objects?,How to not get force by other gameobjects? 0 Answers
Box2D force on object? 0 Answers
Gravity doesn't work 2 Answers