java–libGDX:如何实现基于平铺网格的游戏角色运动?

java–libGDX:如何实现基于平铺网格的游戏角色运动?,第1张

概述因为害怕重新发明轮子,我想知道:使用libGDX在自上而下的Tiled(2D)地图上实现基于平滑网格的游戏角色移动的最佳方法是什么?只要按下箭头键(或者在角色的某个方向上发生触摸事件),角色就应该在瓷砖之间保持平滑移动,并且应该完成限制在按键/触摸释放上的网格位置.运动应独立于帧速率

因为害怕重新发明轮子,我想知道:

使用libGDX在自上而下的Tiled(2D)地图上实现基于平滑网格的游戏角色移动的最佳方法是什么?

只要按下箭头键(或者在角色的某个方向上发生触摸事件),角色就应该在瓷砖之间保持平滑移动,并且应该完成限制在按键/触摸释放上的网格位置.运动应独立于帧速率.

我会很高兴一些已经实现的示例可以研究并导致正确的libGDX API使用.

解决方法:

测试是否按下(或触摸屏幕)某个特定按钮,如果是,则在一个字段中设置正确的目标图块(玩家将要去的图块)并开始移动到那里,此运动仅在玩家处于下一个瓷砖.当发生这种情况时,再次检查输入以保持移动(即重复).

让我们假设,您的图块宽度/高度为1,并且您希望每秒移动1个图块.您的用户按右箭头键.然后你只需将目标设置到玩家右侧的方块即可.

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

此代码仅针对右移动进行了简化,您还需要将其用于其他方向.
如果玩家没有移动,请不要忘记再次轮询输入.

编辑:

输入密钥输入:

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

用于触摸的inputPolling(cam是您的相机,touchPoint是用于存储未投影触摸坐标的Vector3,以及moverightBounds a(libgdx)Rectangle):

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    }}

并且noone已经说过了,你在渲染方法中得到delta作为参数,或者你可以在其他任何地方使用:

Gdx.graphics.getDeltatime();

参考文献:

> InputPolling

总结

以上是内存溢出为你收集整理的java – libGDX:如何实现基于平铺/网格的游戏角色运动?全部内容,希望文章能够帮你解决java – libGDX:如何实现基于平铺/网格的游戏角色运动?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1114736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存