- Home /
AddForce() on RigidBody2D does not work when called in certain circumstances
Hey everyone. I've got a bit of a head-scratcher here. I'm making a game where rockets collide with walls and explode, and that should fling the player around.
I'm attempting to add a force to a RigidBody2D when a rocket collides with something, but the AddForce() function only works in very specific circumstances.
Here's the important code for my Rocket class:
void OnCollisionEnter2D (Collision2D col)
{
Vector2 explosiveForce = new Vector2(0, -1000);
m_dude.rigidbody2D.AddForce(explosiveForce);
Destroy(this.gameObject);
}
m_dude
is a reference to the player character, obviously. Now this does absolutely nothing, for some reason. However, if I for instance call the AddForce() function from inside the Player class, it works fine!
To test this, I did a quick proxy function in the Player class:
public void addForceProxy (Vector2 force)
{
rigidbody2D.AddForce(force);
}
Again, calling this function from inside the Player class works fine, but calling it from the OnCollisionEnter2D function does absolutely nothing! It's absolutely infuriating and perplexing so I'm dying for some insight into this.
Some notes:
Nothing is kinematic
Everything has a gravity scale of 1
Nothing is fixed
Nothing is parented
Everything has rigidbodies and colliders
Answer by cowtrix · Apr 03, 2014 at 09:56 AM
Solved it myself, stupid me. Wasn't setting the reference to the player from the rockets correctly.
Your answer
Follow this Question
Related Questions
Need help on my script to calculate gravity for a mass 1 Answer
the player is flying off the ramp (collider) 1 Answer
Drag and throw Rigidbody2d (Angry Birds style) 0 Answers
Unity 2D gravity 1 Answer
2D walls affect my jump height 1 Answer