public void DestroyBody(Box2DBody box2DBody) { if (box2DBody == null) { return; } bodies.Remove(box2DBody); world.DestroyBody(box2DBody); }
public void EndContact(Contact contact) { Box2DBody bodyA = (Box2DBody)contact.FixtureA.UserData; Box2DBody bodyB = (Box2DBody)contact.FixtureB.UserData; if (bodyA != null) { bodyA.SendMessage("OnContactEnd", contact, SendMessageOptions.DontRequireReceiver); } if (bodyB != null) { bodyB.SendMessage("OnContactEnd", contact, SendMessageOptions.DontRequireReceiver); } }
void Update() { var ray = GetComponent <Camera>().ScreenPointToRay(Input.mousePosition); float rayIntersect; if (!plane.Raycast(ray, out rayIntersect)) { return; } var pointOfInteresect = ray.GetPoint(rayIntersect); if (Input.GetMouseButtonDown(0)) { AABB aabb; Vector2 nudge = new Vector2(0.001f, 0.001f); aabb.LowerBound = (Vector2)pointOfInteresect - nudge; aabb.UpperBound = (Vector2)pointOfInteresect + nudge; Box2DBody body = Box2DWorld.Instance().QueryAABB(aabb); if (body != null) { mouseJoint = body.gameObject.AddComponent <Box2DMouseJoint>(); mouseJoint.worldMousePosition = pointOfInteresect; mouseJoint.force = force; } } if (Input.GetMouseButton(0)) { if (mouseJoint != null) { mouseJoint.worldMousePosition = pointOfInteresect; } } if (Input.GetMouseButtonUp(0)) { if (mouseJoint != null) { Destroy(mouseJoint); mouseJoint = null; } } }
public void PostSolve(Contact contact, ContactImpulse impulse) { Box2DBody bodyA = (Box2DBody)contact.FixtureA.UserData; Box2DBody bodyB = (Box2DBody)contact.FixtureB.UserData; PostContactPair args; args.contact = contact; args.impulse = impulse; if (bodyA != null) { bodyA.SendMessage("OnPostContact", args, SendMessageOptions.DontRequireReceiver); } if (bodyB != null) { bodyB.SendMessage("OnPostContact", args, SendMessageOptions.DontRequireReceiver); } }
public void CreateBody(Box2DBody box2DBody, BodyDef bodyDef) { box2DBody.body = world.CreateBody(bodyDef); bodies.Add(box2DBody); }