碰撞检测和评分不能正常工作

时间:2016-08-30 19:50:44

标签: libgdx

我正在用libgdx开发游戏。角色从piller跳到piller。我每次当角色在piller上碰撞时都需要增加分数,但是我已经写过了piller和角色之间的碰撞检测是渲染方法。因此当角色在击球手上时,分数会不断增加。实际上我需要在角色在每个Piller上时增加分数(对于一个piller一次增量)。所以任何人都可以解释我如何设置标志,当角色与对象碰撞时仅增加一次。

        public int getScore(){
           return 1; 
        }
        public void update(){
        if (character.overlaps(piller))
        { score+=getScore();

        }

2 个答案:

答案 0 :(得分:1)

在Pillar类上放置一个布尔值,看看支柱是否得分。

if(character.overlaps(piller))
    if(!pillar.isScored())
         score++;
    else
        pillar.setScored();

更具体的答案需要您发布一些代码。

public class Pillar{

    private boolean isScored = false;

    .....

    public boolean isScored(){
        return scored;
    }

    public void setScored(){
        scored = true;
    }
}

答案 1 :(得分:0)

我找到了答案。当角色与击球手相撞时,得分不断增加。这是因为libgdx检查碰撞检测的速率是1/60 fps。因此,在每纳秒内,它将检测到碰撞并且正在增加分数。因此,为了在一次碰撞中仅增加一次得分,我使用了以下小代码,这对我很有用。

      int count =0;
      if(pillerEctangle.overlaps(chaaracterRectangle)){
        count++;
      if (count % 60 == 0) {

                    Score += 1;
                    Syste.out.println(score+"incremented score");
                } }

//所以这里得分在完全碰撞期间增加一次