- Home /
2D Character defies gravity when moving horizontally
If my 2D character is running down a ramp he takes to the air like a plane while I have the left or right axis engaged. When I release the key he drops to the ground. I tried animate physics checked and unchecked. Here is the control script I am using.
// move player
function FixedUpdate()
{
animator.SetFloat("H_input",h); // send float to animator
animator.SetFloat("V_input",v); // send float to animator
var other = touch.gameObject.GetComponent(touch_ground); //track ground contact
if(h >= 0.1)
{
rigidbody2D.velocity = new Vector2(h * speed, 0); // move on x
tran = rigidbody2D.transform.position; // read to parallax script
vel = rigidbody2D.velocity.x; // read to duster script
}
else if(h <= -0.1)
{
rigidbody2D.velocity = new Vector2(h * speed, 0); // move on x
tran = rigidbody2D.transform.position; // read to parallax script
vel = rigidbody2D.velocity.x; // read to duster script
}
}
Answer by Kiloblargh · Mar 01, 2014 at 09:10 PM
rigidbody2D.velocity = new Vector2 ( h * speed,
0 );
The y velocity is zero because you are setting it to zero every FixedUpdate.
If you want the y velocity to be nonzero, try not setting it to zero.
You can set .x and .y components of a Vector2 separately, like this:
rigidbody2D.velocity.x = h * speed;
rigidbody2D.velocity.y = ... // you'll still have to figure out what to do here
That makes sense. I set the velocity.x as shown and just removed the velocity.y. Works perfectly. Thanks!
Your answer
Follow this Question
Related Questions
How do I limit rigidbody2d velocity? 2 Answers
How to calculate time it takes for angular velocity to reach 0 w/ angular drag being applied? 2 Answers
How to not get velocity by the other objects?,How to not get force by other gameobjects? 0 Answers
How to Maintain Constant Velocity of a Moving GameObject? 0 Answers
Rigidbody2d has zero velocity after simulated set to true 1 Answer