L4D关卡制作/电梯

来自Valve Developer Community
跳转至: 导航搜索
Underlinked - Logo.png
此文章需要更多与其他文章的链接以帮助将其集成到百科全书中。请通过在现有文本中添加与上下文相关的链接来帮助改进此文章。
2024年1月
English (en)Русский (ru)中文 (zh)
... Icon-Important.png

译者:joyo_a(百度ID)

求生之路有一个创建电梯的独特系统,幸存者可以向上或者向下乘坐。导航网格需要从幸存者开始到需要到达的地方无缝连接。因此,电梯需要垂直连接导航网格区域。

用于电梯的笔刷实体被称为func_elevator。你也可以使用一个道具作为一个不可见的func_elevator,或者使用一个带有动画的道具来作为一个不可见的func_elevator。

一个纯粹用笔刷做的func_elevator的例子可以在tutorial_standards.vmf中找到。

创建笔刷电梯

tutorial_standards地图中的func_elevator示例。

根据你所想的func_elevator创建一个或多个笔刷。

选择它们,然后按Ctrl+T将它们绑定到一个实体中。从下拉菜单中选择“func_elevator”。

func_elevator属性。

将名字更改为唯一的名字。

Top floor position下面的Bottom floor position中的第三个数字更改为任意数字(这将有助于移动辅助节点)。

设置Speed值(英寸/单位每秒)。

FrontSide视图中,你可以看到代表顶层和底层位置的辅助节点。

func_elevator的辅助节点。
Note.png注意:电梯已经放在它自己的用户可见组中。点击VisGroups面板中的Auto标签,取消勾选Auto。然后,切换回User选项卡并勾选Elevator复选框,看看电梯及其相关实体。

通过在节点的圆圈内左键单击来移动Bottom floor position辅助节点,并向下拖动到希望电梯下降到的位置。

添加地板

为了让你能够告诉电梯去某个楼层,你需要放置info_elevator_floor实体。

转到Entity Tool并在Objects下拉菜单中选择“info_elevator_floor”。

镜头视图中放置两个到电梯下。

侧面正面视图中,移动它们,使得一个是在func_elevator的顶层位置(Top floor position),而另一个是在func_elevator的底层位置(Bottom floor position)。

info_elevator_floor实体指定func_elevator的楼层位置的名字。

Alt+ Enter打开底层的实体的属性。

info_elevator_floor属性。

更改Name为“bottom”。

打开顶层的实体并更改Name为“top”。

控制电梯

tutorial_standards地图里的func_button示例。

现在,你需要发送一个输入到func_elevator来告诉它移动。

在tutorial_standards地图中,有一个幸存者可以按下的func_button

func_button属性。

要创建一个func_button,先创建一个笔刷,然后使用Ctrl+T将其绑定到一个实体。在下拉菜单中选择“func_button”。

func_button的Flags选项卡。

这里有几个属性取决于你希望按钮如何工作,但现在除了更改Name为“button”之外,其他的只需全部保留默认值即可。

切换到Object Properties中的Flags标签,然后选择以下复选框:

  • Don't move
  • Use Activates

这意味着幸存者可以使用+use来按它,而当按下时按钮不会被移除。

为电梯添加一个输出到the func_button。

现在切换到Outputs选项卡。

通过点击窗口底部附近的Add...按钮添加一个新的输出。

  • 更改My output字段为“OnPressed”。
  • 更改Target entities字段为“elevator_down_relay”。
  • 更改Via this input字段为“Trigger”。
创建一个logic_relay让电梯降落。

现在,我们需要创建一个elevator_down_relay实体,该实体在按下按钮时会传递我们想要发送的消息。

Entity Tool中,从Objects下拉列表框中选择“logic_relay”。

在func_button附近放置一个logic_relay。

使用Alt+ Enter打开其属性。

更改名字为“elevator_down_relay”以匹配我们从func_button发送的输出。

logic_relay的Outputs选项卡。

切换到Outputs选项卡并通过以下字段添加一个新的输出:

  • My output named:OnTrigger
  • Targets entities named:elevator
  • Via this input:MoveToFloor
  • With a parameter override of:bottom
  • After a delay in seconds of:0

当幸存者按下按钮使relay被触发时将使电梯降落。

根据你的电梯的设置,你可能需要告诉电梯移动到另一个位置。可以看一下tutorial_standards.vmf中的func_elevator上的func_button示例。

添加导航

编辑func_elevator的导航。

编辑一个func_elevator的导航需要你把电梯放在每一个可能有的位置上,放置一个nav_mark_walkable(M)并建立增加的导航(B)。

电梯导航以后将需要进一步的处理。当你准备好这样做时,请根据整理导航路线来考虑并进行故障排除。