Box2D冲突回调
Box2D collision callback
我的游戏中有两个身体,我声明如下:
b2Body* actor;
b2Body* brick;
它们都是CCD_ 1体。这里的fixture声明如下:
b2FixtureDef actorFixture;
b2FixtureDef brickFixture;
现在我正在努力获得碰撞的信息,我想确认他们是否都碰撞了。我以为我可以通过比较GetFixture()
中的两个物体的夹具与BeginContact
中的actorFixture和brickFixture来做到这一点,但我发现不能这样做!如果我的问题很愚蠢,我很抱歉,但我正在学习碰撞检测,发现它真的很难。我读了关于它的文章,但我的逻辑仍然不清楚。你能帮我让我知道我如何才能实现上面提到的目标吗?
在开始联系时,我想要这样的东西:
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和实体指针进行比较:
if((bodyA==actor && bodyB==brick)
|| (bodyA==brick&& bodyB=actor))
score++
}
注意,我还更改了条件,使body A
等于actor body
,body B
等于brick body
,或者反过来。否则,该条件将永远不会满足,因为body A
(或body B
)不能同时是b2PolygonShape
0和brick body
相关文章:
- 架构决策:返回std::future还是提供回调
- 正在为Xtensa simcall函数编写回调函数
- 如何在C++中使用非静态成员函数作为回调函数
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 用于在回调中调用解析器的设计模式
- 如何使用C++对象的成员函数作为 C 样式回调?
- Java从C++回调到C++回调
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 从不同的 cpp 调用回调函数会导致bad_function_call
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 不带轮询的 SDL2 事件回调
- C++存储带有可变参数的回调
- 如何使用 Node-addon-API 实现 node-nan 回调
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 使用参数的 C# 委托回调会导致从 DLL 调用时C++访问冲突
- 读取 Lambda 回调后的访问冲突
- Box2D冲突回调
- 来自c++的c#回调会导致访问冲突
- 当从c++代码发送回调到c#代码时,访问冲突读取位置0x00000004