Portal 2

Portal 2

Not enough ratings
p0rtalmaster 的 Hammer 指南系列 08/19
By idontknow and 1 collaborators
您好,欢迎阅读我的迷你指南系列的第08/19部分,旨在帮助您了解 Portal 2 创作工具最大的组成部分:Hammer。

要获得该系列的超快速版本,请查看我的另一篇指南,《慌乱的 Hammer》
   
Award
Favorite
Favorited
Unfavorite
这是一个翻译副本 / This is a translated copy
原指南 / Original guide:
http://steamproxy.net/sharedfiles/filedetails/?id=652814166
本指南中出现的 “我” 均指原作者。/ All "I" in this guide mean the original author.

本指南存在许多翻译不当的地方,欢迎提出指正。/ There are many improper translations in this guide, please correct me.
简介
接下来的这篇指南涉及光圈科学空中弹射板。这是一项计划的一部分,目的是调查测试对象被弹射向太空后如何很好地解决问题。结果非常有用:他们不能。
关于 trigger_catapult 的一点点
Originally posted by VDC Wiki:
trigger_catapult 可以在您希望以精确控制玩家的着陆地点的任何位置使用。例如,您可以将传送门放置在倾斜的面板上,然后将其弹出。(这里要指出的是,trigger_catapult 不仅可以用于弹射板;还可以用于控制弹射。)

(仅用于弹射:)为确保弹射器不是在玩家碰巧进入时将其弹出,您需要通过 trigger_catapult 来设置阈值:

Lower threshold / 下限阈值 这是您设置的玩家速度的百分比,从0到1。
Upper threshold / 上限阈值 与上述相同。
UseThresholdCheck / 使用阈值检查 Yes

但是,阈值设置有些难以处理:

首先,与通常的理解相反,阈值 不代表 常规理解中玩家速度的百分比。较低的阈值是从trigger_catapult 中设置的玩家速度中扣除的百分比值,而较高的阈值百分比被添加到玩家速度中。例如,假设您将弹射器设置为以500单位/秒的速度弹射玩家。较低的阈值0.1表示玩家必须至少以90%(即100%减去10%)的速度行进:450个单位/秒。最高阈值0.5表示玩家的行进速度不得超过150%,即100%加50%:750个单位/秒。只要玩家速度在这些限制之间,trigger_catapult 就会弹射玩家/对象。因此,阈值只能以一种方式起作用:阈值设置得越低,玩家的速度就必须与弹射速度相匹配。

不幸的是,还有更多需要考虑的问题:如果为 trigger_catapult 指定了一个 info_target,则将调整玩家的速度以达到该目标,从而无法知道必须以何种速度弹射玩家。即使将“Use Exact Velocity / 使用精确速度”设置为“Yes / 是”,玩家速度也可能存在差异。因此,弹射阈值应涵盖更大范围的可能速度。

从好的方面来说,这一切都可能或多或少容易地进行测试:出于调试目的,程序员添加了 ent_bbox 控制台命令,以图形方式显示游戏中的弹射器轨迹。当玩家或对象进入 trigger_catapult 时,此命令还将说明当前玩家速度和实际阈值(以单位/秒为单位)。但是,为了使其工作,trigger_catapult 必须指定一个 info_target

(译者注:要在游戏中测试弹射器的轨迹,先在控制台输入 developer 1,然后再输入 ent_bbox trigger_catapult。如果只想显示其中某一个弹射器而不是所有的弹射器,第二条指令中的 trigger_catapult 替换为相应的名称即可。)
弹射板
进一步的历史证明,弹射板曾经只是普通的板块,可以将东西散播到空中。但是,测试对象很快就迷失了如何通过测试室的方法,因此开发了一种新模型来解决该问题。



这是您需要从头开始制作一个基本的弹射板的东西(上图):一个 prop_dynamic,其模型设置为 models\props\faith_plate.mdl,一个 trigger_catapult(使用 trigger 纹理的画笔实体),一个 info_target,一个 logic_relay 和声音设置为 Metal_SeafloorCar.BulletImpactambient_generic。您还需要一些笔刷来容纳弹射板(下图)。



1)在要玩家到达的地方放置一个 info_target,并为其命名。如果着陆区位于地板,墙壁或天花板上,则建议在该位置使用靶心 overlay,如果该表面也可用于开传送门,则建议使用一个 info_placement_helper

2)将 trigger_catapult 直接放置在弹射板模型(prop_dynamic)的上方部分,该部分将物体发射到空中。相应地设置其属性:(译者注:若要能够弹射方块,请勾选 Flags 中的 Physics Objects 项)



3)对于 logic_relay,设置以下 I/O:



4)最后,使用 trigger_catapultonCatapulted 输出触发 logic_relay ,无论玩家在何时触碰到它。

对于竖直弹射的弹射板,您可以使用备用动画 straightup。
对于墙壁弹射板(也许还有一些地板弹射板),可以使用三重弹射板模型:models\props\faith_plate_128.mdl

您也可以选择为弹射板创建升高或降低的框架,就像在 Valve 的地图中看到的那样。只要确保将所有物品都抬高框架的高度即可。最后,您可能已经注意到,弹射板有专门的覆盖纹理:
  • signage/mgf_overlay_bullseye
  • signage/mgf_overlay_bullseye_smaller
这些蓝色的靶心叠加层应放置在与 info_target 相同的位置,并调整为80×80。
可停用的弹射板
Aperture Science 的某些弹射板可以打开和关闭。传统上,橙色熄灭而蓝色亮起,这与所有测试元素上指示灯的颜色可能暗示的相反。

要激活/停用弹射板,您还需要另一对 logic_relay:一个用于激活,另一个用于停用。您还需要确保使用可以切换外观的弹射板模型(从蓝色到橙色,反之亦然;models\props\faith_plate.mdl 可以解决问题)。还建议使用两个额外的 ambient_generic ——将声音设置为 World.RobotPosInteract 以示激活,将声音设置为 World.RobotNegInteractPitchedUp 以示停用。

1)将 ambient_generic 放置在弹射板中心那个大色点上方附近。

2)在“activate / 激活” logic_relay 上,设置以下 I/O:



3)同样,在“deactivate / 停用” logic_relay 上,设置以下 I/O:



4)在您的激活器上,设置以下 I/O:



要初始停用,禁用 trigger_catapult 并将 prop_dynamic 的皮肤设置为1。
可旋转的弹射板
可以旋转的弹射板稍微复杂一点。为简单起见,我们假设弹射板只能旋转(不能停用弹射功能)。成分基本相同,但是现在我们还需要 func_door_rotating 来使弹射板旋转。由于 trigger_catapult 不能即时更改目标,因此我们需要为辅助位置创建第二个 trigger_catapultlogic_relayinfo_target



首先,您需要雕刻一个128×128的孔并使其深64个单位。棘手的部分是创建 func_door_rotating。完成此操作后,其他所有内容都应该放到位。

1)创建一个192×192的 Nodraw 圆柱体,高8个单位。然后在中间为弹射板雕刻一个64×128的矩形孔。

2)使用框架纹理(例如 plastic/plasticwall004a)对边缘进行纹理处理,并在顶部使用所需的任何地板纹理进行纹理处理。

3)选择四个圆柱形画笔和 invisible 块,然后将它们全部转换为 func_door_rotating 并为其命名。将 prop_dynamic 的“Parent”键值设置为新的 func_door_rotating 的名称。

4)在 func_door_rotating 上,设置以下属性:



此外,您可以为平台旋转和停止时设置一些声音。
尽管这里可以自由发挥,但以下是我的建议:
  • Start Sound: World.a2Bts2ElevatorTravel
  • Stop Sound: World.a2Bts2ElevatorArrive
速度也可以根据需要进行更改,尽管在许多情况下默认值100应该可以。

5)在同一实体上,设置以下 I/O:



6)最后,对于每个 trigger_catapultlogic_relayinfo_target,按照上述步骤进行。复制,粘贴 trigger_catapultlogic_relay 并将它们与弹射板模型一起旋转以确保它们对齐,然后重命名它们可能会更容易。您还必须检查 I/O 是否按预期工作。

7)最终步骤:禁用初始不使用的 trigger_catapult,放置 info_target 并添加靶心覆盖图。



恭喜,您已经创建了一个可旋转的弹射板!通常,与 PeTI 不同,弹射板块可以而且应该直接面向其目标。

注意:请勿在旋转的弹射板上使用叠加层,因为叠加层不能设置父项。如果要使用标示牌,则需要再创建几个孔,并使用不是 overlay 的纹理。
调试技巧
  • 使用地板按钮时,弹射板并不总是响应或发生故障。
修复:确保所有 logic_relay 都选中“Allow fast retrigger / 允许快速重新触发” Flag。

  • 弹射板没有旋转/停用/激活
  • 弹射板没有正确设置动画
  • 声音无法正常播放
仔细检查您的 I/O。是的,全部。

  • 弹射板没有正确设置动画
仔细检查动画。标准模型支持的动画是:idle / 空闲,straightup / 竖直,fast / 快速 和 angled / 倾斜。
避免错误和更多信息
  • 不为弹射板使用孔。信不信由你,当我们看到的只是类似于嵌套在地板或墙壁中的框架时,看起来就很奇怪。
  • 为可激活的弹射板使用不正确的皮肤。通常,橙色为 OFF,蓝色为 ON。请不要混淆您的测试对象。

来自 VDC Wiki 的更多信息:
主指南列表
请注意,部分工作仍在进行中。当我为您完成更多指南时,本节将更新!

您当前正在查看该系列的第08/19部分。

| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |

上一指南(关于面板和平台)
下一指南(关于各种标准测试元素)

请随时在下面留下一个合理的问题或评论。我或合格的实验室助理(您会知道,因为他们在 workshop 中制作了所有好的地图)都会做出回应。 如果您的问题或评论不合理,我建议您再次阅读我的指南,直到您100%理解它们。 这里不需要或将不需要进一步的信息,使用 Hammer,您将成为出色的实验室设计员!