Overview
您好,欢迎阅读我的迷你指南系列的第07/19部分,旨在帮助您了解 Portal 2 创作工具最大的组成部分:Hammer。要获得该系列的超快速版本,请查看我的另一篇指南,《慌乱的 Hammer》。
这是一个翻译副本 / This is a translated copy
原指南 / Original guide:
[link]
本指南中出现的 “我” 均指原作者。/ All “I” in this guide mean the original author.
本指南存在许多翻译不当的地方,欢迎提出指正。/ There are many improper translations in this guide, please correct me.
面板,未来的木板
面板是 Portal 2 的重要组成部分,甚至比原始游戏更重要。它们可以用来举起物体,降低物体并创建倾斜的表面(包括那些经典的楼梯),而无需楔子。
令人惊讶的是,也不需要花费太多时间。您所需要的只是带有面板臂模型的 prop_dynamic 和面板顶部的 func_brush 以及一些逻辑实体(更具体地,logic_auto 和 logic_relay 并不是严格必需的,但后者确实有助于组织 I/O)。在开始之前,我强烈建议您研究面板动画,并考虑它们在游戏中的位置和使用方式。通常,动画将有四个基本版本:一个“in / 进入”动画,一个“out / 离开”动画和这两个动画的 idle / 空闲(ending / 结束)动画。
面板臂模型的每个动画都有其自己的声音,您可以使用 Model Viewer / 模型查看器 进行预览(不是 Hammer 中的 Model Browser / 模型浏览器,而是 Portal 2 Authoring Tools 中的那个),因此在许多情况下,您不需要为制造音效而使用 ambient_generic。
这是单个面板的配方:
1)创建一个 prop_dynamic,为其命名并设置其模型为 anim_wproom_transformarm64x64_interior.mdl
→提示:大的128×128模型可以在 anim_wptelescope_arm_128… 下找到
2)创建64×64画笔,2个单位厚(小面板)或128×128×4(或128×128×8)画笔(大面板)。对底部,顶部和侧面进行相应的纹理处理。
3)将画笔直接放在面板臂顶部的上面,将其变成 func_brush 并命名。将其 parent / 父级设置为 prop_dynamic 的名称(以便随面板臂移动)。
4)创建一个 logic_auto,并如下图所示设置其输出。需要略微延迟(0.10 – 2.00秒)以确保其生效。
5)创建两个 logic_relay:一个启用您的面板(部署它),另一个禁用它(收回它)并设置这些 I/O:
一旦您有了可用的东西,就该根据地图需要冲洗并重复。如果您不希望所有面板都充当为一个面板,则可以使用单独的名称(它们只需要一个数字即可)。请注意,过多的移动面板(超过20-30)可能会导致某些系统出现延迟。
现在,您所要做的就是将它们挂钩到按钮或类似按钮的设备上,通过设置按钮的输出来触发启用和禁用 relay / 中继(译者注:这个中继就是中间人的意思,也可以理解为中介,在按钮与面板之间,按钮触发中继,中继再触发面板。它也许是 logic_relay,也许是 logic_branch,或者是其他的东西,具体要根据实际需求来确定)。
快捷方式:如果您想节省一些时间在将 prop_dynamic(面板臂)作为 func_brush(面板顶部)的父项时,则可以在您的 func_brush 的 Parent 键值中输入 <面板臂名称>,panel_attach 或者 <面板臂名称>,panel_top。(是的,这是一个逗号,并且没有空格——它是空格敏感的)。这将告诉您的面板顶部要连接到哪个面板臂以及将其放置在何处。然后,您将不再需要使用 logic_auto,因此可以节省实体。由于以前的 Source 游戏中存在 bug,Valve 可能使用了其他的方法去实现面板父子化。
另一种方法
某些动画仅具有“in / 进入”或“out / 离开”版本,而没有其他动画。面板臂仍然可以被控制。按照上述步骤进行操作,但不要执行最后一步,而是使用这些备用 I/O:
为了使它起作用,您需要将“Default Animation / 默认动画”设置为要使用的动画,并且(关键)将“Hold Animation / 保持动画”设置为“Yes / 是”。
当处理地板按钮或激光接收器/中继器时,这种替代方法也非常有效,在这种情况下的 I/O 比基座按钮具有更低的可预测性(更迅速)。
翻转面板
使翻转面板正常工作的基本实体是 func_door_rotating。它和 func_door 在任何游戏(包括 Portal 2)中都是非常有用的实体。它们是画笔实体,这意味着您首先需要创建画笔。
对于翻转面板,我推荐使用4个单位厚的画笔,并且每一边比您希望面板占用的空间小4-8个单位。翻转面板的共同属性:
默认旋转沿 Z 轴进行,这非常适合墙面板,但是如果要在地板或天花板上旋转,则需要在 Flags 选项卡中勾选“X axis / X轴”或“Y axis / Y轴”(有时它们在墙板上也看起来不错,只要它们与轴平行即可)。
控制它们很容易:只需使用“Open”和“Close”输入即可。一件有趣的事情是,与 PeTI 相比,您可以更好地控制面板的移动速度以及发出的声音。
轨道平台
在带有同伴方块(垂直)和激光力场(水平)的 Portal 2 地图中可以看到它们,这些平台运动背后的基本实体是 func_movelinear。一些基本属性:
正如您可能已经在游戏内置编辑器中看到的那样,有两种不同的设置方法:一种是像 Valve 地图中水平方向的那样来回摆动。另一种方法是将平台从滑轨一侧移动到另一侧,就像 Valve 的地图中垂直方向的那个一样。func_movelinear 的属性(键值)大致相同。但是,两种情况下的 I/O 并不相同。 对于非振荡平台,我们只有:
如果您在按下按钮后希望平台收回而不是部署,只需简单的交换输出。同时您还需要使用 logic_auto 来使平台初始部署。对于振荡平台,我们还需要两个 math_counter 来保存速度和方向数。这是通过将其中一个的“Initial Value / 初始值”键值设置为 func_movelinear 的速度,而另一个设置为1来完成的。这是所有内容的 I/O 设置:
当然,光靠 func_movelinear 是不够的。您还需要 prop_dynamic,func_movenlinear 作为它的父级。使用的模型是 models/anim_wp/arm_interior_192/arm_interior_128.mdl(192模型也很好用):
(可选)您还可以向模型添加输入,以使其在移动时显得不那么抖动(在这种情况下,您需要为其命名)。
活塞平台
奇怪的是,它们在整个标准单人 Portal 2 规范中只出现过一次(这里提示:Valve 为您提供了他们作品的 VMF 文件,以便您了解如何制作)。不过,合作模式的艺术治疗课程还有更多内容。
从逻辑上讲,这是为这种简单功能创建的最复杂的标准测试元素:它将对象向上或向下移动一定量。 这是您需要从头开始制作的一个(相信我,它们最好是从头开始制作的):
- 一个 trigger_hurt 和 trigger_portal_cleanser 来解除玩家或方块对电梯的干扰。
- 5-6个 prop_dynamic。这些将是电梯的组成部分。使用的模型是:
- models/props_bts/straight_piston_base.mdl
- models/props_bts/straight_piston_mid.mdl
- models/props_bts/straight_piston_end.mdl
- models/props_bts/straight_piston_tip.mdl(1-2个)用于活塞组件
- models/anim_wp/arm_interior_192/arm_interior_128_paneltop.mdl 用于顶部
这些 不需要 名称,因为以下内容会是它们的父项:
- 2-4个 func_door,具体取决于要将玩家提升到的高度。这些 需要 名称,并且应具有正方形的底基(通常16×16就足够了)。它们的高度通常约为64或128个单位(在我的示例中,我的高度为72、120和64)。
- 电梯顶部的 func_movelinear。这是会发出声音的东西。
如果您要制作一个通过基座按钮或玩家无法触及的东西激活的平台,这就足够了。如果您打算将其连接到地板按钮或激光接收器/中继器或类似设备上,则还需要:
- 2个 logic_relay(主要用于简化组织)
- 多个 logic_branch:如果有2个func_door,则为2个;如果有3个func_door,则为4个;如果有4个func_door,则为6个。如果玩家在任何时候(包括在活塞段之间运动时)激活按钮(或其他设备),这些对于确保活塞平台正确而合理地运动都是必要的。
首先,我将向您展示升降机的基本组件(假设在此示例中,升降机要上下256个单位):
1)在此示例中,我们需要3个 func_door。检查 func_door 的高度,并缩短底部的高度,直到所有 func_door 的总高度为256个单位。
2)勾选所有 func_door 上的“door silent / 门静音” flag。
3)使每个活塞片以 func_door 作为父级,使平台顶部以 func_movelinear 作为父级。
4)将每个 func_door 以其下一个作父级(例如,使顶部以其下面一个部分作为父级)。最底层的 func_door 不应存在父级。
5)如下设置 func_door 和 func_movelinear 的其余属性:
6)根据谜题需要,将所有内容对齐到“closed / 关闭”或“open / 打开”位置。这是两个位置的截图:
7)最后,设置以下 I/O:
这就是使用基座按钮进行举升的方法。升降机移动时需要将基座按钮锁定,以防止玩家可能发生的任何操作使按钮卡死。
如果您有地板按钮或激光接收器/中继器或与输入设备类似的设备,请按照上述步骤1-6进行操作,但最后一步有些不同。我将向您展示使用这种输入设备设置活塞平台的逻辑基本流程图(此变化假定升程初始位于低位):
- I/O #1-8应该非常简单。蓝色的东西是 logic_relay。
- trigger_hurt 和 trigger_portal_cleanser 作为一个东西来看待,因此 trigger_portal_cleanser 没有单独画一个框。
- 对于所有“向上”检测器,logic_branch 的初始值为“1”,对于所有“向下”检测器为“0”。
- 当 I/O 表示“Set value to 0/1”时,请使用带有参数 0(false / 假)或 1(true / 真)的 SetValue 输入。
- “when opening”表示使用 OnOpen 输出,同样于“when closing”(使用 OnClose)。
- “Open”通常表示“向上移动”,同样,“Close”通常表示“向下移动”。
这里的总体思路是 func_door 与以前一样(I/O #25-28)形成一个链,其中每个打开或关闭时都会触发下一个。然后,每次 func_door 打开或关闭时,都会通过 logic_branch(I/O #12、13、15、17、18、20、22和23)进行记录,以便在任何时候按下按钮时都不会产生怪异感(例如,如果玩家在电梯上升一半时取消激活按钮)。
希望此流程图能指导您设置电梯的 I/O。我不会在这里给出屏幕截图,因为 I/O 太繁杂了。
平台和面板的安装
要安装活塞平台,您需要制作一个128×128单位和192单位深的洞。然后将活塞平台组件放入洞中。面板也有相似之处,只是尺寸不同。洞需要足够宽,以便在面板凹进时适合面板,并且深度为128个单位。
要安装轨道平台,您需要做更多的事情:
1)创建五个画笔,一个用于中间(背面),两个用于顶部和底部,另外两个用于末端。相应地纹理化它们。
2)创建 prop_static 并将其模型设置为 models/anim_wp/arm_interior_192/motionplatform_rail_128.mdl。根据需要复制它。这将是平台移动的轨道。
3)将您的铁路平台组件靠墙放置,并检查以确保所有内容都对齐,如以下屏幕截图所示:
避免错误和更多信息
- 错误的面板动画。在尝试自己使用动画之前,请研究其中的一些动画,并考虑它们在游戏中的使用位置。
- 不了解 Portal 2 使用的动画系统。有两种基本方法:SetAnimation 和 SetDefaultAnimation(稍有延迟),或者“Hold Animation”和 SetPlaybackRate。您只需要这其中的两个。
- 不仅忘记将面板顶部父级设为(附加)到面板臂上,还忘记将输入发送到面板顶部,告诉它附加位置。请记住,面板顶部必须是 func_brush,以便它可以接收输入。
来自 VDC Wiki 的更多信息:
- The Planks of Tomorrow
- Flip Panels
- func_door_rotating:构成翻转面板的关键实体。
- The prop_dynamic entity:道具是很普通的事情,Portal 2 的道具比武器多得多,因此请充分了解道具的类型。像任何移动模型一样,面板臂也是 prop_dynamic。
主指南列表
请注意,部分工作仍在进行中。当我为您完成更多指南时,本节将更新!
您当前正在查看该系列的第07/19部分。
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
上一指南(Aperture Science 设备通风口,从零开始)
下一指南(关于 Aperture Science 空中弹射板)
请随时在下面留下一个合理的问题或评论。我或合格的实验室助理(您会知道,因为他们在 workshop 中制作了所有好的地图)都会做出回应。 如果您的问题或评论不合理,我建议您再次阅读我的指南,直到您100%理解它们。 这里不需要或将不需要进一步的信息,使用 Hammer,您将成为出色的实验室设计员!