Solar2D
概述
Solar2D(原 Corona SDK)是以 Lua 为唯一脚本语言的 2D 游戏框架,通过 Runtime 事件系统驱动游戏逻辑,内置 display 对象系统和 Box2D 物理集成,适合移动端 2D 游戏开发。
关键内容
-
全 Lua 架构:Solar2D 与 Love2D 类似,属于"全 Lua"引擎路线。开发者所有逻辑均用 Lua 编写,无需接触 C/C++。
-
display 对象系统:通过
display.newRect、display.newCircle、display.newGroup等 API 创建可视对象。对象以 display group 组织层级,支持x/y/rotation/alpha等属性直接赋值。 -
物理集成:通过
require("physics")引入,physics.addBody(object, "static"|"dynamic", params)将任意 display 对象绑定物理属性(radius/friction/bounce/density)。重力通过physics.setGravity(x, y)设置。 -
Runtime 事件系统:使用
Runtime:addEventListener(eventName, handler)订阅全局事件。"enterFrame"用于帧更新,"collision"用于碰撞处理,"tap"用于触摸输入。与 Love2D 的回调函数风格不同,Solar2D 采用发布-订阅模式。 -
视口跟随:通过在
enterFrame中移动 display group 实现摄像机跟随(gameGroup.y = display.contentCenterY - player.y),是 Solar2D 的惯用模式。 -
移动端优先:Solar2D 原名 Corona SDK,面向 iOS/Android 移动端设计,提供原生触摸事件和设备传感器接口。
-
Composer 场景管理:
require("composer")引入场景路由系统,composer.gotoScene("scenes.game", {effect="fade", params={level=1}})切换场景。场景模块实现scene:create、scene:show(will/did 两阶段)、scene:hide、scene:destroy四个生命周期钩子,通过scene:addEventListener注册。 -
关节系统:
physics.newJoint("pivot", bodyA, bodyB, anchorX, anchorY)创建铰接关节,支持setRotationLimits限制旋转角度范围,是 Solar2D 实现布娃娃、机械臂等复杂物理结构的基础。
来源
- lua-gameengine-deep-research — 深度研究报告,Solar2D(Corona SDK)Lua 游戏开发架构与 API 分析