Java libGDX一块平滑的运动

时间:2014-08-10 13:00:32

标签: java libgdx lwjgl

我对如何在Java LibGDX中进行平滑移动几乎没有疑问?像这样:

if(walk_right) {
    if(map[cords.x][cords.y] == 1){
        for(float i = 0f; i < 2f; i += 0.001f){ //1 tile 2f;
            cords.x += 0.001f;
        }
    }
}

但是这不起作用的玩家传送1个牌。

1 个答案:

答案 0 :(得分:1)

它不起作用导致您完全更新渲染调用之间的x坐标。 您需要在主游戏循环中平滑更新x坐标。

简单示例:

private float velocity = 2f;  //2 units per second
private float walkedDistance = 0f;
private boolean walkRight;

public void walkRight() {
    walkRight = true;
}

public void update(float delta) {
    if(walkRight) {
        float xMovement = delta * velocity;
        walkedDistance += xMovement;
        cords.x += xMovement; 
        if (walkedDistance >= 2) {
            cords.x -= walkedDistance - 2;
            walkRight = false;
            walkedDistance = 0;
        }
    }
}