簡體   English   中英

獲取Cocos2d和Box2d中的物體上的接觸點

[英]Getting contact points on bodies in Cocos2d & Box2d

我很的Cocos2D和Box2D的,我一直在下面的教程和黑客一般。 但是,我有一個問題我無法解決。

我創建了2個實體和燈具(在Box2d世界中)並創建了一個“Contact Listener”對象。 該對象存儲聯系人列表以及“聯系點”。

當兩個物體發生碰撞時,會報告一個接觸點,但這(我認為)是在世界坐標系中。

我的問題是我似乎無法將接觸點轉換為兩個物體上的可用坐標。

我想在兩個主體/固定裝置上的接觸點處向精靈(連接到主體)添加裂縫圖形。

有人解決了這個嗎? 我可能存儲相對於“世界”的“接觸點”是完全錯誤的方法。

以下是如何獲得發生碰撞的世界點(或點,最多返回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)將此世界點轉換為本地對象空間。 我只想添加我自己的答案,包括關於獲取世界聯絡點的整個部分,因為在接受的答案中似乎完全省略了這一點。

看看這個 看看b2Body::GetLocalPoint(const b2Vec2 &worldPoint)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM