Java 使用deltatime进行的LibGdx更新不精确
我是一个新的游戏创作者。 我有几个盒子可以从屏幕的顶部移动到底部,我需要在它们之间留出1个单位的距离。 除了距离不精确外,其他一切都很好,我认为deltatime导致了这个问题 这是我移动箱子的方式: objX-=延迟时间*速度 更新Java 使用deltatime进行的LibGdx更新不精确,java,android,libgdx,Java,Android,Libgdx,我是一个新的游戏创作者。 我有几个盒子可以从屏幕的顶部移动到底部,我需要在它们之间留出1个单位的距离。 除了距离不精确外,其他一切都很好,我认为deltatime导致了这个问题 这是我移动箱子的方式: objX-=延迟时间*速度 更新 time += deltatime :if(time >= 3.0f) spawn Im使用libgdx您可以通过以下方式安排任务: Array<Sprite> sprites; Texture texture; SpriteBatch bat
time += deltatime :if(time >= 3.0f) spawn
Im使用libgdx您可以通过以下方式安排任务:
Array<Sprite> sprites;
Texture texture;
SpriteBatch batch;
float speed=35;
@Override
public void create() {
sprites=new Array<Sprite>();
texture=new Texture("badlogic.jpg");
batch=new SpriteBatch();
Timer.instance().scheduleTask(new Timer.Task() {
@Override
public void run() {
spawn();
}
},1,2);
}
private void spawn(){
Sprite sprite=new Sprite(texture);
sprite.setSize(50,50);
sprite.setPosition(Gdx.graphics.getWidth()/2,0);
sprites.add(sprite);
}
@Override
public void render() {
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
float delta=Gdx.graphics.getDeltaTime();
batch.begin();
for (Sprite sprite:sprites){
sprite.setY(sprite.getY()+delta*speed);
sprite.draw(batch);
}
batch.end();
}
数组精灵;
纹理;
喷雾批;
浮动速度=35;
@凌驾
公共void create(){
sprites=新数组();
纹理=新纹理(“badlogic.jpg”);
批次=新的SpriteBatch();
Timer.instance().scheduleTask(新的Timer.Task()){
@凌驾
公开募捐{
繁殖();
}
},1,2);
}
私有void spawn(){
雪碧雪碧=新雪碧(纹理);
雪碧。设定尺寸(50,50);
setPosition(Gdx.graphics.getWidth()/2,0);
雪碧。添加(雪碧);
}
@凌驾
公共无效呈现(){
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
float delta=Gdx.graphics.getDeltaTime();
batch.begin();
用于(精灵精灵:精灵){
sprite.setY(sprite.getY()+delta*速度);
雪碧.抽(批);
}
batch.end();
}
经过一番努力,我终于想出了一个主意
不要通过deltatime
移动框并生成它们,而是使框保持静态并将摄影机移到它们上方
所以我把摄像机移到这里
public void render(float delta) {
posCameraDesired.y += 2000.0f * Gdx.graphics.getDeltaTime();
guiCam.position.lerp(posCameraDesired, 0.1f);
SemiRender();
}
我有静态的Y
,每次产卵后我都会更新它
lastY=10+lastY+((宽度/4)/2)*3代码>
以及其他一些逻辑,以便在它们通过视口时循环使用它们。
每个人都很快乐 您使用的是Gdx.graphics.getDeltaTime()
?@EthanBar是的,我使用过,但距离会随机变化,在unity3d中,我输入了fixedupdate以精确表示,但在Gdx中,我不知道如何修复it@EthanBar顺便说一句,我用它来生成box:time+=delta;如果(时间>=3.0f)spawn@newuser什么是delta?@AbhishekAryan deltatimei刚刚尝试了速度=1000,延迟秒=0.0f,间隔=0.3f,但它仍然像一个循环,每3或4个产卵会让它们之间的距离更长