我会再次提出我的上一个问题。我希望我的游戏背景从白天变为夜晚。这应该在两三次尝试玩游戏后完成。 我有白色和黑色的纹理与不同的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;
}
我希望这是足够的信息。 问候。
答案 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);
}
}