我正在制作一个简单的基于平铺的游戏,其中包含:
我想做什么:在瓷砖地图中移动角色,尊重瓷砖地图中的碰撞图层。
以下是代码:
-- Load Map
local ceramic = require("Ceramic")
local map = ceramic.buildMap("maps/map.lua")
-- Create Character
hero = display.newImage("images/man.png")
hero.x = 0
hero.y = 0
map.layer['World']:insert(hero)
-- Create buttons
btnLeft = display.newImage("images/btnLeft.png", 10, 10)
btnRight = display.newImage("images/btnRight.png", 150, 10)
-- Button Event Listeners
btnLeft:addEventListener("tap", moveLeft)
btnRight:addEventListener("tap", moveRight)
-- Button functions
function moveLeft()
hero.x = hero.x - 50
end
function moveRight()
hero.x = hero.x + 50
end
问题是,地图与角色是分开的。如何将角色“放入”地图?我错过了什么?
注意:平铺贴图是自上而下的角度。
注意:地图有4层:背景,世界,门,碰撞,我希望玩家不要走进碰撞层的区域。
答案 0 :(得分:1)
为了让玩家发生碰撞,你需要实现某种类型的碰撞检测 - 无论是否有物理。
这意味着你可以......
Nota Bene:使用Ceramic时,使用Box2D更容易,但一旦Twilight Engine问世,非物理碰撞应该更容易使用。
这里我只给出Box2D的程序。通过将单个瓷砖物理化或使整个图层的瓷砖物理化,可以非常简单地完成。单个图块可以通过编辑图块属性并在其中添加physics:enabled = true来实现。要查看有关物理的更深入的解释,您可以查看this link。它也适用于单个瓷砖。
您可以通过将该属性添加到图层的属性列表来使整个图层物理化;要更改单个图块的物理主体,请编辑特定于图块的属性。