- Home /
Cant fall down while moving.
Greets. I try to make my player rotate and move in actual face direction by using rigidbody and GetAxis. I made it, but i got one problem. When I start and move on some ramp, and fall down with pressed W/UpArrow button i dont fall down. Just falling slowly like a leaf. When i fall down from that ramp again and get off my finger from button my player fall down like a brick. Why i cant fall down "like a brick" when i press W/UpArrow button? Any solutions?
void FixedUpdate ()
{
float h = Input.GetAxis ("Horizontal");
float v = Input.GetAxis ("Vertical");
transform.Rotate (0f, h * rotates, 0f);
if (v != 0)
{
swiatlo.GetComponent<Light> ().range = 2;
rb.velocity = transform.forward * v * speed;
}
else
{
swiatlo.GetComponent<Light> ().range = 1;
}
}
rb = rigidbody swiatlo = some gameobject
Answer by Eno-Khaon · Jun 12, 2015 at 07:14 PM
You're strictly defining your velocity over and over again. Any downward momentum is lost every frame, so you're basically only losing height by luck, because the default PhysX calculations for velocity and drag take place immediately AFTER FixedUpdate().
In general, it's a bad idea to modify velocity directly, where Rigidbodies are intended to be moved through AddForce() instead. If you insist on using direct velocity control to move your object, I would recommend something like:
// C#
// Assuming Rigidbody rather than Rigidbody2D
float currentVerticalSpeed = rb.velocity.y;
rb.AddForce(transform.forward * v * speed + new Vector3(0, currentVerticalSpeed, 0), ForceMode.VelocityChange);
It works! Thank you. I can't believe it was so simple and i spend all day thinking about it! I decided move my object by AddForce() not velocity. Thank you again.
Your answer
Follow this Question
Related Questions
Moving this object? 2 Answers
Something on a moving platform 2 Answers
Prevent Player to push Rigidbody 0 Answers
Light bulb moving HELP 1 Answer
movement inside a train problem 1 Answer