控制角色的持续时间

时间:2016-01-11 20:36:20

标签: java libgdx

我遇到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

有什么想法吗?

1 个答案:

答案 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();
}
  • 在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) {