我对如何在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个牌。
答案 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;
}
}
}