Esempio n. 1
0
 public void DestroyBody(Box2DBody box2DBody)
 {
     if (box2DBody == null)
     {
         return;
     }
     bodies.Remove(box2DBody);
     world.DestroyBody(box2DBody);
 }
Esempio n. 2
0
    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;
            }
        }
    }
Esempio n. 4
0
    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);
        }
    }
Esempio n. 5
0
 public void CreateBody(Box2DBody box2DBody, BodyDef bodyDef)
 {
     box2DBody.body = world.CreateBody(bodyDef);
     bodies.Add(box2DBody);
 }