Box2d如何防止碰撞后反弹?

时间:2013-01-03 10:14:34

标签: box2d-iphone

我正在开发一个简单的游戏,就像破砖机一样。

现在与砖碰撞,玩家应该反弹,它运作正常。 但是在与硬币碰撞时,玩家不应该反弹,硬币应该消失。

为此,我尝试过对钱币进行负面赔偿。像这样改变了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中对身体进行负面恢复?

我只是想知道这对于两个身体是否可能,如硬币(静电)&amp;玩家(动态)意图碰撞,动态碰撞后不反弹。

我可以这样做吗?

2 个答案:

答案 0 :(得分:0)

我认为你不应该使用Box2d身体作为硬币。仅使用精灵。使用一些算法来检测玩家和硬币之间的碰撞。

例如,您可以比较链接到玩家身体的精灵和硬币精灵的位置。

答案 1 :(得分:0)

您应该将硬币夹具设置为传感器/