我在游戏中有两个身体,我已声明如下:
b2Body* actor;
b2Body* brick;
它们都是b2PolygonShape
个身体。夹具声明如下:
b2FixtureDef actorFixture;
b2FixtureDef brickFixture;
现在我正在尝试获取碰撞信息,我想确认它们是否相互碰撞。我认为我可以通过GetFixture()
与BeginContact
中的actorFixture和brickFixture比较两个物体的固定物来做到这一点,但我发现它不能这样做!我很抱歉,如果我的问题是愚蠢的,但我正在学习碰撞检测并发现它非常困难。我阅读了有关它的文章,但我的逻辑还不清楚。你能帮我告诉我怎样才能实现我上面提到的目标?
在beginContact中我想要这样的东西:
void Callback::BeginContact(b2Contact* contact)
{
std::cout << "Begin Contact" << std::endl;
b2Body* bodyA = contact->GetFixtureA()->GetBody();
b2Body* bodyB = contact->GetFixtureB()->GetBody();
if((bodyA==actorFixture||bodyB==brickFixture)
&& (bodyA==brickFixture||bodyB=actorFixture))
score++
}
答案 0 :(得分:1)
你正在比较一个永远不会相等的身体。 您应该将给定的body指针与actor和brick body指针进行比较:
if((bodyA==actor && bodyB==brick)
|| (bodyA==brick&& bodyB=actor))
score++
}
请注意,我也更改了条件,因此body A
等于actor body
和body B
等于brick body
或反过来。否则,由于body A
(或body B
)不能同时为actor body
和brick body