我正在尝试创建一个类似 pacman 的游戏。我有一个看起来像这样的数组:
大批:
1111111111111
1000000000001
1111110111111
1000000000001
1111111111111
1 = 墙壁,0 = 空白空间
我使用这个数组来绘制大小为 16x16 的图块。游戏角色为 32x32。
最初我表示字符在数组索引中的位置,[1,1] 等。
如果 array[character.new_y][charater.new_x] == 0 我会更新他的位置
然后我将这些数组坐标转换为像素 [y*16, x*16] 来绘制他。
他排得很好,不会撞墙,但我注意到,由于我将他每一个更新了 16 个像素,他的移动速度非常快。
我决定反过来做,以像素为单位存储游戏角色的位置,这样他每次移动可以使用少于 16 个像素。
我认为一个简单的 if 语句是这样的:
if array[(character.new_pixel_y)/16][(character.new_pixel_x)/16] == 0
会阻止他进入墙壁,但不幸的是他吃了一点底部和右侧的墙壁。
任何想法如何正确地将像素位置转换为数组索引?我想这很简单,但我真的想不通:(