box2d,如何检测静态和动态物体之间的碰撞

问题描述:

我正在监听动态物体之间的接触。但不能监听动态和静态物体之间的接触。box2d,如何检测静态和动态物体之间的碰撞

我可以用这个metod来处理我的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;    

     } 

PLZ帮我...

这不是一个有效的假设,静态身体会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;    

    } 
+0

Thnks它的作品,我解决问题 – cagryInside 2011-04-12 23:22:44