rjs*_*ing 3 c++ iphone box2d cocos2d-iphone
我很新来的Cocos2D和Box2D的,我一直在下面的教程和黑客一般.但是,我有一个问题我无法解决.
我创建了2个实体和灯具(在Box2d世界中)并创建了一个"Contact Listener"对象.该对象存储联系人列表以及"联系点".
当两个物体发生碰撞时,会报告一个接触点,但这(我认为)是在世界坐标系中.
我的问题是我似乎无法将接触点转换为两个物体上的可用坐标.
我想在两个主体/固定装置上的接触点处向精灵(连接到主体)添加裂缝图形.
有人解决了这个吗?我可能存储相对于"世界"的"接触点"是完全错误的方法.
小智 6
以下是如何获得发生碰撞的世界点(或点,最多返回2个点).在您的B2ContactListener对象,内部BeginContact或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;
Run Code Online (Sandbox Code Playgroud)
从这里开始,正如Jason F所提到的,您可以使用b2Body::GetLocalPoint(const b2Vec2 &worldPoint)此世界点转换为本地对象空间.我只是想添加我自己的答案,包括关于获取世界联络点的整个部分,因为在接受的答案中似乎完全省略了这一点.
| 归档时间: |
|
| 查看次数: |
2656 次 |
| 最近记录: |