当玩家与障碍物相交时,生命应该只减少1但是减少太多

时间:2013-10-23 07:04:25

标签: xna

下面的图片显示了玩家的负面生活....因为在路上与障碍物交叉...我希望解决方案只能在交叉后减少一点生命。

        if (Texture.playerrect.Intersects(Texture.mirchirect) || Texture.playerrect.Intersects(Texture.crabrect) || Texture.playerrect.Intersects(Texture.stonerect) || Texture.playerrect.Intersects(Texture.cactusrect))
        {
            die = true;
           currentframe = 19;

        }
        else { die = false; }


        if (die)
        {
          life -= 1;
        }

3 个答案:

答案 0 :(得分:2)

也许是因为代码每秒更新60帧die == true,然后对象的生命周期每秒减少60,而不是1。

答案 1 :(得分:1)

可能的方式......向障碍物添加一个bollean变量PlayerHitted,如果life -= 1为假(默认情况下),则更新PlayerHitted时发生碰撞设置为PlayerHitted为真。

如果障碍物击中了玩家,那么障碍物就会有信息

答案 2 :(得分:0)

          if (Texture.playerrect.Intersects(Texture.mirchirect) || Texture.playerrect.Intersects(Texture.crabrect) || Texture.playerrect.Intersects(Texture.stonerect) || Texture.playerrect.Intersects(Texture.cactusrect))
        {
            die = true;
            currentframe = 19;
            if (!Update)
            {
                life--;
                Update = true;
            }


        }
        else { die = false; Update = false; }