keepCharactersAboveLayer(integer frame)
Forces a tile layer to remain under the characters that are on the same tile. This is the natural behaviour of all tile layers so you'd only need to use this to reverse the effect of keepLayerAboveCharacters().
local qiso = require "plugin.qisoengine"
qiso.setAssetsFolder("assets")
qiso.loadTiledMap("sample-tilemap")
-- Foreground facing tile layers, like SW / SE walls need keeping above characters located on the same tile
qiso.keepLayerAboveCharacters(9)
qiso.keepLayerAboveCharacters(12)
-- Move tile layers back to behind the characters.
qiso.keepCharactersAboveLayer(9)
qiso.keepCharactersAboveLayer(12)
-- Load a spritemap for use as a character. Sequences must be given compass names, like this...
local playerMap = graphics.newImageSheet(qiso.getAssetsFolder() .. "/dummy.png", { width = 256, height = 512, numFrames = 64, border = 0 })
local playerSprites = {
{ name = 'standing-north', frames = { 25 } },
{ name = 'standing-north-east', frames = { 17 } },
{ name = 'standing-east', frames = { 9 } },
{ name = 'standing-south-east', frames = { 1 } },
{ name = 'standing-south', frames = { 57 } },
{ name = 'standing-south-west', frames = { 49 } },
{ name = 'standing-west', frames = { 41 } },
{ name = 'standing-north-west', frames = { 33 } },
{ name = 'walking-north', frames = { 25, 26, 27, 28, 29, 30, 31, 32 }, time = 750, loopCount = 0, loopDirection = 'forward' },
{ name = 'walking-north-east', frames = { 17, 18, 19, 20, 21, 22, 23, 24 }, time = 750, loopCount = 0, loopDirection = 'forward' },
{ name = 'walking-east', frames = { 9, 10, 11, 12, 13, 14, 15, 16 }, time = 750, loopCount = 0, loopDirection = 'forward' },
{ name = 'walking-south-east', frames = { 1, 2, 3, 4, 5, 6, 7, 8 }, time = 750, loopCount = 0, loopDirection = 'forward' },
{ name = 'walking-south', frames = { 57, 58, 59, 60, 61, 62, 63, 64 }, time = 750, loopCount = 0, loopDirection = 'forward' },
{ name = 'walking-south-west', frames = { 49, 50, 51, 52, 53, 54, 55, 56 }, time = 750, loopCount = 0, loopDirection = 'forward' },
{ name = 'walking-west', frames = { 41, 42, 43, 44, 45, 46, 47, 48 }, time = 750, loopCount = 0, loopDirection = 'forward' },
{ name = 'walking-north-west', frames = { 33, 34, 35, 36, 37, 38, 39, 40 }, time = 750, loopCount = 0, loopDirection = 'forward' }
}
-- Add a character at tile 6x8 using the dummy spritemap, and then focus the camera on that tile.
qiso.addCharacter("Player", playerMap, playerSprites, "standing", 6, 8)
qiso.goTo(6, 8)
-- Enable camera panning when the screen is dragged
qiso.enableCameraPan()
-- Enable the main Qiso loop to render/update our world
qiso.activate()
-- Walk the player to the tapped tile
function tapTile(event)
-- Get the tile located where the screen was tapped. If there is no tile here, getTile returns nil.
local tile = qiso.getTile(event.x, event.y)
if(tile ~= nil) then
-- path-find to the tapped location, using the walking sequences defined above.
qiso.moveCharacter("Player", tile.x, tile.y, "walking", 1000)
end
end
-- Do something when the screen is tapped
Runtime:addEventListener('tap', tapTile)