簡體   English   中英

在屏幕libgdx中添加分數

[英]add score in Screen libgdx

我的精靈與障礙物碰撞,但是屏幕頂部的分數存在問題。 在我的課程的更新中,沖突是由數組指定的,但是當它與對象碰撞時,分數仍然在增長,並且我無法停止它。 這是我的代碼:

private Array<Polen> polen;
private Score score;

    public PlayState(GameStateManager gsm) {
    super(gsm);
    score = new Score(110, 310);
    polen = new Array<Polen>();
    for(int i = 1; i <= COUNT; i++){
        polen.add(new Polen(i * (Polen.WIDTH)));
    }
}

    @Override
public void update(float dt) {
    handleInput();

    for(int i = 0; i < polen.size; i++){
        Polen pol= polen.get(i);

        if(pol.collides(aliado.getBounds())) {
            pol.changeExplosion();
            flagScore = 1;
        }
        if (pol.collides(aliado.getBounds())==false){
            flagScore = 0;
        }
    }
    if (flagScore == 1){
            Score.count++;
            flagScore=0;
            //auxCount = Score.count +1;

    }
    score.update(dt);
    updateGround();
    cam.update();

}

分數等級:

公共課成績{

private static final int MOVEMENT = 70;
private Vector3 position;
private Vector3 velocity;
private Rectangle bounds;
private Texture texture;

public Score(int x, int y){
    position = new Vector3(x, y, 0);
    velocity = new Vector3(0, 0, 0);
    texture = new Texture("score0.png");
    bounds = new Rectangle(x, y, ((texture.getWidth())), texture.getHeight());
}



public void update(float dt){//code for move the score for top of screen:
    if(position.y > 0)
        velocity.add(0, 0, 0);
    velocity.scl(dt);
    position.add(MOVEMENT * dt, velocity.y, 0);
    if(position.y < 0)
        position.y = 0;

    velocity.scl(1/dt);
    bounds.setPosition(position.x, position.y);

}

public Vector3 getPosition() {
    return position;
}

public Texture getTexture() {
    return texture;
}

public void setTexture(Texture texture) {
    this.texture = texture;
}

public Vector3 getVelocity() {
    return velocity;
}

public void setVelocity(Vector3 velocity) {
    this.velocity = velocity;
}

public Rectangle getBounds(){
    return bounds;
}

public void setBounds(Rectangle bounds) {
    this.bounds = bounds;
}

public void dispose(){
    texture.dispose();
}

}

pol.changeExplosion()您應該添加一個布爾值以將對象標記為完成。

public class Polen {
  private boolean exploded = false;

  public void changeExplosion() {
    // ...
    exploded = true;
    // ...
  }

  public boolean isExploded() {
    return exploded;
  }
}

然后,在更新功能中,您可以使用此標志來確定分數是否應該停止增加。

for(int i = 0; i < polen.size; i++) {
  Polen pol= polen.get(i);

  if(pol.collides(aliado.getBounds()) && !pol.isExploded()) {
    pol.changeExplosion();
    flagScore = 1;
  }
  else if (!pol.collides(aliado.getBounds())) {
    flagScore = 0;
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM