教程:相机系统/相机系统介绍

来自Minecraft基岩版开发Wiki
相机系统介绍
系列教程
所属系列
?
难度
初级
前置知识

前言[编辑]

Minecraft 有一个/camera命令,该命令增加了控制相机的能力,添加了全屏淡入淡出以获得更完美的体验。本教程详细介绍了其工作原理的所有相关细节,并可用于打造有趣的新体验。

预设[编辑]

预设定义可由 camera 是已提前准备的相机视角。它们可能是内置的,也有部分需要在 实验性玩法 中打开,下面有介绍:

  • minecraft:first_person - 第一人称视角
  • minecraft:third_person - 第三人称(背面)视角
  • minecraft:third_person_front - 第三人称正面视角
  • minecraft:free - 自由飘浮视角
  • minecraft:follow_orbit - 焦点镜头

最后一个需要实验性玩法。

OreUI的"实验性玩法"中关于相机预设的选项
"实验性玩法"中的相机预设

个人预设[编辑]

个人预设 属于行为包的一部分,请参考其它文档。

camera命令[编辑]

此命令有以下语法: /camera <players> set <preset> [ease <easeTime> <easeType>] [pos <x> <y> <z>] [rot <xRot> <yRot>]

/camera <players> set <preset> [ease <easeTime> <easeType>] [default]

/camera <players> clear

/camera <players> fade [time <fadeInSeconds> <holdSeconds> <fadeOutSeconds>] [color <red> <green> <blue>]

camera 命令的每个选项都以 玩家选择器 开头,该选择器用于指定将受该命令影响的一个或多个玩家。之后,您可以指定三个选项:“set”、“clear”或“fade”。“set” 将导致目标玩家使用指定的摄像机视角。“clear” 会将目标玩家返回到他们通常的相机模式。“fade” 将导致全屏淡入淡出,就像玩家在床上睡觉时看到的那样。

Set[编辑]

set 选项将使选定的玩家通过指定的 预设 查看游戏。在他们断开与游戏的连接或使用使用“clear”的摄像机命令之前,他们将使用指定的预设。这将覆盖通常控制摄像机视角的内容,例如 设置菜单选项。

如果未指定其他参数,这将导致用户的摄像机视角立即修改到指定的 预设。

Ease[编辑]

ease 选项将导致视图之间的过渡在指定的秒数内完成,而不是立即完成。可以在 Easing Functions Cheat Sheet 查看ease模式。

缓冲动作总是从摄像机当前所在的位置开始,因此从 A 到 B 的缓冲被另一个缓冲打断到 C 的缓冲将从 A 和 B 之间的某个位置开始。

但要注意的是,不允许过渡渡到三个标准游戏视角,因为它们与玩家密切相关,如果玩家以剧烈的方式移动或转弯,则过渡到这些视角可能会非常不理想。

Pos[编辑]

pos 重设了 预设JSON定义文件 中指定的视角位置,其支持 “~” 和 “^” 字符,这使得命令可以动态计算相机的位置。

注意:不支持将摄像机的位置设置为未加载的世界区域,但目前没有以任何程序限制这种设定。仅当玩家在附近并且设备的渲染距离选项足够高时,世界的数据块仍会加载。超出加载范围的方式放置相机可能无法在任何情况下发挥作用。建议将摄像机保持在稍微靠近玩家的位置,并仔细检查低端设备上或具有较低渲染距离设置的版本,以确保所有用户都能正常工作。

Rot[编辑]

rot 重设了 预设JSON定义文件 中指定的视角旋转方向。此处支持 “~” 字符来指定相对旋转。

Default[编辑]

default 会将之前的一切还原到 预设JSON定义文件 的默认情况。

Facing[编辑]

Facing 与 rot 一样重设了 预设JSON定义文件 中指定的视角旋转方向,但比其更方便。

facing 后面应该跟一个实体选择器或纯 x、y、z 坐标,这与/tp命令的 facing 类似。

Clear[编辑]

clear 会导致指定的相机结束任何正在进行的Set操作,包括任何过渡运动,并还原到玩家的设置选项。

Fade[编辑]

fade 会导致全屏颜色淡入、等待和淡出。它使用与玩家睡在床上时类似的效果。

Time[编辑]

time 允许自定义淡化效果的时间。如果未指定,这将使用 1 秒的淡入、0.5 秒的保持和 1 秒的淡出。淡入、保持和淡出的时长均不得超过 10 秒。如须更长,请查看下面的组合淡化。

Color[编辑]

color 允许自定义淡化效果的颜色。红色、绿色和蓝色值都应该是介于 0 到 255 之间的整数值。淡化的目标不透明度始终是完全不透明的。如果未指定,它将对每个值使用 0,这会导致淡化为黑色。

淡化注意事项[编辑]

由于 Minecraft 可以通过网络连接Play,也可以在未以完美帧速率运行的设备上Play,因此请务必记住,相机淡化的时间可能并不总是在所需的时刻显示。在创作淡化效果时,最好考虑向 'holdSeconds' 值添加更多时间,或者在功能较弱的平台上进行测试以检查演示文稿是否可接受。

组合淡化[编辑]

当摄像机淡化已在进行时,可以(且有效)发出摄像机淡化命令。发生这种情况时,淡化将与以下逻辑相结合。这对于动态延长淡化直到发生其他事件非常有用。

淡化的时间将以某种方式组合在一起,淡入将与剩余的淡入时间或新淡化的淡入时间中较快者进行。当两个 Fade 都准备好淡出时(以较晚者为准),淡出将开始。当两个淡化都完成时(以较晚者为准),淡出也将类似地完成。

淡化透明度的量将始终从当前的淡化量开始。例如,如果缓慢淡化正在进行中并且已完成一半,并且收到了新的快速淡化命令,则用户将看到从半不透明到完全不透明的快速淡化。

组合淡化的目标颜色(红色、绿色、蓝色)始终是正在进行的淡化的颜色。请参阅下面的“淡化限制”。

淡化限制[编辑]

为了方便用户,淡化遵循两个附加规则。

首先,所有淡化必须至少花费 0.5 秒,这样它们每秒发生的次数不会超过两次。如果摄像机淡入加保持加淡出的组合时间小于 0.5 秒,则保持时间将增加以弥补差额。

其次,如果淡化已在进行中,则新的淡化将继续使用与正在进行的淡化效果相同的颜色。这可以防止不同颜色之间的全屏变化。

焦点镜头[编辑]

您可以添加、删除中心偏移并将其应用于焦点目标。

添加目标:

/camera @s target_entity <entity>

删除目标:

/camera @s remove_target

应用中心偏移:

/camera @s target_entity <entity> target_center_offset <x, y, z>

其他免费摄像机预设示例[编辑]

下面均取自官方文档。

听简[编辑]

创作者有时希望播放器的位置继续位于音频系统的“耳朵”所在的位置,而其他时候,他们希望此听者的位置位于摄像机所在的位置。

{
  "format_version": "1.19.50",
  "minecraft:camera_preset": {
    "identifier": "example:example_player_listener",
    "inherit_from": "minecraft:free",
    "listener": "player"
  }
}

效果视图[编辑]

它确定玩家状态是否会影响渲染。例如,已着火身上不会出现着火效果。

{
  "format_version": "1.19.50",
  "minecraft:camera_preset": {
    "identifier": "example:example_player_effects",
    "inherit_from": "minecraft:free",
    "player_effects": true
  }
}

参考[编辑]

  1. 官方文档