在box2d中获得碰撞点的最佳方法是什么 . 我正在使用它与cocos2d和Objective C,但我想这个API在其他语言中是类似的 . 使用b2ContactListener类将生成b2Contact对象,但我找不到有关联系人位置的任何信息 .
您可以使用以下代码来获取碰撞点
b2Body *bodyA = contact->GetFixtureA()->GetBody(); b2Body *bodyB = contact->GetFixtureB()->GetBody(); if ((bodyA->GetFixtureList()->GetFilterData().categoryBits == Categorybits1 || bodyA->GetFixtureList()->GetFilterData().categoryBits == categoryBits2) && (bodyB->GetFixtureList()->GetFilterData().categoryBits == categoryBits2 || bodyB->GetFixtureList()->GetFilterData().categoryBits == Categorybits1))
您可以通过此代码获取身体位置.....
即使我正在寻找如何获得碰撞点
try this method OBJECT1_CATEGORY_BITS = 0x00000001; OBJECT2_CATEGORY_BITS = 0x00000002; void MyContactListener::PreSolve(b2Contact *contact, const b2Manifold *oldManifold) { b2Fixture *fixtureA = contact->GetFixtureA(); b2Fixture *fixtureB = contact->GetFixtureB(); b2Filter filterA = fixtureA->GetFilterData(); b2Filter filterB = fixtureB->GetFilterData(); if ((filterB.categoryBits == OBJECT1_CATEGORY_BITS) && (filterA.categoryBits == OBJECT2_CATEGORY_BITS)) { b2Vec2 normal = contact->GetManifold()->localNormal; NSLog(@"pointX : %f",normal.x); NSLog(@"pointY : %f",normal.y); } }
2 回答
您可以使用以下代码来获取碰撞点
您可以通过此代码获取身体位置.....
即使我正在寻找如何获得碰撞点