我是Löve的新手,对于我可能已经说过的任何错误表示抱歉。 我已经看过Gridlocked Player教程,我想基于另一个人做类似的事情。它是一个看不见的迷宫,当你触摸它们时会绘制它们。
LastName
我的斗争是,只要角色(小方框)离开“地图”,就会发生以下错误:Error。
我想显示一些屏幕,这意味着当它离开迷宫时水平已经完成,但我几乎不知道如何解决这个问题。
答案 0 :(得分:1)
问题出在seen_tiles[(player.grid_y / 32) + y][(player.grid_x / 32) + x] = 1
您正在尝试更改因不在网格中而不存在的数组项。
尝试阻止播放器首先离开网格,或者将上面引用的代码放到一个函数中,并在执行任何操作之前检查数组中的项是否存在。
答案 1 :(得分:0)
当从数组进行操作或读取时,应检查每个查找步骤是否存在,否则在尝试访问不存在的内容时会出错。
因此,对于map[a][b]
,您检查map[a] ~= nil and map[a][b] ~= nil
是否已声明地图图块。如果您在未声明map[a][b]
或map
时尝试访问map[a]
,则在尝试访问不存在的内容时会出错。
这适用于创建,读取和更改数组及其内容。
示例:
添加新数组到地图:if map[a] ~= nil then map[a][b] = {}; else map[a] = {}; map[a][b] = {}; end
- 在声明map[a]
之前检查map[a][b]
是否存在,然后创建以防万一,因为Love2d会尝试访问{{1}首先是map
,然后在里面创建map[a]
。
如果找不到[b]
或map
,而不是创建要插入的新数组,则会导致错误。
在地图上查找值:map[a]
- 如果您尝试查找if map[a] ~= nil then result = map[a][b]; else result = "map[a] doesnt exist so doesnt map[a][b]"; end
,则Love2d将尝试访问map[a][b]
,然后在地图中访问map
,然后会看看[a]
里面的内容。如果在到达[b]
之前未能找到map
或map[a]
,而不是检索map[a][b]
,则会导致错误。