[英]Getting contact points on bodies in Cocos2d & Box2d
我很新的Cocos2D和Box2D的,我一直在下面的教程和黑客一般。 但是,我有一個問題我無法解決。
我創建了2個實體和燈具(在Box2d世界中)並創建了一個“Contact Listener”對象。 該對象存儲聯系人列表以及“聯系點”。
當兩個物體發生碰撞時,會報告一個接觸點,但這(我認為)是在世界坐標系中。
我的問題是我似乎無法將接觸點轉換為兩個物體上的可用坐標。
我想在兩個主體/固定裝置上的接觸點處向精靈(連接到主體)添加裂縫圖形。
有人解決了這個嗎? 我可能存儲相對於“世界”的“接觸點”是完全錯誤的方法。
以下是如何獲得發生碰撞的世界點(或點,最多返回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;
從這里開始,正如Jason F所提到的,您可以使用b2Body::GetLocalPoint(const b2Vec2 &worldPoint)
將此世界點轉換為本地對象空間。 我只想添加我自己的答案,包括關於獲取世界聯絡點的整個部分,因為在接受的答案中似乎完全省略了這一點。
看看這個 。 看看b2Body::GetLocalPoint(const b2Vec2 &worldPoint)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.