我几乎没有疑问如何在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个图块无效。
最佳答案
它不起作用,因为您在渲染调用之间完全更新了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;
}
}
}