简体   繁体   English

Java libGDX一砖平滑运动

[英]Java libGDX one tile smooth movement

I have little question how I can do smooth movement in Java LibGDX ?. 我几乎没有疑问如何在Java LibGDX中进行平滑移动? Something like this: 像这样:

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;
        }
    }
}

But that doesn't work's player teleporting 1 tile. 但这对玩家传送1个图块无效。

It doesn't work cause you fully update x coordinate between render calls. 它不起作用,因为您在渲染调用之间完全更新了x坐标。 You need to smoothly update x coordinate in main game loop. 您需要在主游戏循环中平滑更新x坐标。

Simple example: 简单的例子:

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;
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM