box2d, как обнаружить столкновение между статическими и динамическими телами - PullRequest
0 голосов
/ 13 апреля 2011

Я слушаю контакт между динамическими телами. Но не могу слушать контакт между динамическим и статическим телом.

С этим методом я могу обрабатывать обнаружение столкновений в моем классе b2contactListener.

    public override function BeginContact(contact:b2Contact):void {
        // getting the fixtures that collided
        var fixtureA:b2Fixture=contact.GetFixtureA();
        var fixtureB:b2Fixture=contact.GetFixtureB();
        // if the fixture is a sensor, mark the parent body to be removed

        if(fixtureB.GetBody().getUniqueBodyName() == "towerBody"){
            //Towerbody is static body
                    trace("BINGOOOOOO");
                    }  

        if (fixtureA.GetBody().getUniqueBodyName() == "bomb"){
            // Bomb is dynamic body
        //  main.gamePhysics.destroyBodyWhenCollide(fixtureA.GetBody());

            var spr:Sprite = fixtureA.GetBody().GetUserData();
            spr.alpha = 0;
            fixtureA.GetBody().collisionDetected = true;            

        }

Пожалуйста, помогите мне ...

1 Ответ

2 голосов
/ 13 апреля 2011

Неправильное предположение, что статическим телом будет крепеж B ... это может быть крепеж A.

Попробуйте проверить это ...

public override function BeginContact(contact:b2Contact):void {
    // getting the fixtures that collided
    var fixtureA:b2Fixture=contact.GetFixtureA();
    var fixtureB:b2Fixture=contact.GetFixtureB();
    // if the fixture is a sensor, mark the parent body to be removed

    if(fixtureA.GetBody().getUniqueBodyName() == "towerBody"){
        //Towerbody is static body
                trace("BINGOOOOOO - A");
                }  

    if(fixtureB.GetBody().getUniqueBodyName() == "towerBody"){
        //Towerbody is static body
                trace("BINGOOOOOO - B");
                }  


    if (fixtureA.GetBody().getUniqueBodyName() == "bomb"){
        // Bomb is dynamic body
    //  main.gamePhysics.destroyBodyWhenCollide(fixtureA.GetBody());

        var spr:Sprite = fixtureA.GetBody().GetUserData();
        spr.alpha = 0;
        fixtureA.GetBody().collisionDetected = true;            

    }
...