如何使用数组在基于2D平铺的游戏中协调图形和逻辑位置?
我正在用像Bomberman(我的第一个游戏)编写一个基于Java平铺的Java游戏. 我使用2D数组来表示我跟踪墙壁,步行空间等的地图.到现在为止,我能够让玩家根据他按下的方向键(但不与背景/地图交互)平滑地交换精灵,它可以随机走动并走出屏幕). 当我想跟踪玩家在阵列中的位置时,我的问题出现了.从逻辑上讲,角色总是只属于一个瓷砖,但在图形上它可以在两个瓷砖之间.我该如何解决这个问题?
我有另一个选项可以解决上一个问题:当玩家按下一个方向键时,将该角色移动到下一个方块,就像动画一样.这不会让玩家停在两块瓷砖的中间……但是如果他用另一台按键打断它呢?如何在动画执行时停止用户的操作?我认为这是最简单的解决方案,但我不知道如何实现它. 我已经尝试在其他问题中找到解决方案,但我没有运气.我希望你能帮助我. 非常感谢. 最佳答案
Aaaaaaaaaaaaaaah!遇到“离散空间问题”:)你的逻辑映射是离散的,但你的UI运动是在连续的空间.我不是用户实际上可以“同时”在两个区块中 – 视觉上是,但从不’内部’.现在你正在获得玩家的位置,这可以是在瓷砖内的“任何地方”或2个瓷砖的“边界”,可以这么说……
你有两个解决这个问题的方法,IMO: >使用简单的舍入:如果玩家位置是<瓷砖边界只是让他在前一个瓷砖上.如果下一个更大.现在边界的问题 - 你可以使用启发式,因为你不应该相信浮点比较的准确性(即,比较0不是一件好事).所以你可以尝试这样的东西if(currentPosition - boundary< = 0.000000001)然后假设它是下一个tile保持在同一个. update() { calculate(); //update all datastructures/calculations draw(); //update the visual representation based on calculations } update()是a.k.a,gameLoop.我认为这应该可以解决你的问题…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |