LOVE2D游戏引擎; 2D平台碰撞系统

时间:2015-03-18 02:54:08

标签: lua 2d love2d

我附上了2张照片。目前我正在进行简单的2d平台游戏;这个想法是玩家从屏幕的左下角开始,如果玩家在屏幕右下角捕获旗帜,玩家就会获胜并将玩家带到下一个级别。

所以我设置了我的播放器和地面,并将重力和碰撞界限应用于它们(图1反映了情况)。无论如何,这是一个棘手的部分,如何将碰撞系统添加到platform1,2和3? 我不想使用" Tiled Map Editor"或者这样。目标是使用Photoshop和&amp ;;创建关卡。插画家将这些带到游戏世界。

有什么想法和想法吗?或者任何建议?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

您可能希望为每个级别创建一个文件,指定平台的位置和大小以及其他任何内容,例如背景图像起始位置等。然后编写逻辑编码以加载该数据文件并创建物理实体等。那里的水平。

示例数据文件可能看起来像

 return {platforms={
             {x=200, y=200, width=10, height=20},
             {x=200, y=200, width=10, height=20},
             {x=200, y=200, width=10, height=20, type="brick"},
         },
         size={width=300,height=200},
         start={x=100,y=200},
         goal={x=200,y=100, nextlevel="desert"},
         background={image="bluelevel.png"}
 }

然后处理这些文件以通用方式创建级别:

function load_level(filename)
   data = dofile(filename)
    platforms = {}
    for i, p in ipairs(data.platforms) do
        body=love.physics.newBody(world, p.x, p.y, "static")
        shape=love.physics.newRectangle(p.width, p.height)
        fix=love.physics.newFixture(body, shape)
        platforms[i] = {body=body, shape=shape, fix=fix}
    end
    -- .... finish loading data
end