我是创造游戏的新手。 我有几个从屏幕的顶部到底部移动的盒子,我需要在它们之间留出1个单位的距离。 除了距离不精确之外,每件事都很好,我认为deltatime会导致这个问题 这是我移动盒子的方式: objX - = deltatime * speed;
更新
time += deltatime :if(time >= 3.0f) spawn
我正在使用libgdx
答案 0 :(得分:0)
您可以通过以下方式安排任务:
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();
}
答案 1 :(得分:0)
deltatime
生成它们,使框静止并将相机移到它们上面!
所以我只是在这里移动相机
public void render(float delta) {
posCameraDesired.y += 2000.0f * Gdx.graphics.getDeltaTime();
guiCam.position.lerp(posCameraDesired, 0.1f);
SemiRender();
}
我有静态Y
,我会在每次产卵后更新
lastY = 10 + lastY + ((width / 4) / 2) * 3;
以及在通过viewport
时回收它们的一些其他逻辑。
每个人都很开心!