我遇到libgdx
的问题。
我希望控制角色位置的持续时间恰好是2秒,在2秒之后,角色会改变位置并再次重复该过程......
这是我的代码:
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
carte();
counterTime += Gdx.graphics.getDeltaTime();
time += delta;
if(counterTime > 2 ) {// each second ==> one call to position random
position = new Vector2(this.mari.x, this.mari.y);
counterTime =0;
/************* position.x & position.y is a position random of array(carte)*****************/
batch.draw(animation.getKeyFrame(time), position.x, position.y, 64, 64);
animation.setPlayMode(Animation.PlayMode.LOOP);
}
batch.end();
}
///and i have been initializ the position in the cerate() methode
有什么想法吗?
答案 0 :(得分:0)
试试这个:
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
carte();
elapsedTime+= System.currentTimeMilis()-initialTime;
if(elapsedTime >= 2000) {
position = new Vector2(this.mari.x, this.mari.y);
batch.draw(animation.getKeyFrame(time), position.x, position.y, 64, 64);
animation.setPlayMode(Animation.PlayMode.LOOP);
elapsedTime=0;
initialTime=System.currentTimeMilis();
}
batch.end();
}
询问您是否有任何疑问:)
编辑:刚刚意识到一些改进(我不是在编辑代码,但请解释一下):
1)batch
应尽可能少地保持开放。
除非carte()
使用(绘制内容)batch
,否则我会考虑:
batch.begin();
batch.draw(animation.getKeyFrame(time), position.x, position.y, 64, 64);
batch.end();
(让批次打开就足以画出来)。
2) 而不是:
elapsedTime+= System.currentTimeMilis()-initialTime;
if(elapsedTime >= 2000) {
你可以使用:(快一点)
if(System.currentTimeMilis()-initialTime >= 2000) {