摄像机
在 YAHAHA 中,摄像机对象(camera objects)就像通往 3D游戏世界的窗口,提供不同的视角和画面。你可以在场景中添加多个摄像机,但同一时刻只能有一个处于激活状态,作为游戏观察世界的“眼睛”。
关键要素
摄像机对象的属性(properties)对于定义 3D游戏世界的视角和探索方式至关重要。以下是最重要的属性:
- 虚拟摄像机名称(Virtual Camera Name) 属性用于标识一个虚拟摄像机。
- 摄像机模式(Camera Mode) 属性提供预设的摄像机选项。
- 视场角(FOV) 属性表示可见世界的范围。
- 跟随目标(Follow Target) 属性决定摄像机跟随的目标。
- 注视目标(LookAt Target) 属性决定摄像机始终聚焦的目标。
- 启用物理(Enable Physics) 属性控制摄像机的碰撞体是否激活。
如何使用摄像机
默认摄像机
每个基于模板的新项目都会自动创建一个名为 Default 的虚拟摄像机。它类似于 3D RPG 游戏中的摄像机,从第三人称视角跟随玩家角色,支持缩放、围绕角色旋转,并在靠近碰撞体时自动避让。
添加摄像机
要创建摄像机:
- 快速设置:从 资产库(Asset Library) 选择摄像机组件(如 RTS、横版、俯视)即可快速开始。
- 高级配置:使用 高级模式(Advanced Mode) 下的摄像机模块(camera module)。
当你从资源库添加摄像机组件时,会自动生成一个不可重命名的 Default 摄像机。为避免冲突,创建新摄像机前请先移除已存在的 Default 摄像机。
如果你需要更多自定义选项,摄像机模块还提供了额外功能。除了 Default 摄像机,还有内置的 Gun 和 Car 两种摄像机。你还可以更精细地控制摄像机,例如将 摄像机模式(Camera Mode) 设为 EntityControl,并通过脚本修改挂载对象的变换(transform),从而控制摄像机的位置和朝向。
切换摄像机
要在摄像机间切换,可调用 YaVirtualCameraAPI.ActiveCameraByEntity 或 YaVirtualCameraAPI.ActiveCameraByName。
代码示例
-- 客户端脚本:当触发区被激活时,2 秒内切换到该区域绑定的摄像机
local self = script:SelfEntity()
PhysicsAPI.Instance(self):OnTriggerEnter(function(entity)
local character = YaScene:GetComponent(script:GetComponentType("YaCharacterComponent"), entity)
if character== nil then
return
end
YaVirtualCameraAPI.ActiveCameraByEntity(self,2)
end)
你也可以将新摄像机命名为 Default,以覆盖默认摄像机的属性,从而获得不同的游戏视角。
示例摄像机
以下为使用高级模式摄像机模块配置的四种示例摄像机:
第三人称摄像机(Third-person camera)
| 参数设置(Configurations) | 游戏视图(Game view) |
|---|---|
![]() | ![]() |
注意(Note):如果将 最小距离(Min Distance)、最大距离(Max Distance) 和 默认距离(Default Distance) 都设为 0,并关闭 启用物理(Enable Physics),即可获得第一人称射击(FPS)摄像机,体验角色视角。
RTS 摄像机(RTS camera)
| 参数设置) | 游戏视图 |
|---|---|
![]() | ![]() |
固定摄像机(Fixed camera)
| 参数设置 | 游戏视图 |
|---|---|
![]() | ![]() |
EntityControl 摄像机
摄像机的变换(transform)会动态跟踪对象的移动和旋转。
| 参数设置 | 游戏视图 1 | 游戏视图 2 |
|---|---|---|
![]() | ![]() | ![]() |
使用汇编器设置摄像机
除了挂载组件外,你还可以通过汇编器(assemblers)设置主摄像机,玩家可自由自定义。这些摄像机不包括用于叙事片段的电影或脚本摄像机。
添加汇编器的方法:打开 资产箱(Asset Box),进入 逻辑(Logic) > 汇编器(Assemblers),找到五种摄像机汇编器。点击汇编器即可设置和配置摄像机。

俯视 2D 摄像机(Top-down 2D camera)
经典的俯视视角,适用于 2D 俯视类游戏。


| 属性 | 说明 | 默认(近) | 默认(中) | 默认(远) | 范围 |
|---|---|---|---|---|---|
| 深度(Depth/At depth) | 调整摄像机高度(景深) | 3 | 6 | 9 | 2~12 |
| 视场角(Field of view/FOV) | 控制摄像机视角 | 40 | 40 | 40 | 30~60 |
视角控制(View Control):优先灵活性(Flexibility Preferred),支持平滑自定义的摄像机移动。
第三人称 3D 摄像机(Third-person 3D camera)
跟随玩家身后的多功能摄像机,常见于 3D 动作冒险游戏。


| 属性 | 说明 | 默认(近) | 默认(中) | 默认(远) | 范围 |
|---|---|---|---|---|---|
| 默认距离(Default distance) | 与玩家的距离 | 3.5 | 5 | 6.5 | / |
| 高度偏移(Height offset) | 相对玩家的垂直偏移 | 0.1 | 0.1 | 0.1 | -0.5~0.5 |
| 视场角(Field of view/FOV) | 摄像机视角 | 40 | 40 | 40 | 30~60 |
| 启用物理(Enable physics) | 摄像机物理碰撞 | 启用 | 启用 | 启用 | 启用/禁用 |
| 灵敏度(Sensitivity) | 摄像机旋转灵敏度 | 0.3 | 0.3 | 0.3 | 0.1~3 |
视角控制:优先灵活性(Flexibility Preferred),支持流畅的玩家输入响应。
横版 3D 摄像机(Side-scroll 3D camera)
为横版游戏设计的 3D 摄像机,提供带景深的固定侧视角。


| 属性 | 说明 | 默认(近) | 默认(中) | 默认(远) | 范围 |
|---|---|---|---|---|---|
| 深度(Depth/At depth) | 摄像机高度或深度位置 | -5 | -7 | -9 | -10~-2 |
| 视场角(Field of view/FOV) | 摄像机视角 | 50 | 50 | 50 | 30~60 |
视角控制:优先灵活性(Flexibility Preferred),适合流畅的横版玩法。
横版 2D 摄像机(Side-scroll 2D camera)
固定深度的 2D 横版摄像机。


| 属性 | 说明(Description) | 默认(近) | 默认(中) | 默认(远) | 范围 |
|---|---|---|---|---|---|
| 深度(Depth/At depth) | 摄像机高度或深度位置 | -3 | -5 | -7 | -10~-2 |
视角控制:优先灵活性(Flexibility Preferred),适合 2D 横版机制。
RTS(即时战略)摄像机(RTS (Real-Time Strategy) camera)
带有可调节方向和缩放的战略俯视摄像机,适用于 RTS 游戏。


| 属性 | 说明) | 默认(近) | 默认(中) | 默认(远) | 范围 |
|---|---|---|---|---|---|
| 方向(At orientation) | 摄像机旋转角度(X, Y, Z) | 45°,45°,0° | 45°,45°,0° | 45°,45°,0° | / |
| 默认距离(Default distance) | 与焦点的距离 | 4 | 7 | 10 | / |
| 视场角(Field of view/FOV) | 视角 | 40 | 40 | 40 | 30~60 |
| 灵敏度(Sensitivity) | 摄像机旋转灵敏度 | 0.3 | 0.3 | 0.3 | 0.1~3 |
视角控制:优先光标(Cursor Preferred),便于精确操作摄像机。
相关文档
关于摄像机模块的更多信息,参见 摄像机模块。
如需了解如何使用资源库中的摄像机组件,参见 使用摄像机。








