教程制作救援关压轴事件.docx
- 文档编号:11437693
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:29
- 大小:915.17KB
教程制作救援关压轴事件.docx
《教程制作救援关压轴事件.docx》由会员分享,可在线阅读,更多相关《教程制作救援关压轴事件.docx(29页珍藏版)》请在冰豆网上搜索。
教程制作救援关压轴事件
【教程】制作救援关(压轴事件)
求生之路2在一些战役的终局来让生还者通过电台呼救,击退一波一波的感染者和Tank后,通过交通载具来逃生.在tutorial_standardsmap里也有这个案例.
最终事件的元素
~以下是让终局生效的需做的几件事情:
求生用的电台:
trigger_finale,这只是一个无线电模型,换成别的也可以
被标记为FINALE的导航区域
一个逃生载具用来带走生还者(通常是带动画的prop_dynamic)
用trigger_multiple来确认是否所有生还者都挺过来并逃进载具
四个info_survivor_positions当生还者被救后会传送到一个封闭的小房间
~可选择的放置物品:
各种物资(弹药,武器,血包)
结尾部分的一台摄像机
为结尾部分做淡入淡出需要一些实体:
env_fadeentities
为结尾部分滚动演员表一个实体:
env_outtro_stats
生还者用来防御的一个prop_minigun
一个救援密室-一个带门的小房间再在里面放置三个实体:
info_survivor_rescue
现在来放置一个无线电模型。
点击点实体工具
从Objects下拉菜单选择trigger_finale.
通过主视角将它放置到地上,再双击打开属性框。
Name参数改成radio
在Worldmodel这一行点击再点击右边的Browse按钮.
在Filterfield(过滤区域)输入"radio".
选择模型"props\terror\hamradio.mdl"再点确定,这个模型就是上图的模型
DisableShadows参数改成Yes.
UseDelay参数更改为0
参数说明:
DisableShadows这表示允许我们发送输入信息到到这个无线电模型,但不允许阴影被绘制到桌上.
UseDelay这个很常用.按按钮之后终局开始之前需要多少秒的时间.这里保留默认值0.
现在保存并编译你的地图吧。
在NAV上,
记得将幸存者在终局防守的导航区域标记成FINALE。
如果幸存者没有完全进入标记有FINALE的区域,按下无线电时就会提示“请等所有人准备好”。
只有当所有幸存者都进入了标记有FINALE的导航区域,无线电才能按下。
注意:
在任意地图的控制台里用"nav_flood_selectFINALE"就能查看所有带FINALE属性的导航区域。
你还可以用“nav_flood_select+其他属性”去查看被标记成其他属性的导航区域。
常用的导航区域属性:
·PLAYER_START
·EMPTY
·CHECKPOINT
·BATTLEFIELD
·BATTLESTATION
·FINALE
·NOT_CLEARABLE
·NO_MOBS
·OBSCURED
·RESCUE_CLOSET
·RESCUE_VEHICLE
现在,让我们制作逃生载具.
在求生之路2,四个战役各有不同的逃生载具.如:
直升机,船,飞机,装甲车.
实际上任何都行.甚至是一个敞开门的房间。
为了让Z版、D版都能用,本教程选择箱型车作为逃生载具。
选择点实体工具,在objects中选择prop_dynamic,不能用prop_static,否则它就无法移动。
选择箱型车模型:
models/props/de_nuke/truck_nuke.mdl
然后将这个模型放在当救援到来时它所在的地方。
现在有了做为逃生载具的模型.现在我们需要一个固实体func_tracktrain来让模型移动.
创建func_tracktrain
选择建造工具,在2D视图中绘制一个固体,长宽跟箱型车一样,按Enter创建。
但它很矮,我一般将它的高度设置为10个单位。
让它紧贴地表和箱型车模型底部。
然后将这个固体的纹理改为nodraw,它看起来如下图。
让这个固体被选中,按Ctrl+T.,将它转变为固实体。
双击它,打开属性框,更改属性:
(本教程所有参数单词前面或后面均没有空格)
Class参数改为func_tracktrain
Name参数改为train
FirstStopTarget参数改为train_track01.
MaxSpeed参数改为25
Heightabovetrack参数改为0
参数说明:
FirstStopTarget第一站目标,参数上是一个实体名称,现在在属性框它是红色的,这不要紧,因为还没有这个实体。
我们将在之后创建它。
MaxSpeed最大速度,就是当救援到来时它的移动速度。
25的速度和幸存者扎针跑的速度差不多,你要想设置成100也可以。
Heightabovetrack轨道高度,因为箱型车是在地面上开并紧贴这个固体,所以高度是0。
但在一些飞机的动画中,这个高度可能就要更改。
func_tracktrain的Flags标签.
切换到Flags标签.
勾选NoUserControl框.
勾选FixedOrientation框.
勾选Isunblockablebyplayer框.
点击Apply关闭窗口
添加实体path_track
将你的箱型车模型和那个固实体放在初始位置,就是救援没有到来时它所在的位置,应当把它藏起来,让玩家看不到。
现在我们需要建立一条路径让我们的箱型车知道怎样运行。
选择点实体工具,在Objects下拉菜单选择path_track,在3D视图上创建它,它是一个立方体。
在2D视图中将它放置到箱型车的正中间。
无论是XYZ都要放到中间,让path_track的中心的小X和箱型车位置的小X基本重合,相差一点没有关系,但不能相差太远。
双击打开它的属性框
Name参数改成train_track01
NextStopTarget参数改成train_track02
参数说明
现在这第一个path_track的位置就是箱型车的第一站位置,就是救援没有到来时它所在的位置
NextStopTarget就是箱型车第二站的位置,就是救援到来时它所在的位置
点Apply并关闭属性窗口。
现在放置第二个path_track。
你也可以复制第一个。
这个path_track的位置就是救援到来时箱型车应该在的位置的中心。
高度保持与第一个path_track一样。
然后更改属性参数
Name参数改成train_track02
NextStopTarget参数改成train_track03
然后放置第三个path_track,这个path_track的位置就是在幸存者都到达箱型车后箱型车将要到达的位置的中心。
Name参数改成train_track03
NextStopTarget参数位置留空,因为已经没有下一站了。
如果你成功的制作了三个path_track,你会看到三个path_track会有两根线,这些线就是箱型车的运动轨迹,如下图(中间那个立方体是第二个path_track)。
回到prop_dynamic,就是那个箱型车模型,并打开它的属性.
Parent参数改成train
这就意味着不管func_tracktrain移动到哪里,箱型车模型都会跟随着移动.,因为func_tracktrain是箱型车的Parent啊
错误更改:
立方体应该紧贴地面,否则你会看到箱型车悬空。
抱歉!
现在,我们需要用trigger_multiple来检查是否所有幸存者都登上了箱型车
用建造工具用建造一个固体,并按Ctrl+T转换为固实体。
它的位置位于当救援到来时箱型车所在的位置。
这个固实体一定要完全包绕当救援到来箱型车所在的位置,以便于当幸存者一踏上箱型车,这个固实体就能检测到。
将这个固实体6个面的材质都更改为trigger
在过滤器中输入"trigger"并选择"tools/toolstrigger"材质.
包围住当救援到来时箱型车应当在的位置。
双击打开其属性框
Class参数改成trigger_multiple
并点击Apply来看属性.
Name参数改成train_trigger
StartDisabled参数改成Yes
EntireTeamNumber参数改成Survivor
参数说明
StartDisabled设置成yes表明幸存者无法一开始就启动它,需要等待救援到来时才能启动它。
切换到Flags
确保Clients框被勾选.
切换到outputs标签,现在我们将开始制作输出输入。
其实并不难。
输出输入简单认识
点击下面的Add...新建一个输出。
像下面的第二张图中那样,现在这个输出有一个红色的斜杠,说明它是错误,因为我们没有添加任何事件进去。
myoutput:
当玩家或另一些实体对它做了动作,这个实体就会记录下来并触发相应动作。
就比如一个人被第二个人打了,那么第一个人被第二个人打就是输入。
那人接下来做的动作就是输出。
一个输出只能有一个被动动作。
taegetsentitiesnamed:
输出实体名字也就是要做触发事件的实体,比如第一个人被打了不服气,他想还手,那么手就是这个输出实体。
viathisinput:
输出,就是触发相应的事件。
比如第一个人对第二个人还手。
withaparameter:
参数,现在用不到。
就比如第一个人对第二个人还手时用的力度。
afteradelayin:
执行延迟。
单位是秒,当输入后多久开始输出,0.0代表立即执行。
就比如第一个人被打后多久还手。
fireonceon:
只执行一次,如果被打上勾代表只输出一次。
就比如第二个人无论打第一人多少次,第一个人只有开始还一次手。
现在我们来开始制作。
添加输出信息
Myoutput:
OnEntireTeamStartTouch
Targetsentities:
train_continue_relay
Viathisinput:
Trigger
现在下面taegetsentitiesnamed和viathisinput是红色的,说明它们现在是错误的。
我们将在以后创建它,现在点击apply应用就行了。
输出输入说明
当幸存者触碰到这个实体时就会发送Trigger输出到一个叫做"train_continue_relay"的logic_relay.的实体
-----------------------------------------------------
现在,我们来设置logic_relay当幸存者触碰它就能触发所有事件.
选择点实体工具,在Objects下拉菜单选择"logic_relay".
在主视角将其放置到"train_trigger"附近,双击打开属性框
Name参数改成train_continue_relay
当你将名字设置成功后,你会发现属性框下面突然多出一个顶着小球的箭头,那是成功的输入标志。
你可以回到trigger_multiple看看,那个错误的输出上的红斜杠是不是已经消失了?
说明你的刚才的那个输出输入已经设置成功了。
来到train_continue_relay的outputs标签,添加以下输出
------------------------
Myoutputnamed:
OnTrigger
Targetsentitiesnamed:
train
Viathisinput:
StartForward"
---------------然后还要添加
Myoutputnamed:
OnTrigger
Targetsentitiesnamed:
radio
Viathisinput:
:
FinaleEscapeForceSurvivorPositions
输出输入说明:
当幸存者存活并且还能碰到"train_trigger",那么箱型车就会带着幸存者离开。
logic_relay也能传送幸存者到安全地点.
----------------------------------------------
我们还需要救援成功时幸存者所在的位置,它是一个小黑屋,封闭的,玩家、小丧尸无法进入的小黑屋。
PS:
话说幸存者上了救援后不是应该离开了吗?
怎么被关到小黑屋了?
选择点实体工具,在objects中选择"info_survivor_position".
在1小黑屋里放置4个,当救援成功时,幸存者就被传送到这里。
更改所有4个幸存者模型的属性,顺序随便,别重复就行
逐个打开其属性进行以下修改.
----------第一个:
Name参数改为train_survivor_pos1
------------第二个:
Name参数改为train_survivor_pos2
Order参数改为2
---------第三个:
Name参数改为train_survivor_pos3
Order参数改为3
----------第四个:
Name参数改为train_survivor_pos4
Order参数改为4
--------------------------------可怜的幸存者
回到train_track02,就是那个位于中间的、两端有路径线的立方体,path_track
双击打开属性框切换到Outputs标签.
还有些别的输出是关于舱门的打开,感染者挡道会被干掉,幸存者则会被推开.现在忽视这些只管添加以下输出:
---------第一个-------
Myoutputnamed:
OnPass
Targetsentitiesnamed:
train
Viathisinput:
Stop
--------------第二个------
Myoutputnamed:
OnPass
Targetsentitiesnamed:
train_trigger
Viathisinput:
Enable
------------第三个--------
Myoutputnamed:
OnPass
Targetsentitiesnamed:
radio
Viathisinput:
FinaleEscapeVehicleReadyForSurvivors
-----------------------------
输出输入说明:
第一个,当箱型车到达这第二个path_track的位置时,则会停下来。
第二个:
这个输出将会启用trigger_multiple,也就是trigger_multiple开始检查还站着的幸存者是否已经都到了箱型车上。
第三个:
这会告诉电脑控制的幸存者火速赶往被标记为"RESCUE_VEHICLE"属性的导航区域.
========================
创建logic_relay让地铁启动.
我们仍然需要发送一些输入信息给func_tracktrain让其从初始位置启动到达救援的位置.
选择实体工具,在Objects下拉菜单选择"logic_relay"。
放在"train_continue_relay",也就是第一个"logic_relay"附近并打开它的属性.。
Name参数改为train_start_relay
切换到Outputs标签.,添加以下输出信息:
-----------------
Myoutputnamed:
OnTrigger
Targetsentitiesnamed:
train
Viathisinput:
StartForward
-------------------------
输出输入说明:
这会让箱型车从初始位置开始驶向救援位置。
点击Apply并关闭属性窗口。
===================
现在,回到trigger_finale(无线电模型)并再次打开其属性.,切换到outputs,为trigger_finale添加输出信息:
-----------------------------
Myoutputnamed:
FinaleEscapeStarted
Targetsentitiesnamed:
train_start_relay
Viathisinput:
Trigger
------------------------------------
输出输入说明:
当能站着的幸存者全部到达被标记为"RESCUE_VEHICLE"属性的导航区域里后,启动train_start_relay,通过train_start_relay的输出,让箱型车带着幸存者逃离。
===========================
我们仍然需要一个输出给trigger_finale告诉它逃生已经完成。
再创建一个logic_relay,这已经是第三个了。
创建方法不再叙述。
创建完后打开属性框:
Name参数改成train_end_relay
切换到Outputs标签,添加一个输出内容为:
--------------------
Myoutputnamed:
OnTrigger
Targetsentitiesnamed:
radio
Viathisinput:
FinaleEscapeFinished
Afteradelayinseconds:
2
---------------------
输出输入说明:
这会让trigger_finale被触发后两秒钟,幸存者就成功逃脱。
这2秒是用来给黑屏的时间。
=====================
回到"train_continue_relay"并打开其属性.
切换到Outputs标签,添加输出信息内容为:
-----------------
Myoutputnamed:
OnTrigger
Targetsentitiesnamed:
train_end_relay
Viathisinput:
Trigger"-
----------------------
如此一来"train_continue_relay"就有三个输出了。
输出输入说明:
这样的输出可以说是一个中转站,触发"train_continue_relay"后
立即触发”train_end_relay“,通过"train_end_relay"来让幸存者逃脱。
在这里我们可以让输出直接为FinaleEscapeFinished但是我们准备为"train_end_relay"添加别的事件,例如结束动画。
更新导航
我们现在需要更新一下包含RESCUE_VEHICLE区域的导航.
按F9保存和编译地图,进入游戏后开始编译地图的NAV。
使用穿墙去到救援来时箱型车所在的位置。
你会注意到地铁在它的初始位置.你不需要打通终局关卡就能让地铁到达救援点。
打开控制台并输入"ent_firetrain_start_relaytrigger"再按Enter,救援会缓缓驶来并最终到达救援位置。
当箱型车到达救援位置后,你可以放置一个nav_mark_walkable在里面然后使用nav_generate_incremental来为它生产导航网.
确保地铁内部的导航区域能连接到其他区域(车箱外的地面).
注意:
区域可以是单向或双向连接.浅蓝线表示是双向连接,深蓝线则表示是单向连接。
如果区域没有被连接,选择你想要连接的区域并使用nav_connect。
选择箱型车内部所有的导航区域并在控制台里使用"markRESCUE_VEHICLE"来标记它们.
记得用"markBATTLEFIELD"再标记所有区域,这告诉电脑控制的幸存者应该在哪里等待救援。
然后在控制台输入“nav_trouble_report“检查NAV错误,任何一点错都会导致终局刷不出丧尸。
这些就是让终局正常工作的必需品。
但现在登上救援后并没有就救援动画,我们下一步就将制作逃离动画所必须的东西。
现在NAV就制作完了,救援关制作再也用重新编译它了。
-----------------
疑难解答:
为什么现在就编译NAV
答:
如果逃离动画做好再编译,当你踏上救援时,就能立即看到救援动画,然后生还者已逃脱,然后退出游戏,还没保存的NAV就悲剧了。
---------------
现在,让我们开始制作逃生动画,就是幸存者全部登上了救援箱型车后的动画。
第一步放置摄像机。
选择点实体工具在objects中选择"point_viewcontrol_multiplayer"。
将摄像机的镜头对准箱型车逃离的方向。
在箱型车逃离后,玩家就会摄像机的视角观看逃离时的动画。
打开它的属性.
Name参数改成train_camera
SecondstoreachFOVtarget改成0。
这代表从玩家的视角过渡到摄像机的视角所花费的时间。
你也可以更改Fieldofview,这代表视野宽窄度,数字越小越窄,越大则越宽..
------------------
选择点实体工具,在Objects列表选择"env_fade",这个点实体的样子类似两扇窗帘。
打开它的属性并更改:
Name参数改为fade_outro_1
Duration(seconds)参数改为0.2
HoldFade(seconds)参数改为0.3
参数说明:
Duration(seconds):
这是让屏幕逐渐黑屏所花费的时间(秒数)。
HoldFade(seconds):
这是保持黑屏的时间(秒数)。
--------
然后放置第二个env_fade(也可复制fade_outro_1)并更改它的属性:
Name参数改为fade_outro_2
Duration(seconds)参数改为0.2
HoldFade(seconds)参数改为0
切换到第二个env_fade的Flags标签,
勾选FadeFrom框.
这会淡出屏幕,从黑屏回到游戏,这时已经是摄像机的视角了。
返回到第一个env_fade,也就是fade_outro_1,打开属性框并切换到Outputs标签.
添加输出值内容为:
--------------
Myoutputnamed:
OnBeginFade
Targetsentitiesnamed:
fade_outro_2
Viathisinput:
Fade
Afteradelayinsecondsof:
0.30
-----------------
这会在"fade_outro_1"的效果下让屏幕黑屏0.3秒后,开始从黑屏淡出回到场景回到摄像机视角。
这里有两个env_fade实体正好让视角黑屏后又快速移到摄像机视角。
返回到"train_continue_relay".,这是我们制作的第一个logic_relay的名字。
打开其属性框并切换到Outputs标签,添加两个输出输入:
(再次说明,本教程所有参数单词前面或后面均没有空格)
-----------------第一个------
Myoutputnamed:
OnTrigger
Targetsentitiesnamed:
train_camera
Viathisinput:
Enable
Afte
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教程 制作 救援 压轴 事件