Java libGDX一块平铺平滑移动

Java libGDX一块平铺平滑移动,java,libgdx,lwjgl,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; } } } if(向右行走){ 如果(映射[cords.x][cords.y]==1){ 对于(浮

我对如何在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;
        }
    }
}
if(向右行走){
如果(映射[cords.x][cords.y]==1){
对于(浮点数i=0f;i<2f;i+=0.001f){//1瓦片2f;
跳线x+=0.001f;
}
}
}

但这不起作用的玩家传送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;
        }
    }
}

嗯,我做了一些比这更重要的事情:对于(float I=0f;I<2f;I+=0.01f){}cords.x+=0.001f;和renderPlayer()