Difference between revisions of "Love - Using a TMX Map"
(→Setup) |
(→Setup) |
||
Line 16: | Line 16: | ||
<syntaxhighlight lang=lua> | <syntaxhighlight lang=lua> | ||
− | local player = nil | + | local player = nil -- variable to store player |
function love.load() | function love.load() | ||
Line 34: | Line 34: | ||
if obj.name == "Player" then | if obj.name == "Player" then | ||
print(obj.name) | print(obj.name) | ||
− | obj.texture = image | + | obj.texture = image -- give it a texture |
− | map.camera.Object=obj | + | map.camera.Object=obj -- set the camera to follow this object |
− | map.camera:update() | + | map.camera:update() -- update the camera position |
− | player=obj | + | player=obj -- pass the object and store it has player |
end | end | ||
end | end | ||
Line 44: | Line 44: | ||
end | end | ||
+ | -- code to draw the map | ||
function love.draw() | function love.draw() | ||
local ftx, fty = math.floor(tx), math.floor(ty) | local ftx, fty = math.floor(tx), math.floor(ty) | ||
Line 53: | Line 54: | ||
end | end | ||
+ | -- update method to move the player object | ||
function love.update(dt) | function love.update(dt) | ||
local difx = 0 | local difx = 0 | ||
Line 79: | Line 81: | ||
if change==true then | if change==true then | ||
− | map:forceRedraw() | + | map:forceRedraw() -- this will force the map to redraw after movement |
end | end | ||
Revision as of 15:35, 29 December 2020
Advanced Tiled Loader
Have a look at his GitHub repository:
It was initially an abandoned project, but with a little bit of work is fully working again. It will be suitable for students creating an RPG style game.
Setup
You can download the zip file from this link: download
Extract the zip and copy the 'Advanced-Tiled-Loader' folder into your LOVE project folder (same directory as the 'main.lua').
In your TMX map, create an object on an object layer called 'Player'.
Copy this code for the 'main.lua'
local player = nil -- variable to store player
function love.load()
local loader = require("Advanced-Tiled-Loader.Loader")
loader.path = "Maps/" --Change this to wherever your .tmx files are
map = loader.load("untitled.tmx") --Change this to the name of your mapfile
tx = 0
ty = 0
scale = 2 -- Adjust zoom with this
image=love.graphics.newImage("Maps/test.png") --Image to use for player
-- This will go through the layers in the map, find the object layer and the player object
for _, layer in pairs(map.layers) do
if layer.class == "ObjectLayer" then
for _, obj in pairs(layer.objects) do
if obj.name == "Player" then
print(obj.name)
obj.texture = image -- give it a texture
map.camera.Object=obj -- set the camera to follow this object
map.camera:update() -- update the camera position
player=obj -- pass the object and store it has player
end
end
end
end
end
-- code to draw the map
function love.draw()
local ftx, fty = math.floor(tx), math.floor(ty)
love.graphics.push()
love.graphics.scale(scale)
love.graphics.translate(ftx, fty)
map:draw()
love.graphics.pop()
end
-- update method to move the player object
function love.update(dt)
local difx = 0
local dify = 0
change = false
if love.keyboard.isDown("up") then
dify=100*dt
change = true
end
if love.keyboard.isDown("down") then
dify = -100*dt
change = true
end
if love.keyboard.isDown("left") then
difx= 100*dt
change = true
end
if love.keyboard.isDown("right") then
difx= -100*dt
change = true
end
player.x = player.x-difx
player.y = player.y-dify
if change==true then
map:forceRedraw() -- this will force the map to redraw after movement
end
end
Other Options
For example the STI project: STI
Setup tutorial: Tutorial