我正在开发基于图块的游戏。但是,由于家具等原因,我的地图有多个图层。我(暂时)创建了一个正方形来代表我的玩家。为了阻止我的玩家在家具上行走,我需要创建一个检查图层的函数。我怎么做?(假设我需要检查播放器右侧的图块上的图层)伪代码想法:
function checkLayers()
for every layer in map
if layer == "furniturelayer" then
stop player
end
end
end
编辑:我找到了一种可能的方法,但它不起作用。我有一个包含所有可碰撞图块的 GID 的数组。然后我遍历所有层并检查图块是否具有该 GID。代码:
function gCheckGID(gMap, gLayer, tileX, tileY)
tilex = gMap.layers[gLayer]:get(tileX, tileY)
return tilex.id
end
function gCheckMovement(gMap, gArray, gTileX, gTileY)
local retVal = true
local layerArray = gMap.layers
local layers = table.getn(layerArray)
for layerCounter = 1, layers, 1 do
currGID = gCheckGID(gMap, layerArray[layerCounter], gTileX, gTileY)
for gidCounter = 1, table.getn(gArray), 1 do
if currGID == gArray[gidCounter] then
retVal = false
break
end
end
end
return retVal
end
然后我可以使用 if 语句来获取结果并确定是否移动我的角色。