gpt4 book ai didi

c++ - Box2D 碰撞回调

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:26 26 4
gpt4 key购买 nike

我在我的游戏中有两个 body ,我声明如下:

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++

最佳答案

您正在比较一个永远不会相等的物体和夹具。您应该将给定的主体指针与 Actor 和砖 block 主体指针进行比较:

if((bodyA==actor && bodyB==brick)
|| (bodyA==brick&& bodyB=actor))
score++
}

请注意,我还更改了条件,因此 body A 等于 actor body AND body B 等于 brick body 或者反过来。否则条件永远不会满足,因为 body A(或 body B)不能是 actor bodybrick body一次

关于c++ - Box2D 碰撞回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20074660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com