游戏角色在不同的屏幕尺寸,libGDX中移动不同的速度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游戏角色在不同的屏幕尺寸,libGDX中移动不同的速度相关的知识,希望对你有一定的参考价值。
我正在尝试用libGDX制作游戏,其中游戏角色会横向移动屏幕。我用以下代码制作了一个样本,并在手机(较小的宽度)和平板电脑(较大的宽度)上进行了测试。演员在手机中移动和消失的速度比平板电脑快。我怎样才能解决这个问题?
public class SpriteMoveTestGame extends Game {
private MyScreen screen;
@Override
public void create() {
screen = new MyScreen();
setScreen(screen);
}
@Override
public void dispose() {
}
private class MyActor extends Actor {
private Texture texture;
private float x;
public MyActor() {
texture = new Texture(Gdx.files.internal("badlogic.jpg"));
x = 0.0f;
}
@Override
public void act(float delta) {
super.act(delta);
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl20.glClearColor(0, 1, 0, 0);
batch.draw(texture, x, 200);
x += 4.5f;
}
}
private class MyScreen extends ScreenAdapter {
private Stage stage;
private FitViewport fitViewport;
private MyActor actor;
public MyScreen() {
stage = new Stage();
actor = new MyActor();
stage.addActor(actor);
}
@Override
public void render(float delta) {
super.render(delta);
stage.act();
stage.draw();
}
}
}
正如奥斯卡所说,你不使用任何相机或视口,所以你使用屏幕分辨率。如果手机的宽度是800而且桌子的宽度是1200而且每一帧你做actor.x += 20
,那么演员在手机上有40帧,平板电脑上有60帧穿过孔宽。
要使用Fitviewport初始化舞台:
private OrthographicCamera camera;
private FitViewport viewport;
private Stage stage;
@Override
public void show() {
camera = new OrthographicCamera();
viewport = new FitViewport(200, 200, camera);
stage = new Stage(viewport);
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height);
}
现在你有一个具有200 x 200单位视口的舞台。当你现在运行应用程序时,演员将在左侧到高速侧的两个设备,手机和平板电脑上拥有10帧。
最后一个问题是,你可能有一个非常旧的手机,它有点慢。您的旧手机一帧需要0.02秒,而平板电脑仅需要0.016秒的帧。 所以平板电脑上的演员比手机上的演员要快一点。
你想:“我的演员可以在1秒内完成20个单位。”所以首先你做:actor.x += 20;
但问题是,演员现在在一帧中运行20个单位而不是一秒钟。
要解决这个问题,你需要在这个和最后一帧之间乘以20增量时间:actor.x += 20 * delta;
(delta
在act(float delta)
方法中):
@Override
public void act(float delta) {
x += 20 * delta;
}
现在你的演员总是在1秒内运行20个单位,在每个设备上你会看到200个单位宽度的世界。因此,在每个设备上,演员从左到右都有10秒。
以上是关于游戏角色在不同的屏幕尺寸,libGDX中移动不同的速度的主要内容,如果未能解决你的问题,请参考以下文章
开源java游戏框架libgdx专题-10-核心库-Viewport