0
我想擁有因重力而與地板(靜態物體)相撞的物品(動態物體)。但我不希望玩家與地板上的物品發生碰撞,儘管當玩家重疊物品時我需要回叫(就像物品isSensor屬性設置爲true一樣)。如何讓物品與地面碰撞,但不與玩家碰撞?
可能嗎? 我嘗試了一些類別位和掩碼位的配置沒有成功。
我以前沒有這個問題,因爲物品的gravityScale設置爲0,所以他們沒有落在地板上。但現在他們需要對重力做出反應。
謝謝。
我想擁有因重力而與地板(靜態物體)相撞的物品(動態物體)。但我不希望玩家與地板上的物品發生碰撞,儘管當玩家重疊物品時我需要回叫(就像物品isSensor屬性設置爲true一樣)。如何讓物品與地面碰撞,但不與玩家碰撞?
可能嗎? 我嘗試了一些類別位和掩碼位的配置沒有成功。
我以前沒有這個問題,因爲物品的gravityScale設置爲0,所以他們沒有落在地板上。但現在他們需要對重力做出反應。
謝謝。
您必須實施延伸b2ContactListener
的類。您可以選擇在PreSolve()
虛擬功能中拒絕碰撞。在傳遞到PreSolve()
的b2Contact
對象中,您可以獲得2個燈具,如果您之前已經存儲了指向用戶數據的指針,則可以從中導出它實際發生碰撞的對象。
在您啓動遊戲引擎之前,創建b2ContactListener
的子類的新對象,然後調用遊戲世界對象的方法SetContactListener()
來設置偵聽器。
它的工作原理!我首先想到我應該將'BeginContact'中正在做的事情轉移到'PreSolve',因爲我認爲'SetEnabled(false)'會阻止'BeginContact'的調用。但我只需要在'PreSolve'中禁用聯繫人,這很酷。 – florian