Zh/L4D Level Design/Finale Events Part 2: Difference between revisions
(Created page with "{{otherlang2 |en=L4D_Level_Design/Finale_Events_Part_2}} {{L4D level intro menu:zh-cn}} 译者:joyo_a(百度ID) == 创建一个逃生载具 == 现在,让我们制...") |
m (obsolete language category) |
||
(11 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{lang|L4D Level Design|Finale Events Part 2|title=L4D关卡制作/救援事件(第二部分)}} | ||
| | |||
{{L4D level intro menu:zh-cn}} | {{L4D level intro menu:zh-cn}} | ||
Line 16: | Line 15: | ||
在tutorial_standards地图中,一辆地铁车被用作逃生载具,所以你可以看到如何在地图中移动一个对象。 | 在tutorial_standards地图中,一辆地铁车被用作逃生载具,所以你可以看到如何在地图中移动一个对象。 | ||
[[ | [[File:l4d_hammer_escape_01.jpg|thumb|left|500px|caption|在tutorial_standards地图中作为逃生载具的地铁车厢。]]{{clr}} | ||
=== 放置一个prop_dynamic === | === 放置一个prop_dynamic === | ||
[[ | [[File:l4d_hammer_escape_02.jpg|thumb|right|500px|caption|选择地铁车厢模型。]] | ||
为了让自己的地铁作为逃生载具,你首先需要放置地铁模型。我们要放置一个prop_dynamic而不是一个prop_static,这样它就会移动。 | 为了让自己的地铁作为逃生载具,你首先需要放置地铁模型。我们要放置一个prop_dynamic而不是一个prop_static,这样它就会移动。 | ||
Line 40: | Line 39: | ||
=== 创建一个func_tracktrain === | === 创建一个func_tracktrain === | ||
[[ | [[File:l4d_hammer_escape_03.jpg|thumb|right|500px|caption|创建一个笔刷,让地铁车厢移动。]] | ||
进入'''Block Tool'''。 | 进入'''Block Tool'''。 | ||
Line 50: | Line 49: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_04.jpg|thumb|right|200px|caption|tools/toolsnodraw纹理。]] | ||
在笔刷仍然被选中的情况下,点击'''Texture'''栏中的'''Browse'''按钮。 | 在笔刷仍然被选中的情况下,点击'''Texture'''栏中的'''Browse'''按钮。 | ||
Line 62: | Line 61: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_05.jpg|thumb|right|500px|caption|func_tracktrain属性。]] | ||
在笔刷仍然被选中的情况下,按{{key|Ctrl}}+{{key|T}}。 | 在笔刷仍然被选中的情况下,按{{key|Ctrl}}+{{key|T}}。 | ||
Line 73: | Line 72: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_06.jpg|thumb|right|500px|caption|func_tracktrain的Flags选项卡。]] | ||
切换到'''Flags'''选项卡。 | 切换到'''Flags'''选项卡。 | ||
Line 87: | Line 86: | ||
=== 添加path_track实体 === | === 添加path_track实体 === | ||
[[ | [[File:l4d_hammer_escape_07.jpg|thumb|right|500px|caption|path_track属性。]] | ||
现在我们需要创建路径来让地铁移动。 | 现在我们需要创建路径来让地铁移动。 | ||
Line 103: | Line 102: | ||
{{clr}} | {{clr}} | ||
在'''侧面'''或'''正面'''视图中,将path_track移动到<code>func_tracktrain</code>笔刷的正中间。你可以通过点击<code>func_tracktrain</code>并寻找辅助节点(默认情况下放置在中间位置)来找到此确切位置。你可以移动辅助节点,但请确保<code> | 在'''侧面'''或'''正面'''视图中,将path_track移动到<code>func_tracktrain</code>笔刷的正中间。你可以通过点击<code>func_tracktrain</code>并寻找辅助节点(默认情况下放置在中间位置)来找到此确切位置。你可以移动辅助节点,但请确保<code>path_track</code>能移动到该辅助节点所在的位置。 | ||
回到'''Entity Tool'''并放置另一个<code>path_track</code>到你想让地铁移动到幸存者搭乘的地方。 | 回到'''Entity Tool'''并放置另一个<code>path_track</code>到你想让地铁移动到幸存者搭乘的地方。 | ||
Line 115: | Line 114: | ||
=== 将prop_dynamic关联到func_tracktrain === | === 将prop_dynamic关联到func_tracktrain === | ||
[[ | [[File:l4d_hammer_escape_08.jpg|thumb|right|500px|caption|prop_dynamic属性。]] | ||
返回到<code>prop_dynamic</code>地铁车厢模型并打开其属性。 | 返回到<code>prop_dynamic</code>地铁车厢模型并打开其属性。 | ||
Line 127: | Line 126: | ||
== 创建trigger_multiple == | == 创建trigger_multiple == | ||
[[ | [[File:l4d_hammer_escape_10.jpg|thumb|right|500px|caption|创建一个trigger_multiple笔刷。]] | ||
用'''Block Tool'''绘制一个笔刷,里面包含在地铁车厢内的用来搭载幸存者的位置。 | 用'''Block Tool'''绘制一个笔刷,里面包含在地铁车厢内的用来搭载幸存者的位置。 | ||
Line 133: | Line 132: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:Toolstrigger.gif|left|“tools/toolstrigger”纹理。]] | ||
点击'''Texture'''栏中的'''Browse'''按钮。 | 点击'''Texture'''栏中的'''Browse'''按钮。 | ||
Line 145: | Line 144: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_11.jpg|thumb|right|500px|caption|trigger_multiple属性。]] | ||
按{{key|Ctrl}}+{{key|T}}使其成为笔刷实体。 | 按{{key|Ctrl}}+{{key|T}}使其成为笔刷实体。 | ||
Line 157: | Line 156: | ||
{{clr}} | {{clr}} | ||
{{ | {{Note|该触发器一开始被禁用以便幸存者在地铁车厢搭载他们之前不能触发它。我们稍后会启用它。}} | ||
[[ | [[File:l4d_hammer_escape_12.jpg|thumb|right|500px|caption|trigger_multiple的'''Flags'''选项卡。]] | ||
切换到'''Flags'''选项卡。 | 切换到'''Flags'''选项卡。 | ||
Line 167: | Line 166: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_13.jpg|thumb|right|500px|caption|trigger_multiple的'''Outputs'''选项卡。]] | ||
切换到'''Outputs'''选项卡。 | 切换到'''Outputs'''选项卡。 | ||
Line 182: | Line 181: | ||
现在,我们来设置<code>logic_relay</code>中当幸存者接触该触发器时应该发生的所有东西。 | 现在,我们来设置<code>logic_relay</code>中当幸存者接触该触发器时应该发生的所有东西。 | ||
[[ | [[File:l4d_hammer_escape_14.jpg|thumb|right|500px|caption|继续地铁的<code>logic_relay</code>属性。]] | ||
在'''Entity Tool'''中,从'''Objects'''下拉菜单中选择“logic_relay”。 | 在'''Entity Tool'''中,从'''Objects'''下拉菜单中选择“logic_relay”。 | ||
Line 192: | Line 191: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_15.jpg|thumb|right|500px|caption|train_continue_relay的Outputs选项卡。]] | ||
切换到'''Outputs'''选项卡。 | 切换到'''Outputs'''选项卡。 | ||
Line 212: | Line 211: | ||
== 放置info_survivor_positions == | == 放置info_survivor_positions == | ||
[[ | [[File:l4d_hammer_escape_16.jpg|thumb|right|500px|caption|为逃生载具放置info_survivor_positions。]] | ||
转到'''Entity Tool'''并从'''Objects'''下拉菜单中选择“info_survivor_position”。 | 转到'''Entity Tool'''并从'''Objects'''下拉菜单中选择“info_survivor_position”。 | ||
Line 222: | Line 221: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_17.jpg|thumb|right|500px|caption|逃生载具的info_survivor_position属性。]] | ||
打开每个属性。 | 打开每个属性。 | ||
Line 244: | Line 243: | ||
== 完成逃生载具 == | == 完成逃生载具 == | ||
[[ | [[File:l4d_hammer_escape_09.jpg|thumb|right|500px|caption|train_track02 path_track的Outputs选项卡。]] | ||
回到“train_track02”并打开它的属性。 | 回到“train_track02”并打开它的属性。 | ||
Line 273: | Line 272: | ||
这将告诉幸存者电脑到达标有“RESCUE_VEHICLE”属性的导航区域。{{clr}} | 这将告诉幸存者电脑到达标有“RESCUE_VEHICLE”属性的导航区域。{{clr}} | ||
[[ | [[File:l4d_hammer_escape_18.jpg|thumb|right|500px|caption|创建一个logic_relay让地铁出发。]] | ||
我们还需要向<code>func_tracktrain</code>发送输入以便从起始位置出发到搭载幸存者的位置。 | 我们还需要向<code>func_tracktrain</code>发送输入以便从起始位置出发到搭载幸存者的位置。 | ||
Line 283: | Line 282: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_19.jpg|thumb|right|500px|caption|train_start_relay的Outputs选项卡。]] | ||
更改'''Name'''为“train_start_relay”。 | 更改'''Name'''为“train_start_relay”。 | ||
Line 300: | Line 299: | ||
现在,回到<code>trigger_finale</code>(电台模型)并再次打开它的属性。 | 现在,回到<code>trigger_finale</code>(电台模型)并再次打开它的属性。 | ||
[[ | [[File:l4d_hammer_escape_20.jpg|thumb|right|500px|caption|向trigger_finale添加输出。]] | ||
添加以下输出: | 添加以下输出: | ||
Line 313: | Line 312: | ||
我们仍然需要一个输出到trigger_finale来告诉它逃脱成功。 | 我们仍然需要一个输出到trigger_finale来告诉它逃脱成功。 | ||
[[ | [[File:l4d_hammer_escape_23.jpg|thumb|right|500px|caption|创建一个<code>logic_relay</code>来让地铁逃离。]] | ||
转到'''Entity Tool'''并从'''Objects'''列表中选择“logic_relay”。 | 转到'''Entity Tool'''并从'''Objects'''列表中选择“logic_relay”。 | ||
Line 323: | Line 322: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_22.jpg|thumb|right|500px|caption|train_end_relay的Outputs选项卡。]] | ||
切换到'''Outputs'''选项卡。 | 切换到'''Outputs'''选项卡。 | ||
Line 337: | Line 336: | ||
{{clr}} | {{clr}} | ||
[[ | [[File:l4d_hammer_escape_24.jpg|thumb|right|500px|caption|train_continue_relay的Outputs选项卡。]] | ||
回到“train_continue_relay”并打开其属性。 | 回到“train_continue_relay”并打开其属性。 | ||
Line 364: | Line 363: | ||
只需调用控制台并输入“<code>ent_fire train_start_relay trigger</code>”,然后按{{key|Enter}}。 | 只需调用控制台并输入“<code>ent_fire train_start_relay trigger</code>”,然后按{{key|Enter}}。 | ||
[[ | [[File:l4d_hammer_escape_21.jpg|thumb|right|500px|caption|逃生载具的导航。]] | ||
一旦地铁车厢到达位置,你可以在里面放置一个<code>nav_mark_walkable</code>并使用<code>nav_generate_incremental</code> {{key|B}}为其建立导航网格。 | 一旦地铁车厢到达位置,你可以在里面放置一个<code>nav_mark_walkable</code>并使用<code>nav_generate_incremental</code> {{key|B}}为其建立导航网格。 | ||
Line 372: | Line 371: | ||
你应该看到连接这些区域的浅蓝色(青色)线。 | 你应该看到连接这些区域的浅蓝色(青色)线。 | ||
{{ | {{Note|区域可以单向连接和双向连接。'''浅蓝色'''线意味着它是双向连接。'''深蓝色'''意味着它是单向连接。}} | ||
如果这些区域未连接,请选择要连接的两个区域,然后使用<code>nav_connect</code> {{key|Insert}}。 | 如果这些区域未连接,请选择要连接的两个区域,然后使用<code>nav_connect</code> {{key|Insert}}。 | ||
{{ | {{Tip|如果要在区域之间建立''单向''连接,则选择第一个区域,然后''指向''(而不是选择)第二个区域并执行“nav_connect”。这用于一些东西如单向下降。}}{{clr}} | ||
选择地铁车厢内的所有导航区域并在控制台中输入“<code>mark RESCUE_VEHICLE</code>”以标记该属性。 | 选择地铁车厢内的所有导航区域并在控制台中输入“<code>mark RESCUE_VEHICLE</code>”以标记该属性。 | ||
Line 382: | Line 381: | ||
这些都是一个正常工作的救援事件所必要的东西。现在,我们可以为救援事件添加一些可选的元素。 | 这些都是一个正常工作的救援事件所必要的东西。现在,我们可以为救援事件添加一些可选的元素。 | ||
{{ | {{Navbar2|L4D Level Design:zh-cn/Finale Events Part 1:zh-cn|L4D关卡制作/救援事件(第一部分)|L4D Level Design Basics Tutorial:zh-cn|L4D关卡制作基础教程|L4D Level Design:zh-cn/Finale Events Part 3:zh-cn|L4D关卡制作/救援事件(第三部分)}} | ||
{{ACategory|Left 4 Dead}} | |||
{{ACategory|Left 4 Dead 2}} | |||
{{ACategory|Level Design}} |
Latest revision as of 04:17, 22 August 2024
译者:joyo_a(百度ID)
创建一个逃生载具
现在,让我们制作逃生载具。
在求生之路中,四个官方战役各有不同的逃生载具:一架直升机、一艘船、一架飞机和一辆APC装甲车。
逃生载具实际上可以是任何东西。它甚至可以只是一个房间,里面有一个门在救援结束时打开。
在tutorial_standards地图中,一辆地铁车被用作逃生载具,所以你可以看到如何在地图中移动一个对象。
放置一个prop_dynamic
为了让自己的地铁作为逃生载具,你首先需要放置地铁模型。我们要放置一个prop_dynamic而不是一个prop_static,这样它就会移动。
转到Entity Tool并从Objects下拉菜单中选择“prop_dynamic”。
打开其属性,然后点击World model行并点击右边的Browse按钮。
在Filter中输入“subway”并选择模型“props_unique\subwaycar_all_onetexture.mdl”。
点击OK。
关闭属性窗口。
我们现在拥有我们将用于逃生载具的模型。现在我们需要笔刷实体来移动模型。它被称为func_tracktrain。
创建一个func_tracktrain
进入Block Tool。
在顶部视图中,绘制大约与地铁车厢大小相同的笔刷,然后按↵ Enter键创建它。
在侧面或正面视图中,收缩刷子使它刚好在地铁车厢的地板的下方。
在笔刷仍然被选中的情况下,点击Texture栏中的Browse按钮。
在过滤器(Filter)中输入“nodraw”并选择纹理“tools/toolsnodraw”。
双击它使其成为当前纹理。
点击工具栏中的Apply current texture工具将其应用到所选择的笔刷。
在笔刷仍然被选中的情况下,按Ctrl+T。
- 更改Class为“func_tracktrain”。单击应用(Apply)以查看func_tracktrain的属性。
- 更改Name为“train”。
- 更改First Stop Target为“train_track01”。
- 更改Max Speed为“25”。
- 更改Height above track为“0”
切换到Flags选项卡。
- 勾选No User Control复选框。
- 勾选Fixed Orientation复选框。
- 勾选Is unblockable by player复选框。
点击Apply并关闭窗口。
添加path_track实体
现在我们需要创建路径来让地铁移动。
进入Entity Tool并从Objects下拉菜单中选择“path_track”。
在镜头视图中将path_track
放在靠近地铁车厢中央的地方并使用Alt+↵ Enter打开其属性。
更改Name为“train_track01”。
更改Next Stop Target为“train_track02”。
点击Apply并关闭属性窗口。
在侧面或正面视图中,将path_track移动到func_tracktrain
笔刷的正中间。你可以通过点击func_tracktrain
并寻找辅助节点(默认情况下放置在中间位置)来找到此确切位置。你可以移动辅助节点,但请确保path_track
能移动到该辅助节点所在的位置。
回到Entity Tool并放置另一个path_track
到你想让地铁移动到幸存者搭乘的地方。
打开其属性并更改Name为“train_track02”和更改Next Stop Target为“train_track03”。
回到Entity Tool,放置第三个path_track
到你想让地铁移动到可以逃离地图的地方。
打开其属性并更改Name为“train_track03”。
将prop_dynamic关联到func_tracktrain
返回到prop_dynamic
地铁车厢模型并打开其属性。
更改Parent为“train”。这将地铁车厢模型关联到func_tracktrain
。每当func_tracktrain
移动时,地铁车厢模型将随之移动。
现在,我们需要trigger_multiple
来检查所有幸存者是否在地铁上。
创建trigger_multiple
用Block Tool绘制一个笔刷,里面包含在地铁车厢内的用来搭载幸存者的位置。
点击Texture栏中的Browse按钮。
在过滤器(Filter)中输入“trigger”并选择“tools/toolstrigger”纹理。
双击它使其成为当前纹理。
应用纹理到选择的笔刷。
按Ctrl+T使其成为笔刷实体。
更改Class为“trigger_multiple”并点击Apply以显示trigger_multiple
属性。
- 更改Name为“train_trigger”。
- 更改Start Disabled为“Yes”。
- 更改Entire Team Number为“Survivor”。

切换到Flags选项卡。
确保复选框Clients已被勾选。
切换到Outputs选项卡。
添加以下输出:
- My output named:“OnEntireTeamStartTouch”
- Targets entities named:“train_continue_relay”
- Via this input:“Trigger”
当所有幸存者都接触到它时,该触发器将发送一个触发输出到一个名为“train_continue_relay”的logic_relay
。
现在,我们来设置logic_relay
中当幸存者接触该触发器时应该发生的所有东西。
在Entity Tool中,从Objects下拉菜单中选择“logic_relay”。
在镜头视图中将logic_relay
放在“train_trigger”的附近,然后打开其属性。
更改Name为“train_continue_relay”。
切换到Outputs选项卡。
添加以下输出:
- My output named:“OnTrigger”
- Targets entities named:“train”
- Via this input:“StartForward”
添加以下输出:
- My output named:“OnTrigger”
- Targets entities named:“radio”
- Via this input:“FinaleEscapeForceSurvivorPositions”
这意味着,当所有幸存且未倒下的幸存者都接触了“train_trigger”时,地铁将继续向前移动,而logic_relay
也将幸存者传送到安全的位置。
当逃脱发生时,我们需要放置info_survivor_positions到他们将要传送的地方。
放置info_survivor_positions
转到Entity Tool并从Objects下拉菜单中选择“info_survivor_position”。
在镜头视图中放置4个到他们不被感染者阵营接触的地方。
这可能需要你为他们在地图中建立一个小容器,如tutorial_standards.vmf所示。
打开每个属性。
将第一个的Name更改为“train_survivor_pos1”。
将第二个的Name更改为“train_survivor_pos2”。
将第二个的Order更改为“2”。
将第三个的Name更改为“train_survivor_pos3”。
将第三个的Order更改为“3”。
将第四个的Name更改为“train_survivor_pos4”。
将第四个的Order更改为“4”。
完成逃生载具
回到“train_track02”并打开它的属性。
切换到Outputs选项卡。
在tutorial_standards地图里,还有其他输出挂钩到门来打开,如果感染者在路径上他们则被杀死,如果幸存者在路径上则被推开到路径外。现在忽略这些,只需添加以下输出:
添加以下输出:
- My output named:“OnPass”
- Targets entities named:“train”
- Via this input:“Stop”
当地铁到达这个搭载幸存者的地方的path_track
时会停止地铁移动。
添加以下输出:
- My output named:“OnPass”
- Targets entities named:“train_trigger”
- Via this input:“Enable”
这是启用trigger_multiple的输出。
添加以下输出:
- My output named:“OnPass”
- Targets entities named:“radio”
- Via this input:“FinaleEscapeVehicleReadyForSurvivors”
这将告诉幸存者电脑到达标有“RESCUE_VEHICLE”属性的导航区域。
我们还需要向func_tracktrain
发送输入以便从起始位置出发到搭载幸存者的位置。
进入Entity Tool并从Objects拉菜单中选择“logic_relay”。
将其放在“train_continue_relay”实体附近并打开其属性。
更改Name为“train_start_relay”。
切换到Outputs选项卡。
添加以下输出:
- My output named:“OnTrigger”
- Targets entities named:“train”
- Via this input:“StartForward”
点击Apply并关闭属性窗口。
现在,回到trigger_finale
(电台模型)并再次打开它的属性。
添加以下输出:
- My output named:“FinaleEscapeStarted”
- Targets entities named:“train_start_relay”
- Via this input:“Trigger”
当救援的逃脱阶段开始时trigger_finale
会启动地铁。
我们仍然需要一个输出到trigger_finale来告诉它逃脱成功。
转到Entity Tool并从Objects列表中选择“logic_relay”。
在镜头视图中放置它并打开其属性。
更改Name为“train_end_relay”。
切换到Outputs选项卡。
添加以下输出:
- My output named:“OnTrigger”
- Targets entities named:“radio”
- Via this input:“FinaleEscapeFinished”
- After a delay in seconds:“2”
这将告诉trigger_finale
幸存者在被触发之后的2秒内逃脱。
回到“train_continue_relay”并打开其属性。
切换到Outputs选项卡。
添加以下输出:
- My output named:“OnTrigger”
- Targets entities named:“train_end_relay”
- Via this input:“Trigger”
我们可以在这里建立FinaleEscapeFinished
输出,但是我们正在准备为“train_end_relay”添加其他内容。
更新导航
我们现在需要更新导航以包含RESCUE_VEHICLE区域。
按F9保存并编译地图。
当地图加载后,按Page_Down进入导航编辑模式。
使用noclip
N来到达地铁车厢搭载幸存者的地方。你会注意到地铁车厢在起始位置。你不必通过启动救援来让地铁到达搭载的位置。
只需调用控制台并输入“ent_fire train_start_relay trigger
”,然后按↵ Enter。
一旦地铁车厢到达位置,你可以在里面放置一个nav_mark_walkable
并使用nav_generate_incremental
B为其建立导航网格。
确保地铁车厢内的导航区域连接到地图中剩余的区域。
你应该看到连接这些区域的浅蓝色(青色)线。

如果这些区域未连接,请选择要连接的两个区域,然后使用nav_connect
Insert。

选择地铁车厢内的所有导航区域并在控制台中输入“mark RESCUE_VEHICLE
”以标记该属性。
这些都是一个正常工作的救援事件所必要的东西。现在,我们可以为救援事件添加一些可选的元素。