This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold 本质上是一个3D引擎。即使您只使用2D材质,所有渲染也是在3D中完成的,只是正交投影到屏幕上。Defold允许您通过在集合中包含3D资产或_模型_来充分利用完整的3D内容。您可以仅使用3D资产构建纯3D游戏,或者根据需要混合3D和2D内容。
模型组件的创建方式与任何其他游戏对象组件一样。您可以通过两种方式完成:
创建模型后,您需要指定多个属性:
除了Id、位置和旋转属性外,还存在以下组件特定属性:
有了模型组件后,您就可以自由地使用常规的场景编辑器工具编辑和操作组件和/或封装游戏对象,以按照您的喜好移动、旋转和缩放模型。
您可以通过多种不同的函数和属性在运行时操作模型(有关用法请参阅API文档)。
Defold为在运行时控制动画提供了强大的支持。更多内容请参阅模型动画手册:
local play_properties = { blend_duration = 0.1 }
model.play_anim("#model", "jump", go.PLAYBACK_ONCE_FORWARD, play_properties)
动画播放游标可以手动或通过属性动画系统进行动画处理:
-- 设置运行动画
model.play_anim("#model", "run", go.PLAYBACK_NONE)
-- 为游标设置动画
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软件通常允许您在对象顶点上设置属性,比如着色和纹理。这些信息会进入您从3D软件导出的glTF .gltf或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
)。vector4用于表示色调,x、y、z和w分别对应红色、绿色、蓝色和alpha色调。默认渲染脚本是为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
有关渲染脚本如何工作的详细信息,请参阅渲染文档。
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB