【问题标题】:box2d, how to detect collision between static and dynamic bodiesbox2d,如何检测静态和动态物体之间的碰撞
【发布时间】:2011-08-04 05:36:30
【问题描述】:

我正在聆听动态物体之间的接触。但不能听动静体之间的接触。

我可以使用这个方法在我的 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;            

        }

请帮帮我...

【问题讨论】:

    标签: flash actionscript box2d flash-builder


    【解决方案1】:

    静态主体将是fixtureB 的假设不正确......它可能是fixtureA。

    尝试测试一下...

    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;            
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多