对于我在LibGDX和Android中的第一款游戏,我遇到了一个问题:
我的背景图片是2560px * 720px。屏幕是1280 * 720。 如何设置视口和相机以获得以下结果: 图片的高度相同,显示宽度为1280像素。
我尝试了很多东西,这让我很困惑。
Gamescreen.java
package com.joelbrun.jetskirider.screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
public class Gamescreen implements Screen {
public Texture jetski, wave, background;
public SpriteBatch batch;
public OrthographicCamera camera;
public Label score;
public static final int GAMESCREEN_WIDTH = 1920;
public static final int GAMESCREEN_HEIGHT = 720;
public static final int OBSTACLE_TYPES = 5;
private Texture[] texture;
@Override
public void show() {
texture = new Texture[OBSTACLE_TYPES];
for (int i=0; i<OBSTACLE_TYPES; i++){
texture[i] = new Texture(Gdx.files.internal("game/obstacles/obstacle" + Integer.toString(i+1)+".png"));
}
background = new Texture("game/background.png");
jetski = new Texture("game/jetski.png");
batch = new SpriteBatch();
float aspectRatio = (float)Gdx.graphics.getWidth()/(float)Gdx.graphics.getHeight();
camera = new OrthographicCamera();
camera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
//camera.position.set(GAMESCREEN_WIDTH / 2, GAMESCREEN_HEIGHT / 2, 0);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(background, 0, 0, 1280*2, 720);
batch.end();
}
@Override
public void resize(int width, int height) {
//camera.position.set(GAMESCREEN_WIDTH / 2, GAMESCREEN_HEIGHT / 2, 0);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
batch.dispose();
background.dispose();
jetski.dispose();
wave.dispose();
}
}
答案 0 :(得分:1)
你不能只在0,0画出图像吗?
private Texture backgroundTexture;
private SpriteBatch batch;
private OrthographicCamera camera;
@Override
public void show() {
backgroundTexture = new Texture(Gdx.files.internal("backgroundIMage.png"));
batch = new SpriteBatch();
camera = new OrthographicCamera();
camera.setToOrtho(false, Gdx.graphics.getWidth(), gGdx.graphics.getHeight());
}
@Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(backgroundTexture, 0, 0);
batch.end();
}
这不是一个完整的课程,但它应该让你知道该怎么做。要移动图像,您只需沿x轴移动它。
答案 1 :(得分:0)
所以我从用户VaTTeRGeR得到了Stackexchange的答案:
如果您在
中更改这些部分,它应该可以使用show()
:viewport = new ScalingViewport(Scaling.fillY, GAMESCREEN_WIDTH, GAMESCREEN_HEIGHT, camera = new OrthographicCamera());
并添加调整大小方法:
@Override public void resize(int width, int height) { int SCREEN_WIDTH = width; int SCREEN_HEIGHT = height; viewport.setWorldSize(GAMESCREEN_WIDTH, GAMESCREEN_HEIGHT); viewport.update(SCREEN_WIDTH, SCREEN_HEIGHT,true); }
重要的是,将Sprites的高度设置为
GAMESCREEN_HEIGHT
您可能需要移动camera
a 但这不应该那么难。private void moveView(Vector3 v) { camera.translate(v); camera.update(); }
非常感谢他