2013-01-03 57 views
0

我正在開發一個簡單的遊戲,就像一個磚頭破碎機。如何防止Box2d碰撞後的反彈?

現在與磚塊碰撞,玩家應該反彈,它工作正常。 但是在與硬幣碰撞時,玩家不應該反彈,硬幣應該消失。

爲此,我已經試過負歸還硬幣&改變b2MixRestitution這樣的: -

/// Restitution mixing law. Feel free to customize this. 
inline float32 b2MixRestitution(float32 restitution1, float32 restitution2) 
{ 
    //return restitution1 > restitution2 ? restitution1 : restitution2; 

    float mixRest = 0.0f; 
    if(restitution1 > 0.0f && restitution2 > 0.0f) 
     mixRest = (restitution1>restitution2)?restitution1:restitution2; 
    else 
     mixRest = (restitution1<restitution2)?restitution1:restitution2; 

    return mixRest; 
} 

但還是球員自然反彈。

對於硬幣,賠償是-1.00f。 對於球員來說,賠償是0.50f。

這甚至有可能對Box2d中的身體產生負面恢復嗎?

我只是想知道這是可能的兩個機構像硬幣(靜態)&播放器(動態)這是爲了發生碰撞,動態的不碰撞後反彈。

我可以這樣做嗎?如果是,請指導我。

任何幫助表示讚賞......!

回答

0

我認爲你不應該使用Box2d身體的硬幣。只使用一個精靈。使用一些算法來檢測玩家和硬幣之間的碰撞。

例如,你可以比較鏈接到玩家和硬幣精靈體精靈的位置..

+0

哦是的..! !我也以同樣的方式思考。它是否真的必須是每幀典型的?因爲我必須將大約20個硬幣精靈幀與一個玩家精靈幀進行比較...... !!請記住,這增加了我在計劃選擇器tick中每幀完成的計算。 – Tarun

+0

@Tarun如果你仍然想使用box2d來處理硬幣玩家碰撞,只需讓它們成爲傳感器,所以沒有人會對碰撞做出反應,但你仍然會得到觸發的回調。 –

0

應設置硬幣的夾具作爲傳感器/