我正在用像Bomberman(我的第一个游戏)编写一个基于Java平铺的Java游戏.
我使用2D数组来表示我跟踪墙壁,步行空间等的地图.到现在为止,我能够让玩家根据他按下的方向键(但不与背景/地图交互)平滑地交换精灵,它可以随机走动并走出屏幕).
当我想跟踪玩家在阵列中的位置时,我的问题出现了.从逻辑上讲,角色总是只属于一个瓷砖,但在图形上它可以在两个瓷砖之间.我该如何解决这个问题?
I already tried this:
currentTileArrayX = x / tileWidth;
currentTileArrayY = y / tileHeight;
Where x and y are the top-left coordinates of the sprite.
But everything became very buggy because the player’s sprites aren’t the same size as the tiles.
我有另一个选项可以解决上一个问题:当玩家按下一个方向键时,将该角色移动到下一个方块,就像动画一样.这不会让玩家停在两块瓷砖的中间……但是如果他用另一台按键打断它呢?如何在动画执行时停止用户的操作?我认为这是最简单的解决方案,但我不知道如何实现它.
我已经尝试在其他问题中找到解决方案,但我没有运气.我希望你能帮助我.
非常感谢.
>使用简单的舍入:如果玩家位置是<瓷砖边界只是让他在前一个瓷砖上.如果下一个更大.现在边界的问题 - 你可以使用启发式,因为你不应该相信浮点比较的准确性(即,比较0不是一件好事).所以你可以尝试这样的东西if(currentPosition - boundary< = 0.000000001)然后假设它是下一个tile保持在同一个.
>好吧@Jay打败了我.所以第二个实际上是一个
定义移动速度并移动每步多步的角色
‘click’/’button press’ – 但你说你有钥匙的问题
压在“之间”.我猜你的代码是不是这样设计的
那应该不是问题:
update() { calculate(); //update all datastructures/calculations draw(); //update the visual representation based on calculations }
update()是a.k.a,gameLoop.我认为这应该可以解决你的问题……