我正在開發基於圖塊的遊戲。但是,由於傢俱等因素,我的地圖有多個圖層。我(暫時)創建了一個廣場來代表我的球員。爲了阻止我的玩家在傢俱上行走,我需要製作一個檢查圖層的功能。我怎麼做? (假如我需要在平鋪層檢查到我的球員立即右) 僞代碼的想法:如何阻止玩家穿越圖層?
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