저는 타일 기반의 게임을하고 있습니다. 그러나 가구와 같은 물건으로 인해 내지도에는 여러 개의 레이어가 있습니다. 나는 (당분간은) 내 선수를 대표하는 사각형을 만들었다. 플레이어가 가구를 사용하는 것을 막으려면 레이어를 확인하는 기능을 만들어야합니다. 어떻게해야합니까?플레이어가 레이어를 통과하지 못하게하는 방법은 무엇입니까?
function checkLayers()
for every layer in map
if layer == "furniturelayer" then
stop player
end
end
end
편집 : 의사 코드 아이디어 (내 플레이어의 바로 오른쪽에있는 타일에 레이어를 확인해야 가정하면) 내가 할 수있는 가능한 방법을 발견했지만 작동하지 않습니다. 나는 collidable 모든 타일의 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
그때 문 경우 결과를 얻기 위해를 사용하여 내 캐릭터를 이동할지 여부를 결정할 수 있습니다.
STI를 사용하지 않고 Advanced Tiled Loader를 사용하고 있습니다. https://github.com/Kadoba/Advanced-Tiled-Loader – Forrest4096
ATL은 더 이상 유지 관리되지 않으며 더 이상 사용되지 않습니다. STI는 모든면에서 ATL을 대체합니다. 나는 전환을 적극 권장 할 것이다. https://love2d.org/forums/viewtopic.php?f=5&t=2567&hilit=advanced&start=240#p159482 – Karai17
시도해 보았습니다. 작동하지 않았습니다. –