setTileAltitude(integer x, integer y, integer height)
Sets the altitude of a particular tile. This is the height in pixels from the mid point of the tiles natural base to adjust character positions by when walking over the map. For example, if your tiles are 128px wide then their base diamond must be 64px tall, and therefore the natural mid point of this diamond must be 32px from the bottom of the sprite canvas. If however you want your map to have hills, some land tiles might be rendered around a mid-point that's for example 100px from the bottom of the canvas instead. This is 68px higher up than the natural mid-point, so you need to tell Qiso that this tile has an altitude of 64 so that it can adjust character positions accordingly.
local qiso = require "plugin.qisoengine"
qiso.setAssetsFolder("assets")
qiso.loadTiledMap("sample-tilemap")
-- Increase the altitude of tile 6x8 by 30px, so that characters are positioned 30px higher up on this tile.
qiso.setTileAltitude(6, 8, 30)
-- Load a spritemap for use as a character. Sequences must be given compass names, like this...
-- Dummy character asset can be downloaded from the Qiso website.
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 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)