Вот как получить мировую точку (или очки, возвращаются максимум 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;
Здесь, как упоминал Джейсон F, вы можете затем использовать b2Body::GetLocalPoint(const b2Vec2 &worldPoint)
для преобразования этой точки мира в локальное пространство объектов,Я просто хотел добавить свой собственный ответ, чтобы включить всю часть о том, как получить точки соприкосновения с миром, поскольку в принятом ответе это, похоже, вообще не учитывается.