Ram*_*ama 5 java 2d sprite multidimensional-array
我正在用像Bomberman(我的第一个游戏)编写一个基于Java平铺的Java游戏.
我使用2D数组来表示我跟踪墙壁,步行空间等的地图.到现在为止,我能够让玩家根据他按下的方向键(但不与背景/地图交互)平滑地交换精灵,它可以随机走动并走出屏幕).
当我想跟踪玩家在阵列中的位置时,我的问题出现了.从逻辑上讲,角色总是只属于一个瓷砖,但在图形上它可以在两个瓷砖之间.我该如何解决这个问题?
我已经尝试过了:
currentTileArrayX = x/tileWidth;
currentTileArrayY = y/tileHeight;
其中x和y是精灵的左上角坐标.但是一切都变得非常多,因为玩家的精灵与瓷砖的尺寸不同.
我有另一个选项可以解决上一个问题:当玩家按下一个方向键时,将该角色移动到下一个方块,就像动画一样.这不会让玩家停在两块瓷砖的中间......但是如果他用另一台按键打断它呢?如何在动画执行时停止用户的操作?我认为这是最简单的解决方案,但我不知道如何实现它.
我已经尝试在其他问题中找到解决方案,但我没有运气.我希望你能帮助我.
非常感谢.
啊啊啊啊啊啊啊!遇到“离散空间问题”:) 你的逻辑图是离散的,但你的 UI 运动是在连续空间中的。我不认为用户实际上可以“同时”处于两个图块中 - 视觉上是的,但永远不会“内部”。现在您正在获取玩家的位置,可以说它可以是图块内的“任何位置”或 2 个图块的“边界上”......
IMO,这个问题有两种解决方案:
if(currentPosition - boundary <= 0.000000001),然后假设它是下一个图块,否则留在同一个图块上。 更新()
{
计算(); //更新所有数据结构/计算
画(); //根据计算更新视觉表示
}
update()又名游戏循环。我想这应该可以解决你的问题......