【问题标题】:LOVE2D game engine ; 2D platformer collision systemsLOVE2D游戏引擎; 2D 平台游戏碰撞系统
【发布时间】:2015-05-20 17:22:44
【问题描述】:

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

所以我设置了我的播放器和地面,并对它们应用了重力和碰撞边界(图 1 反映了这种情况)。无论如何,这是棘手的部分,如何将碰撞系统添加到平台 1、2 和 3? 我不想使用“平铺地图编辑器”等。目标是使用 Photoshop 和 Illustrator 创建关卡并将其带到游戏世界。

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

【问题讨论】:

  • 平台与其他地面有何不同?
  • 我可以像地面一样做,但我希望使用 Photoshop 设计关卡;创建平台 1,2,3 并将它们带到游戏场景并应用碰撞
  • 所以您希望在背景图像中使用白色像素绘制的矩形成为物理实体,而无需明确写出它们的位置和大小?
  • 对不起,如果我的问题很困惑,但几乎是肯定的,但不是自动的..寻找更好的编码方式..我认为会有某种方法可以更有效地做到这一点。跨度>
  • 上图只是我的原型,我的伙伴正在使用 Photoshop 进行游戏关卡和设计...

标签: lua 2d love2d


【解决方案1】:

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

示例数据文件可能如下所示

 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

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多