簡體   English   中英

iPhone cocos2d box2d身體碰撞檢測無需施加力

[英]iPhone cocos2d box2d body collision detection without applying force

我正在為iPhone編寫Cocos2D box2d游戲。 我有2個動態物體,希望它們從外部施加力,但不要互相施加力並檢測到它們的碰撞。 我該如何實現?

我也希望他們在碰撞后一起在同一位置移動。 我怎樣才能做到這一點?

他們不會互相施加壓力並發現碰撞

聽起來您可能想看一下碰撞過濾。 這個答案有一些代碼可以動態更改物體的碰撞過濾指數https://stackoverflow.com/a/11283206/735204

他們在碰撞后一起在同一位置移動

可能是某種接頭(例如,焊接接頭?)

從手冊中: http : //www.box2d.org/manual.html

關節用於將物體約束到世界或彼此約束。 游戲中的典型示例包括布娃娃,蹺蹺板和滑輪。 關節可以多種方式組合在一起以創建有趣的動作。

某些關節提供了限制,因此您可以控制運動范圍。 一些接頭提供了電動機,該電動機可用於以規定的速度驅動接頭,直到超過規定的力/扭矩。

聯合電動機可以以多種方式使用。 您可以通過指定與實際位置和所需位置之差成比例的關節速度來使用電動機來控制位置。 您也可以使用電動機來模擬關節摩擦:將關節速度設置為零,並提供一個很小但明顯的最大電動機力/扭矩。 然后,電動機將嘗試阻止接頭運動,直到負載變得過大。

對不起,最后一個答案,只是檢查我可以寫出來。

那這個呢?

bodyDef.isSensor = true;

並使用ContactListener來檢測碰撞。 Box2D的碰撞檢測

您也可以使用box2d過濾器。 例如:

記住:如果groupIndex <0,則相同的物體永遠不會相互碰撞。 那就是你所需要的。

b2Filter bodyFilter;
 bodyFilter.groupIndex = -1; 
 bodyFilter.categoryBits = 0x0002;



 fixtureDef.filter = bodyFilter;

暫無
暫無

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

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