【问题标题】:Getting contact points on bodies in Cocos2d & Box2d在 Cocos2d 和 Box2d 中获取身体上的接触点
【发布时间】:2011-02-17 19:17:46
【问题描述】:

我对 Cocos2d 和 Box2d 非常,我 一直关注tutorials 和 一般是黑客攻击。不过,我有一个 我无法解决的问题。

我创建了 2 个物体和固定装置(在 Box2d 世界中)并创建了一个“Contact Listener”对象。此对象存储联系人列表以及“联系人”。

当两个物体发生碰撞时,会报告一个接触点,但这(我认为)是在世界坐标系中。

我的问题是我似乎无法将接触点转换为两个身体上的可用坐标。

我想在 精灵(连接到身体)在 双方的联络点 身体/固定装置。

有人解决了吗?我可能存储相对于“世界”的“接触点”是完全错误的方式。

【问题讨论】:

  • 你能修复勾选答案中的链接吗?

标签: iphone c++ cocos2d-iphone box2d


【解决方案1】:

这里是如何获取发生碰撞的世界点(或点,最多返回 2 个点)。在您的 B2ContactListener 对象、BeginContactEndContact 函数中:

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 &amp;worldPoint) 将此世界点转换为本地对象空间。我只是想添加自己的答案,以包括有关获取世界联系点的整个部分,因为在接受的答案中似乎完全省略了这一点。

【讨论】:

  • 就像给好奇的人的注释一样 Ascengine::Physics::PIXEL_TO_METER_RATIO 只是我自己的游戏引擎中定义的一个常数,它给了我,好吧,顾名思义,像素:米比。
【解决方案2】:

查看this。看看b2Body::GetLocalPoint(const b2Vec2 &amp;worldPoint)

【讨论】:

  • 你能修复链接吗,它丢失了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多