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;
}
Thnks它的作品,我解决问题 – cagryInside 2011-04-12 23:22:44