gpt4 book ai didi

iphone - 在 Cocos2d 和 Box2d 中获取 body 上的接触点

转载 作者:太空狗 更新时间:2023-10-29 20:00:46 25 4
gpt4 key购买 nike

I'm very new to Cocos2d and Box2d, I have been following tutorials and generally hacking. However, I have one problem I cannot solve.

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

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

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

I want to add a crack graphic to the sprite (connected to the body) at the point of contact on both bodies/fixtures.

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

最佳答案

以下是如何获取发生碰撞的世界点(或点,最多返回 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 &worldPoint) 将这个世界点转换为本地对象空间。我只是想添加我自己的答案以包括有关获取世界联系点的整个部分,因为这似乎在接受的答案中完全被省略了。

关于iphone - 在 Cocos2d 和 Box2d 中获取 body 上的接触点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033498/

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