我正在开发基于图块的游戏。但是,由于家具等因素,我的地图有多个图层。我(暂时)创建了一个广场来代表我的球员。为了阻止我的玩家在家具上行走,我需要制作一个检查图层的功能。我怎么做? (假如我需要在平铺层检查到我的球员立即右) 伪代码的想法:如何阻止玩家穿越图层?
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语句然后我就可以使用得到的结果,并决定是否将我的角色或没有。
我没有使用STI,我使用的是Advanced Tiled Loader。 https://github.com/Kadoba/Advanced-Tiled-Loader – Forrest4096 2014-09-24 07:25:52
ATL不再被维护并已被弃用。 STI以各种方式取代ATL。我强烈建议切换。 https://love2d.org/forums/viewtopic.php?f=5&t=2567&hilit=advanced&start=240#p159482 – Karai17 2014-09-24 15:50:01
试过,没有工作 – 2017-01-04 10:25:03