[android]libGDX: 如何实现平滑的平铺网格根据游戏角色的移动?

标签: Java Android windows
发布时间: 2014/3/5 2:17:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在重新发明轮子的恐惧,我想知道:

实现平滑网格的最佳方法是什么根据游戏角色运动与libGDX自上而下平铺(2D) 地图?

字符应保持平稳瓷砖,只要按下箭头键 (或某些字符的方向上的触摸事件公告) 之间移动和应该完成限于在键上的网格位置/触摸释放。运动应该是独立的帧速率。

我将很高兴对一些已经实现的示例,可以学习并导致适当 libGDX API 使用。

解决方法 1:

测试如果按下某个特定的按钮 (或屏幕碰过),那里如果它,在字段中设置正确的目标瓷砖 (平铺,播放机将去哪里) 并开始移动,这种运动只会结束时,球员是下一个图块中。这种情况下,请检查输入再继续前进 (即重复)。

让我们假设你平铺宽度高度是 1,和你想要移动 1 瓦每秒。您的用户按下右箭头键。然后你只是设置 targettile 到刚刚好的播放机的拼贴。

if(targettile!=null){
    yourobject.position.x += 1*delta;
    if(yourobject.position.x>=targettile.position.x){
        yourobject.position.x = targettile.position.x;
        targettile = null;
    }
}

为正确的运动只有简化了此代码,您需要使它太为其他方向。
别忘了再轮询输入,如果球员不是移动。

编辑:

InputPolling 键:

if (Gdx.input.isKeyPressed(Keys.DPAD_RIGHT)){

抓在手的 InputPolling (cam 是你的相机和触屏界面是 Vector3 来存储的 unprojected 的触摸坐标和 moverightBounds (libgdx) 的矩形):

if (Gdx.input.isTouched()){
    cam.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));
    //check if the touch is on the moveright area, for example:
    if(moveRightBounds.contains(touchPoint.x, touchPoint.y)){
        // if its not moving already, set the right targettile here
    }
}

没人已经说过,你在三角洲中的呈现的方法,或你的参数可以起到任何其它使用的地方:

Gdx.graphics.getDeltatime();

引用:

官方微信
官方QQ群
31647020