我正在用libgdx开发游戏。角色从piller跳到piller。我每次当角色在piller上碰撞时都需要增加分数,但是我已经写过了piller和角色之间的碰撞检测是渲染方法。因此当角色在击球手上时,分数会不断增加。实际上我需要在角色在每个Piller上时增加分数(对于一个piller一次增量)。所以任何人都可以解释我如何设置标志,当角色与对象碰撞时仅增加一次。
public int getScore(){
return 1;
}
public void update(){
if (character.overlaps(piller))
{ score+=getScore();
}
答案 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");
} }
//所以这里得分在完全碰撞期间增加一次