JavaLibGDX:如何实现基于平铺/网格的平滑游戏角色移动?
由于害怕重新发明轮子,我想知道:
使用libGDX在自上而下的平铺(2D)地图上实现基于网格的游戏角色平滑移动的最佳方法是什么
只要按下箭头键(或在角色的特定方向上发生触摸事件),角色就应在平铺之间平稳移动,并应在按键/触摸释放时限制在网格位置完成。移动应独立于帧速率
我很高兴看到一些已经实现的示例,这些示例可以被研究并引导libgdxapi的正确使用
你可以在下面搜索框中键入要查询的问题!
由于害怕重新发明轮子,我想知道:
使用libGDX在自上而下的平铺(2D)地图上实现基于网格的游戏角色平滑移动的最佳方法是什么
只要按下箭头键(或在角色的特定方向上发生触摸事件),角色就应在平铺之间平稳移动,并应在按键/触摸释放时限制在网格位置完成。移动应独立于帧速率
我很高兴看到一些已经实现的示例,这些示例可以被研究并引导libgdxapi的正确使用
# 1 楼答案
这只适用于一个维度,但我希望你能理解,通过检查方向键并加/减1,然后将其转换为int(或地板),你将获得下一个瓷砖。如果释放键,仍然有一个未到达的目标,实体将继续移动,直到到达目标磁贴。我想它看起来是这样的:
# 2 楼答案
测试是否按下(或触摸屏幕)特定按钮,如果按下,则在一个场地中设置正确的目标磁贴(玩家将去的磁贴)并开始移动,该移动仅在玩家进入下一个磁贴时结束。发生这种情况时,再次检查输入以保持移动(即重复)
假设您的瓷砖宽度/高度为1,并且希望每秒移动1块瓷砖。用户按了向右箭头键。然后你只需将目标文件设置为玩家右边的磁贴
此代码仅针对右移动进行了简化,您还需要针对其他方向进行简化
如果玩家没有移动,不要忘记再次轮询输入
编辑:
键的输入轮询:
InputPolling for touchs(cam是您的相机,touchPoint是一个矢量,用于存储未投影的触摸坐标,moverightBounds是一个(libgdx)矩形):
而且noone已经说过了,你可以在render方法中获得delta作为参数,或者你可以在其他任何地方使用:
参考资料: