带有 box2d 联系人监听器的 cocos2dx 不起作用
Posted
技术标签:
【中文标题】带有 box2d 联系人监听器的 cocos2dx 不起作用【英文标题】:cocos2dx with box2d contactlistener doesnt work 【发布时间】:2021-05-29 01:59:41 【问题描述】:我在我的 cocos2dx v4 项目中使用 box2d 2.3.1physics 引擎。我的多边形形状是使用物理编辑器创建的。一切都正常碰撞,但联系人监听器不记录联系人。
这是我在 helloworld.h 中定义的联系人监听头
MyContactListener 类:公共 b2ContactListener 私人的 : 无效 BeginContact(b2Contact* 联系人); 无效 EndContact(b2Contact* 联系人); void PreSolve(b2Contact* contact, const b2Manifold* oldManifold); void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse);
;
这是我在 helloworld.cpp 中的联系人监听器实现
void MyContactListener::BeginContact(b2Contact* 联系人) std::cout
void MyContactListener::EndContact(b2Contact* 联系人)
std::cout
void MyContactListener::PreSolve(b2Contact* contact, const b2Manifold* oldManifold)
std::cout
void MyContactListener::PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)
std::cout
MyContactListener myContactListenerInstance;
以及我对世界的联系人监听器分配(在 helloworld.cpp init 中)
_rootWorld->getb2World()->SetContactListener(&myContactListenerInstance);
一切正常但它不记录冲突联系人
我的身体类别和位掩码值是
主体 A:位掩码:63,类别:1
body B:位掩码:63,类别:2
body C:位掩码:63,类别:4
body D:位掩码:63,类别:8
body E:位掩码:63,类别:16
body F:位掩码:63,类别:32
谁能帮忙?
【问题讨论】:
【参考方案1】:我通过将 std::cout 更改为 log("...") 解决了问题,我猜 cocos2dx 引擎改变了 std::cout 行为,所以我不打印任何东西
【讨论】:
以上是关于带有 box2d 联系人监听器的 cocos2dx 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
基于Cocos2dx + box2d 实现的愤慨的小鸟Demo
cocos2dx 3.X刚体update穿透问题。刚体A在update中通过摇杆移动,设置的和刚体