Defold 核心是3D的. 就算只有2D材质的话渲染也是3D的, 只不过是映射到平面屏幕上而已. Defold 允许在集合中使用 3D 资源, 或者称作 模型 . 你可以用Defold制作全3D的, 或者2D和3D混合的游戏.
Model 组件和其他游戏对象组件一样, 两种创建办法:
模型组件需要设置一些属性:
除了常见的 Id, Position 和 Rotation 属性, 模型组件还有如下特有属性:
有了模型组件就可以使用随意使用组件功能同时可以使用 Scene Editor 工具移动, 旋转和缩放模型游戏对象了.
有一套用于在运行时修改模型的方法和属性 (参见 API文档).
Defold 提供了强大的运行时动画控制方法:
local play_properties = { blend_duration = 0.1 }
spine.play_anim("#model", "jump", go.PLAYBACK_ONCE_FORWARD, play_properties)
可以手动播放动画甚至使用属性动画系统控制播放头:
-- set the run animation
model.play_anim("#model", "run", go.PLAYBACK_NONE)
-- animate the cursor
go.animate("#model", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_LINEAR, 10)
使用 go.get()
和 go.set()
方法可以修改模型的属性:
animation
hash
) (只读). 使用 model.play_anim()
方法来更改播放动画 (见上文).cursor
number
).material
hash
). 可使用 go.set()
修改. 参见 这个例子的 API 用法.playback_rate
number
).textureN
hash
). 可使用 go.set()
修改. 参见 这个例子的 API 用法.3D 一半都有给网格赋予材质的功能, 比如颜色和贴图. 在 Collada .dae 文件输出时, 这些信息被写入文件. 应该基于游戏需要选择或者建造 高性能 材质. 材质由 着色器程序 及其若干相关属性组成.
在内置材质文件夹里有一个3D模型材质. 如果需要自定义材质, 请参考 材质文档. 着色器教程 介绍了着色器程序的工作方式.
默认 model 材质常量可以使用 go.set() 或 go.animate() 来修改 (参考 材质教程). 例如:
go.set("#model", "tint", vmath.vector4(1,0,0,1))
go.animate("#model", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tint
vector4
). 四元数 x, y, z, 和 w 分别对应红, 绿, 蓝和不透明度.默认的渲染脚本是为2D游戏而不是3D模型制作的. 但是你可以把默认渲染脚本拷贝出来, 自己加几行代码就能用来渲染模型. 比如:
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.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB