libgdx在三次尝试后更改背景

时间:2014-06-05 10:31:34

标签: android eclipse libgdx

我会再次提出我的上一个问题。我希望我的游戏背景从白天变为夜晚。这应该在两三次尝试玩游戏后完成。 我有白色和黑色的纹理与不同的textureRegions。 很感谢任何形式的帮助。 我和eclipse一起工作。

这是我的AssetLoader.java中的内容

DAY= new TextureRegion(texture, 0, 0, 287, 512);
DAY.flip(false, true);
NIGHT= new TextureRegion(texture, 291, 0, 287,512);
NIGHT.flip(false, true);

这是我的GameRenderer.java中的内容

public void changeBG(int x){
if(x < 3){
drawDAY();
} 
else if (x < 6)
{
drawNIGHT();
}
}
private void drawNIGHT() {
    // TODO Auto-generated method stub
}
 private void drawDAY() {
   // TODO Auto-generated method stub}
}

这就是我在GameWorld.java中所拥有的

  public void update(float delta) {
   runTime += delta;

   switch (currentState) {
   case READY:
   case MENU:
         updateReady(delta);
         break;
   case RUNNING:
         updateRunning(delta);
         break;
   default:
      break;
   }
     }
public boolean isReady() {
     return currentState == GameState.READY;
  }

我希望这是足够的信息。 问候。

2 个答案:

答案 0 :(得分:0)

嗯,让我们说你有一个Sprite来保存整个纹理。

Sprite timeOfDay = new Sprite(texture);

然后简单地调整你的changeBG(int x)方法。您可以将精灵适当地设置为您想要的区域。

public void changeBG(int x){
    if(x < 5) //Assuming x is the time
        timeOfDay.setRegion(DAY);
    else
        timeOfDay.setRegion(NIGHT);
}

然后在设置批处理后的draw()方法中

timeOfDay.draw(batch);

我希望这会有所帮助。

[更新]

无需在渲染方法中绘制DAY和NIGHT。时间持有DAY和NIGHT纹理。当你打电话

timeOfDay.draw(batch); 

它呈现setRegion。

你的渲染应该看起来像这样......

public void draw(){
    batcher.begin();
    timeOfDay.draw(batcher);
    batcher.end();
}

答案 1 :(得分:0)

正如我在前面的回答中所说的那样,你需要从头开始做的几乎是以下几点:

DAY= new TextureRegion(texture, 0, 0, 287, 512);
DAY.flip(false, true);
NIGHT= new TextureRegion(texture, 291, 0, 287,512);
NIGHT.flip(false, true);

然后你创建一个Sprite:

Sprite sprite = new Sprite(DAY);

我猜你会将它设置为屏幕的大小,这取决于你是使用Scene2d还是正交变换,或者只是用屏幕坐标明确地去它:

sprite.setSize(Gdx.graphics.width, Gdx.graphics.height);

sprite.setSize(virtualWidth, virtualHeight); //in new version of LibGDX this is standard 640x480

然后,根据游戏的逻辑,你会想要改变TextureRegion。要存储您重试的次数,您需要使用首选项:

private static Preferences preferences; 

@Override
public void create()
{
    preferences = Gdx.app.getPreferences(Resources.preferencesName);
    ...

public static Preferences getPreferences()
{
    return preferences;
}

在游戏结束后,您将执行以下操作:

在游戏结束时将数字添加为以下内容以更改尝试次数:

    int currentTries = MyGame.getPreferences().getInt("numberOfTries");
    currentTries++;
    currentTries %= 6;
    MyGame.getPreferences().putInt("numberOfTries", currentTries);
    MyGame.getPreferences().flush();
    changeBG(currentTries);

然后更改当前纹理区域:

 public void changeBG(int x){
    if(x < 3) {
        sprite.setRegion(DAY);
    }
    else if (x < 6) {
        sprite.setRegion(NIGHT);
    }
 }