跳转到内容

场景 Actor 与大纲

场景 Actor 是用于游戏行为的 Actor。它没有方块,只有位置、朝向和属性。服务器插件 NP Scene 通过 scene.json 接收它们,并生成实际的实体和方块。世界逻辑规则和序列器轨道通过 id 引用场景 Actor。

大纲以每行一项的形式显示世界中的所有 Actor(方块组、场景 Actor、文件夹)。细节面板用于修改所选 Actor 的属性。

内容位置
放置场景 Actor主工具栏「添加」→ 在「Actor」组中选择
相机 Actor(当前视角)工具 › 相机 Actor — 从当前视角创建
一次性创建区域触发器 + 规则Ctrl+Shift+T — 世界逻辑的区域触发器向导
大纲 · 细节默认布局中位于右上和右下。如已关闭,可在「窗口」菜单中重新打开

「添加」会放置在鼠标下方的格子中。鼠标位于视口外时,放置在屏幕中心所指的位置。可以在搜索框中输入名称或英文单词(trigger、camera 等)进行选择。

  1. 点击主工具栏的「添加」。
  2. 在「Actor」组中选择「触发器区域 — 盒 (4×3×4)」。
  3. 视口中出现一个半透明盒子,大纲中增加一行。
  4. 用操纵器移动(W)或调整大小(R)。
  5. 在细节面板的「场景」栏中,将 id 改为易于识别的名称(例如 gate_zone)。
  6. 在世界逻辑中创建以该区域为触发器的规则。

下表为「添加」›「Actor」组中的项目及其在 scene.json 中的 kind。

「添加」项目kind含义在服务器上
触发器区域 — 盒 (4×3×4)trigger检测进入、离开、停留的盒子区域判定
触发器区域 — 球 (直径 6)trigger同样是区域,只是形状为球(shape: sphere,大小 = 直径)区域判定
出生点 — 玩家spawn进入位置、传送目的地(role: player)传送、检查点位置
出生点 — NPCspawnNPC 生成的位置(role: npc)由插件决定
展示 — 方块 (Block Display)display显示单个方块的实体BlockDisplay
展示 — 物品模型 (Item Display)display显示自定义模型的实体ItemDisplay
文本 (全息 Text Display)text浮在空中的文字TextDisplay
光源 (亮度 15)light不可见的光源(亮度 0~15)light 方块
相机 — 从当前视角camera过场动画、电影镜头视角相机实体
路径 (3 个点)path由点连成的线(动画、电影镜头路径)路径点
阻挡盒 — 隐形墙 (4×3×1)blocker不可见的墙barrier 方块或推开

音源位于「添加」的「声音」组中(营火噼啪、风、空音源等)。在 scene.json 中以 kind: "sound" 导出。

id 初始为 <kind>_<编号>(例如 trigger_1)。规则和轨道通过该字符串引用 Actor。

选择场景 Actor 后,细节面板中会显示以下各栏。

栏内容
组件附加到 Actor 的功能列表 ·「添加」(见下文「组件」一节)
Actor名称 · 类型 · 父级 · 内容 · 显示 · 锁定
场景id · 导出(导出的 kind)· 标签 · 仅编辑器 · 附加到
位置 · 旋转 · 倍率/大小变换。旋转仅适用于出生点、展示、文本、相机、路径;倍率仅适用于展示、文本;大小仅适用于触发区域、阻挡框
属性因类型而异的栏(见下表)
栏含义
idscene.json 中的 id。只能使用英文字母、数字及 _ . -。在同一世界中不得重复。
导出显示导出到游戏中的形式(scene.json kind "trigger" 等)。
标签以逗号或空格分隔的标签。用于成组引用多个 Actor。
仅编辑器开启后不写入 scene.json。用于工作用相机、备注用区域等。
附加到附加(Attach)到其他场景 Actor 后,移动父级时会一同移动。
类型属性
触发区域形状(长方体 · 球)
出生点角色(玩家 · NPC · 生物 · 自定义)· 目标(npc · mob 时为实体 id)
展示类型(方块 · 物品模型)· 方块或模型 · 物品模型 id · 广告牌 · 亮度(-1 = 环境光)· 初始可见 · 边框发光 · 边框颜色
文本文本(多行)· 文字颜色 · 背景 · 广告牌 · 对齐 · 行宽 · 初始可见 · 阴影 · 透过墙可见
光源亮度(0~15)· 初始开启
相机视场角(FOV,30~110)·「从此视角查看」·「对齐当前视角」·「新建相机」
路径闭合路径 · 点列表 ·「末尾加点」·「中间加点」· 删除所选点
阻挡框方式(barrier · push)· 目标(仅玩家 · 所有实体)· 在编辑器中可见 ·「碰撞时动作…」

关闭「初始可见」后,游戏开始时该 Actor 处于隐藏状态。可通过世界逻辑动作「显示 Actor」使其出现。在编辑器中以半透明显示。

阻挡框的方式如下。

方式在服务器上
barrier用 barrier 方块填充盒内的空格。
push不使用方块,将进入盒内的对象(按目标设置为玩家或所有实体)推开。

在编辑器的运行中,两种方式都会阻挡行走中的角色。

组件是附加到 Actor 上的功能集合。也可以附加到用方块搭建的门、石像等方块 Actor 上。通过细节面板顶部「组件」栏中的「添加」进行附加。

组件生成的场景 Actor用途
触发器体积trigger与 Actor 边界(+ 余量)同大小的区域
阻挡体积blocker与 Actor 边界同大小的隐形墙
交互trigger(点击盒)右键时执行规则 — 触发器「右键 Actor」的对象
音源sound从 Actor 位置发出的声音
光源lightActor 顶面上方的光源
文本展示textActor 上方的全息文字
标签—输入 Actor 标签
逻辑—使用该 Actor 的规则列表 +「添加规则」
  • 由组件生成的场景 Actor 的 id 为 <Actor id>.<组件 id>(例如 door.interact)。
  • 移动方块 Actor 时,组件的位置也会随之移动。
  • 每个组件都有启用复选框。关闭后会从导出和运行中排除。
  • 每个 Actor 最多可附加 32 个组件。交互、标签、逻辑各只能有一个。
  • 「逻辑」中的「添加规则」会预先填入与对象相符的触发器(交互 → 右键 Actor,触发器体积 → 进入区域时,阻挡体积 → 碰撞时)。

大纲每行的列为名称、类型、眼睛(显示)、锁(锁定)、方块数。上方有搜索框、新建文件夹按钮和「显示空 Actor」按钮。

操作结果
单击选择该 Actor。若为方块 Actor,则选中其方块。
Ctrl+单击逐个添加或移除。
Shift+单击从最后单击的行开始按范围选择。
双击选择并对准相机。
眼睛 · 锁切换显示、锁定。对文件夹操作时应用于所有子项。
将行拖到文件夹上移入该文件夹。放到世界行上则移到最顶层。
将行拖到场景 Actor 上附加到该 Actor(一同移动)。
← · →行数很多时折叠、展开
项目作用
选择选择该 Actor。
相机对准将相机对准该 Actor。
重命名开启名称编辑。
复制在 X 方向旁边复制一份。
删除删除 Actor 及其方块、道具。
新建文件夹在所选文件夹中新建文件夹。
设为活动文件夹使新建的 Actor 放入该文件夹。
移到世界根级从文件夹、父级中移出。
归入新文件夹将所选 Actor 归入一个新文件夹。
合并 Actor将所选方块 Actor 合并为最后单击的那一个。
存为道具(预制件)仅将该 Actor 的方块、道具保存为预制件。
清理空 Actor删除没有方块、道具的 Actor。

自 0.9.7 起:新增「合并 Actor」和「存为道具(预制件)」。保存的预制件可在内容浏览器的「预制件」中再次放置。详情请参阅预制件。

选项位置含义
显示空 Actor大纲上方的过滤按钮没有方块、道具的 Actor 也显示在列表中。
触发区域视口显示标志开启或关闭触发区域、阻挡框、组件的显示。
在视口中显示区域·阻挡框世界逻辑面板「区域」与上面的显示标志相同。
键动作
F2重命名(焦点在大纲时。在其他位置时为无光照视图模式)
Ctrl+G将所选 Actor 归入新文件夹
Ctrl+D复制大纲中所选的 Actor
Delete删除所选场景 Actor(没有方块选择时)
F将相机对准所选对象
W · E · R操纵器 移动 · 旋转 · 缩放
Alt+拖动操纵器复制并移动
Ctrl+Z撤销(包括重命名、合并、组件更改)
  • 更改 id 后,使用该 id 的规则和轨道不会自动更新。建议在创建规则之前先确定 id。
  • 更改组件 id 后,规则中记录的旧派生 id 也不会被修正。
  • 已锁定的 Actor 无法在细节面板中修改。
  • 场景 Actor 必须位于 .npbuild 范围的 X · Z 之内,才会被写入该部分的 scene.json。不考虑高度。
  • 展示 — 物品模型必须是已包含在资源包中的模型,才能在游戏中显示。