如何通过1瓦片libgdx移动玩家

时间:2014-07-06 17:45:46

标签: java libgdx desktop-application

我在libgdx中使用了平铺。我正在做一个自上而下的RPG,类似于最终的幻想1,2等等。

我用 setX(getX()+ velocity.x * delta);和setY(getY()+ velocity.y * delta); 在地图上移动玩家。 如何让玩家逐块移动。我将如何检查是什么瓷砖 玩家?有人能帮我吗。三江源。

我发现了这个:

void update()(
// Getting the target tile
if ( rightArrowPressed ) {
    targetX = (int)(currentX + 1); // Casting to an int to keep 
                                   // the target to next tile
}else if ( leftArrowPressed ){
    targetX = (int)(currentX - 1);
}

// Updating the moving entity
if ( currentX < targetX ){
    currentX += 0.1f;
}else if ( currentX > targetX ){
    currentX -= 0.1f;
}

}

来自:libGDX: How to implement a smooth tile / grid based game character movement?

但我似乎可以在我的游戏中看到它实现它。

1 个答案:

答案 0 :(得分:0)

我正在编写一个2048游戏,我用来移动玩家的方法是有两个x变量和两个y变量,一个用于坐标作为屏幕上的像素,另一个用于网格。当执行移动时,我更改网格变量并让我的游戏循环检查网格x和y变量乘以网格大小是否等于屏幕x和y变量。如果它不匹配,我然后移动播放器。

int x, y;//Grid
int xx, yy;//Screen
int GridSize = 3;

public void tick(){
    if(x * GridSize > xx){
        xx ++;
    }        
    if(x * GridSize < xx){
        xx --;
    }
    if(y * GridSize > yy){
        yy ++;
    }
    if(y * GridSize < yy){
        yy --;
    }
}

要查看玩家所处的图块,您只需要执行getX和getY即可找到玩家的图块坐标。