我的 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
有什么想法吗?
最佳答案
试试这个:
@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();
}
- 在create() 上创建并初始化initialTime(使用System.currentTimeMilis())。
- 在 create() 上创建并初始化 elapsedTime(elapsedTime=0)。
如果您有任何问题,请询问:)
编辑:刚刚意识到一些改进(不过我没有编辑代码,让我解释一下):
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) {
关于java - 控制字符的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730601/