- Home /
OnCollisionExit2D gets called when kinematic is turned on, is that right?
Main question: OnCollisionExit2D gets called when kinematic is turned on, is that right?
I have a ground and a player.
I am trying to make the player kinematic while it is grounded, but otherwise not.
I have :
void OnCollisionEnter2D(Collision2D col){
if col is ground
playerrigidbody2d.isKinematic = true;
}
void OnCollisionExit2D(Collision2D col){
if col is ground
playerrigidbody2d.isKinematic = false;
}
The player reaches the ground fine and gets changed to Kinematic. But then OnCollisionExit2D gets called immediately, changing it back to dynamic. Then OnCollisionEnter2D gets called again, and this loop keeps going at however often these gets called.
Is there a reason why changing it to kinematic causes it to call OnCollisionExit2D? I have tried lowering the position of the player in OnCollisionEnter2D so it directly overlaps with the ground but that doesn't fix anything, so that's prob not the problem.
I know kinematic is so that "Forces, collisions or joints" will not affect the player anymore, but that doesn't mean OnCollisionExit2D should get called right?
Thanks.
Answer by meat5000 · Apr 09, 2018 at 10:20 AM
This is not strictly true; This is not solely a case of it being Kinematic or not. A collision requires 1 non-kinematic rigidbody and colliders. As long as those conditions are met a collision can occur. A Kinematic object remains still without script but things will still bounce off it... its Transform is no longer determined by physics, is all. The rigidbody and collider still exist!
As your ground object doesnt have a non-K Rigidbody the base condition for collision is not met and the collision exits. The behaviour is correct and working as expected.
Answer by donutLaserDev · Apr 09, 2018 at 09:13 AM
Well, when you are colliding and then set rigidbody to kinematic, you make it so that rigidbody doesn't collide with anything anymore. You basically exit the collision, that's why OnCollisionExit2D gets called.
Your answer
Follow this Question
Related Questions
Linecast Detecting Initial Collision Correctly, Need it to Stay Until Line Doesn't Intersect 1 Answer
How do I predict an objects position that might collide with something?? 0 Answers
How to optimize a lot of colliders? 1 Answer
OnCollisionEnter2D is not working when an object tagged "Enemy" is not present in the game. 0 Answers