Defold是一个全3D引擎, 但是设计上还是为2D提供强大支持的. 目前该引擎比较适用于开发2D游戏.
Defold中, 可视组件使用两种图片资源:
更多详情参见 图集教程.
更多详情参见 Tile source manual.
从图集或者瓷砖图源资源获得的数据可以用于几种可视组件:
Sprite更多详情请见 Sprite manual.
瓷砖地图更多详情请见 Tilemap manual.
粒子特效更多详情请见 Particle fx manual.
GUI更多详情请见 GUI manual.
Spine模型更多详情请见 Spine model manual.
模型直接从图片文件获取数据, 然后根据模型的UV映射到模型上:
模型更多详情请见 Model manual.
Defold 目前只支持烘焙动画. 动画需要每帧每个骨骼的数据矩阵, 而不是仅仅是关键帧上的移动旋转缩放数据.
动画是线性插值的. 如果你想要曲线插值的动画, 记得先烘焙再导出.
不支持Collada中的动画剪辑. 要想一个模型多个动画, 就得分成多个 .dae 文件然后在Defold里合成一个 .animationset 文件.
你还需设计和实现一个合适的游戏摄像机.
built-in materials 文件夹下有一个简单的3D材质. 如果你需要为模型设计自定义材质, 详情请参考 Material documentation. Shader manual介绍了着色器程序是如何工作的.
function init(self)
self.model_pred = render.predicate({"model"})
...
end
function update()
...
render.set_depth_mask(true)
render.enable_state(render.STATE_DEPTH_TEST)
render.set_projection(stretch_projection(-1000, 1000)) -- orthographic
render.draw(self.model_pred)
render.set_depth_mask(false)
...
end
渲染脚本如何工作详情请见 Render documentation.
你可以控制在纹理采样时完成的过滤方法. 比如当一个 纹素 (纹理上的一个像素) 不是和屏幕完美的像素对齐时, 可以由过滤器决定显示结果 . 当你移动一个带纹理的图像元素少于一个像素时它就会发生. 下面的过滤方法是可选的:
采样的设置保存在 Project Settings 文件中. 有两个设置:
两种设置都可接受 linear
或者 nearest
的设置. 比如:
[graphics]
default_texture_min_filter = nearest
default_texture_mag_filter = nearest
如果不设置, 两项默认都是 linear
.
注意默认采样器使用 game.project 里的设置. 如果你为自定义材质指定了采样器, 你可以为每个采样器单独指定过滤方法. 详情请见 Materials manual.
默认材质和着色器文件位于项目的 “/builtins/materials/” 下. Sprite, 瓷砖, spine 模型 和 3D模型的默认材质从 game.project 中设置的采样和过滤中查找纹理. 片元着色器还使用与纹理颜色相乘的叫做 tint
的常量.
当游戏运行时, 你可以使用 sprite.set_constant()
和 sprite.reset_constant()
函数设置 tint
和其他着色常量设置 tint
和其他着色常量. sprite 以外的组件也有相应的函数.
Materials manual 解释了如何创建自定义材质.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB