Help with collision, and how to check for it.

Feb 27, 2011 at 11:16 PM

In my game I have a Body, and on it there can be a variable amount of fixtures. Now I do this to check if it is on the ground!

 private void OnCollision(Fixture fix1,Fixture fix2, Contact cont)
        {

            if (fix2.Body.IsStatic)
            {
                //Pre-eliminary test!

                Vector2 touchPoint = cont.Manifold.LocalPoint;

                Vector2 touchPoint2 = fix1.Body.GetWorldVector(touchPoint);

                if (touchPoint2.Y > (_body.WorldCenter.Y))
                {
                    UtilDraw.DrawPoint(Settings.ConvertToPixels(touchPoint2),1,Color.White);
                    //SaniorGame.WriteToConsole("Touched!");
                    _onGround = true;
                }
            }

        }

This works to a certain extent, only I want to set the Variable back to false once I stop colliding. That indirectly causes my other problem->

http://puu.sh/14H2

This is when the _onGround is true.

http://puu.sh/14H3

This when it is false.

Currently I am resetting it every Update, that is bad as it causes the variable to "flicker" and is not really a viable solution. This is really blocking me.

 

Thanks for any help!

Feb 28, 2011 at 7:41 PM
Edited Feb 28, 2011 at 7:42 PM

Hook to the OnSeparation event and set the variable back to false from there.