我很new对于 Cocos2d 和 Box2d,我
一直在关注教程 http://www.raywenderlich.com/和
一般是黑客攻击。不过,我有一个
我无法解决的问题。
我创建了 2 个主体和固定装置(在 Box2d 世界中)并创建了一个“Contact Listener”对象。该对象存储联系人列表以及“联系点”。
当两个物体碰撞时,会报告一个接触点,但这(我认为)是在世界坐标系中。
我的问题是我似乎无法将接触点转换为可用的坐标both的尸体。
我想添加一个裂纹图形
精灵(连接到身体)在
双方的接触点
机构/固定装置。
有人解决这个问题了吗?我可能存储相对于“世界”的“接触点”是完全错误的方法。
以下是如何获取发生碰撞的世界点(或多个点,最多返回 2 个点)。在你的B2ContactListener
对象,在BeginContact
or EndContact
功能:
b2WorldManifold worldManifold;
contact->GetWorldManifold(&worldManifold);
std::cout << "Contact point X: " << worldManifold.points[0].x * Ascengine::Physics::PIXEL_TO_METER_RATIO << " Contact point Y: " << worldManifold.points[0].y * Ascengine::Physics::PIXEL_TO_METER_RATIO << std::endl;
从这里,正如 Jason F 提到的,您可以使用b2Body::GetLocalPoint(const b2Vec2 &worldPoint)
将此世界点转换为本地对象空间。我只是想添加我自己的答案以包括有关获取世界接触点的整个部分,因为这似乎在接受的答案中被完全省略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)