[CoronaSDK] Criando um mapa com Colisões usando Tiled, CoronaSDK e LIME

Colisões são um dos recursos mais utilizados em jogos. Aprenda a defini-los usando as ferramentas Tiled e Lima, por meio do CoronaSDK.

1 – Abra o Tiled e crie um novo mapa.

Capturar

2 – Importe um Tileset usando o menu Map – New Tileset

3 – Renomeie a camada Tile Layer 1 para background

Capturar2

4 – Para cada tile que for possuir colisão (aqui usaremos um pilar), clique com o botão direito em cima dele e clique em propriedades.

captura3

5 – Digite as seguintes propriedades:

Capturar4

6 – Crie seu mapa

Capturar5

7 – Salve o arquivo no formato .tmx e jogue o arquivo para dentro da pasta do seu projeto.

8 – No CoronaSDK importaremos o mapa usando o LIME.

9 – A seguir segue um código contendo um arquivo com a classe do personagem e o main.lua.

player.lua

Player = {}
function Player:new()
    local sheetInfo = require ("character")
    local imagesSheet = graphics.newImageSheet("character.png", sheetInfo:getSheet()) --normal
    local sequenceData = {
        { name="walking", start=7, count=2, time=800, loopCount=0 }, 
    };
    local player = display.newSprite(imagesSheet, sequenceData) --normal
    player:setSequence("walking");
    player:play();

    return player 
end
return Player

main.lua

local physics    = require("physics")
require "player"
lime = require("lime.lime")

display.setStatusBar( display.HiddenStatusBar )

physics.start()

function loadMap(tmx)	
	-- Load the map into our instance of lime
	map = lime.loadMap(tmx)

	-- Tell lime to create the visual aspect of the world
	visual = lime.createVisual(map)

	--Tell lime to create the physics bodies needed for the world
	local physical = lime.buildPhysical(map)
end

loadMap("mapa1.tmx")

physics.setGravity(0, 0)

_G.player1 = Player:new()
_G.player1.x = 350
_G.player1.y = screenH/2
physics.addBody(_G.player1)

map:getTileLayer("background"):addObject(_G.player1)
map:setFocus(_G.player1)

Execute o simulador e teste a colisão do personagem com o pilar

Capturar6

PS: as vezes a imagem não aparece. A solução encontrada foi jogar o tileset também dentro da pasta do projeto.