我几乎不知道如何在 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 个方 block 是行不通的。
最佳答案
它不起作用,因为您在渲染调用之间完全更新了 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;
}
}
}
关于Java libGDX 一砖一瓦平滑移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25228850/