求生之路地图制作吧 关注:1,187贴子:4,890
  • 32回复贴,共1

【教程】制作救援关(压轴事件)

只看楼主收藏回复



1楼2014-08-10 09:49回复
    沙发


    来自手机贴吧2楼2014-08-10 09:53
    回复
      2025-06-07 06:40:21
      广告
      求生之路2在一些战役的终局来让生还者通过电台呼救,击退一波一波的感染者和Tank后,通过交通载具来逃生.在tutorial_standards map里也有这个案例.
      最终事件的元素
      ~以下是让终局生效的需做的几件事情:
      求生用的电台:trigger_finale,这只是一个无线电模型,换成别的也可以
      被标记为FINALE的导航区域
      一个逃生载具用来带走生还者(通常是带动画的 prop_dynamic )
      用trigger_multiple来确认是否所有生还者都挺过来并逃进载具
      四个info_survivor_positions当生还者被救后会传送到一个封闭的小房间
      ~可选择的放置物品:
      各种物资(弹药,武器,血包)
      结尾部分的一台摄像机
      为结尾部分做淡入淡出 需要一些实体:env_fade entities
      为结尾部分滚动演员表 一个实体:env_outtro_stats
      生还者用来防御的一个prop_minigun
      一个救援密室 - 一个带门的小房间 再在里面放置三个实体:info_survivor_rescue


      3楼2014-08-10 10:00
      回复
        现在来放置一个无线电模型。
        点击点实体工具
        从Objects下拉菜单选择trigger_finale.
        通过主视角将它放置到地上,再双击打开属性框。

        Name参数 改成radio
        在World model这一行点击再点击右边的Browse按钮.
        在Filter field(过滤区域) 输入 "radio" .
        选择模型"props\terror\hamradio.mdl" 再点确定,这个模型就是上图的模型
        Disable Shadows 参数改成 Yes.
        Use Delay 参数更改为0
        参数说明:
        Disable Shadows 这表示允许我们发送输入信息到到这个无线电模型,但不允许阴影被绘制到桌上.
        Use Delay 这个很常用. 按按钮之后 终局开始之前 需要多少秒的时间. 这里保留默认值0.

        现在保存并编译你的地图吧。
        在NAV上,
        记得将幸存者在终局防守的导航区域标记成FINALE。如果幸存者没有完全进入标记有FINALE的区域,按下无线电时就会提示“请等所有人准备好”。只有当所有幸存者都进入了标记有FINALE的导航区域,无线电才能按下。

        注意:在任意地图的控制台里用"nav_flood_select FINALE" 就能查看所有带FINALE属性的导航区域。你还可以用“nav_flood_select+其他属性”去查看被标记成其他属性的导航区域。
        常用的导航区域属性:
        · PLAYER_START
        · EMPTY
        · CHECKPOINT
        · BATTLEFIELD
        · BATTLESTATION
        · FINALE
        · NOT_CLEARABLE
        · NO_MOBS
        · OBSCURED
        · RESCUE_CLOSET
        · RESCUE_VEHICLE


        4楼2014-08-10 10:13
        回复
          现在,我们需要用trigger_multiple 来检查是否所有幸存者都登上了箱型车
          用建造工具用建造一个固体,并按Ctrl+T 转换为固实体。它的位置位于当救援到来时箱型车所在的位置。 这个固实体一定要完全包绕当救援到来箱型车所在的位置,以便于当幸存者一踏上箱型车,这个固实体就能检测到。
          将这个固实体6个面的材质都更改为trigger
          在过滤器中输入"trigger" 并选择 "tools/toolstrigger" 材质.

          包围住当救援到来时箱型车应当在的位置。

          双击打开其属性框
          Class参数改成trigger_multiple
          并点击Apply来看属性.
          Name参数改成train_trigger
          Start Disabled参数改成Yes
          Entire Team Number参数改成Survivor
          参数说明
          Start Disabled设置成yes表明幸存者无法一开始就启动它,需要等待救援到来时才能启动它。

          切换到Flags
          确保Clients 框被勾选.

          切换到outputs标签,现在我们将开始制作输出输入。其实并不难。
          输出输入简单认识
          点击下面的Add...新建一个输出。像下面的第二张图中那样,现在这个输出有一个红色的斜杠,说明它是错误,因为我们没有添加任何事件进去。
          my output:当玩家或另一些实体对它做了动作,这个实体就会记录下来并触发相应动作。就比如一个人被第二个人打了,那么第一个人被第二个人打就是输入。那人接下来做的动作就是输出。一个输出只能有一个被动动作。
          taegets entities named:输出实体名字也就是要做触发事件的实体,比如第一个人被打了不服气,他想还手,那么手就是这个输出实体。
          via this input:输出,就是触发相应的事件。比如第一个人对第二个人还手。
          with a parameter:参数,现在用不到。就比如第一个人对第二个人还手时用的力度。
          after a delay in:执行延迟。单位是秒,当输入后多久开始输出,0.0代表立即执行。就比如第一个人被打后多久还手。
          fire once on:只执行一次,如果被打上勾代表只输出一次。就比如第二个人无论打第一人多少次,第一个人只有开始还一次手。
          现在我们来开始制作。


          添加输出信息
          My output :OnEntireTeamStartTouch
          Targets entities :train_continue_relay
          Via this input:Trigger

          现在下面taegets entities named和via this input是红色的,说明它们现在是错误的。我们将在以后创建它,现在点击apply应用就行了。
          输出输入说明
          当幸存者触碰到这个实体时就会发送Trigger输出 到一个叫做"train_continue_relay"的logic_relay.的实体
          -----------------------------------------------------
          现在,我们来设置logic_relay 当幸存者触碰它就能触发所有事件.
          选择点实体工具,在Objects下拉菜单选择"logic_relay".
          在主视角将其放置到"train_trigger"附近,双击打开属性框
          Name 参数改成train_continue_relay
          当你将名字设置成功后,你会发现属性框下面突然多出一个顶着小球的箭头,那是成功的输入标志。你可以回到trigger_multiple看看,那个错误的输出上的红斜杠是不是已经消失了?
          说明你的刚才的那个输出输入已经设置成功了。

          来到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也能传送幸存者到安全地点.
          ----------------------------------------------
          我们还需要救援成功时幸存者所在的位置,它是一个小黑屋,封闭的,玩家、小丧尸无法进入的小黑屋。
          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
          --------------------------------可怜的幸存者


          6楼2014-08-10 16:02
          回复
            回到train_track02,就是那个位于中间 的、两端有路径线的立方体,path_track
            双击打开属性框切换到Outputs标签.
            还有些别的输出是关于舱门的打开,感染者挡道会被干掉,幸存者则会被推开. 现在忽视这些只管添加以下输出:
            ---------第一个-------
            My output named:OnPass
            Targets entities named :train
            Via this input:Stop
            --------------第二个------
            My output named:OnPass
            Targets entities named:train_trigger
            Via this input:Enable
            ------------第三个--------
            My output named:OnPass
            Targets entities named:radio
            Via this input: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标签.,添加以下输出信息:
            -----------------
            My output named:OnTrigger
            Targets entities named:train
            Via this input:StartForward
            -------------------------

            输出输入说明:这会让箱型车从初始位置开始驶向救援位置。
            点击Apply并关闭属性窗口。
            ===================
            现在,回到trigger_finale(无线电模型)并再次打开其属性.,切换到outputs,为trigger_finale添加输出信息:
            -----------------------------
            My output named:FinaleEscapeStarted
            Targets entities named:train_start_relay
            Via this input:Trigger
            ------------------------------------

            输出输入说明:当能站着的幸存者全部到达被标记为 "RESCUE_VEHICLE"属性的导航区域里后,启动train_start_relay,通过train_start_relay的输出,让箱型车带着幸存者逃离。
            ===========================
            我们仍然需要一个输出给trigger_finale 告诉它逃生已经完成。
            再创建一个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"-
            ----------------------

            如此一来"train_continue_relay"就有三个输出了。
            输出输入说明:这样的输出可以说是一个中转站,触发"train_continue_relay"后
            立即触发”train_end_relay“,通过"train_end_relay"来让幸存者逃脱。在这里我们可以让输出直接为FinaleEscapeFinished 但是我们准备为"train_end_relay"添加别的事件,例如结束动画。


            7楼2014-08-10 16:33
            回复
              更新导航
              我们现在需要更新一下包含RESCUE_VEHICLE区域的导航.
              按F9保存和编译地图,进入游戏后开始编译地图的NAV。
              使用穿墙去到救援来时箱型车所在的位置。你会注意到地铁在它的初始位置.你不需要打通终局关卡就能让地铁到达救援点。
              打开控制台并输入 "ent_fire train_start_relay trigger"再按Enter,救援会缓缓驶来并最终到达救援位置。
              当箱型车到达救援位置后,你可以放置一个nav_mark_walkable在里面 然后使用nav_generate_incremental来为它生产导航网.
              确保地铁内部的导航区域能连接到其他区域(车箱外的地面).
              注意:区域可以是单向或双向连接. 浅蓝线表示是双向连接,深蓝线则表示是单向连接。
              如果区域没有被连接,选择你想要连接的区域并使用nav_connect 。
              选择箱型车内部所有的导航区域 并在控制台里使用"mark RESCUE_VEHICLE" 来标记它们.
              记得用"mark BATTLEFIELD" 再标记所有区域,这告诉电脑控制的幸存者应该在哪里等待救援。然后在控制台输入“nav_trouble_report“检查NAV错误,任何一点错都会导致终局刷不出丧尸。
              这些就是让终局正常工作的必需品。但现在登上救援后并没有就救援动画,我们下一步就将制作逃离动画所必须的东西。
              现在NAV就制作完了,救援关制作再也用重新编译它了。
              -----------------
              疑难解答:为什么现在就编译NAV
              答:如果逃离动画做好再编译,当你踏上救援时,就能立即看到救援动画,然后生还者已逃脱 ,然后退出游戏,还没保存的NAV就悲剧了。
              ---------------


              8楼2014-08-10 17:29
              收起回复
                现在,让我们开始制作逃生动画,就是幸存者全部登上了救援箱型车后的动画。
                第一步放置摄像机。
                选择点实体工具在objects中选择 "point_viewcontrol_multiplayer"。将摄像机的镜头对准箱型车逃离的方向。在箱型车逃离后,玩家就会摄像机的视角观看逃离时的动画。
                打开它的属性.
                Name参数改成train_camera
                Seconds to reach FOV target改成0。这代表从玩家的视角过渡到摄像机的视角所花费的时间。
                你也可以更改Field of view,这代表视野宽窄度,数字越小越窄,越大则越宽..

                ------------------
                选择点实体工具,在Objects列表选择"env_fade",这个点实体的样子类似两扇窗帘。
                打开它的属性并更改:
                Name参数改为fade_outro_1
                Duration (seconds)参数改为0.2
                Hold Fade (seconds)参数改为0.3
                参数说明:Duration (seconds): 这是让屏幕逐渐黑屏所花费的时间(秒数)。
                Hold Fade (seconds):这是保持黑屏的时间(秒数)。
                --------
                然后放置第二个env_fade(也可复制fade_outro_1)并更改它的属性:
                Name参数改为fade_outro_2
                Duration (seconds)参数改为0.2
                Hold Fade (seconds)参数改为0
                切换到第二个env_fade的Flags标签,
                勾选Fade From框.
                这会淡出屏幕,从黑屏回到游戏,这时已经是摄像机的视角了。
                返回到第一个env_fade,也就是fade_outro_1 ,打开属性框并切换到Outputs标签.
                添加输出值 内容为:
                --------------
                My output named:OnBeginFade
                Targets entities named:fade_outro_2
                Via this input:Fade
                After a delay in seconds of:0.30
                -----------------
                这会在"fade_outro_1" 的效果下让屏幕黑屏0.3秒后,开始从黑屏淡出回到场景回到摄像机视角。这里有两个env_fade实体正好让视角黑屏后又快速移到摄像机视角。

                返回到"train_continue_relay".,这是我们制作的第一个logic_relay的名字。

                打开其属性框并切换到Outputs标签,添加两个输出输入 :(再次说明,本教程所有参数单词前面或后面均没有空格)
                ----------------- 第一个------
                My output named:OnTrigger
                Targets entities named:train_camera
                Via this input:Enable
                After a delay in seconds of:0.30
                -------------------第二个------------
                My output named:OnTrigger
                Targets entities named:fade_outro_1
                Via this input:Fade
                -----------------------------------------------
                输出输入说明:第一个,这会让玩家视角转变成为"train_camera"视角,也就是摄像机的视角。
                第二个:这会在幸存者逃离之前的0.2秒,让env_fade进入黑屏,以便让开关不会冲突.
                ------------------------------
                现在这个实体已经有五个输出输入了。

                现在,我们需要幸存者逃脱后再一次黑屏,显示出“幸存者已逃脱”字样和其他统计数据。
                放置第三个env_fade (或复制"fade_outro_1") 并打开它的属性:
                ----------------
                Name参数更改为fade_outro_3
                Duration (seconds)参数更改为0.3
                Hold Fade (seconds)参数更改为0
                --------------------
                切换到第三个env_fade的Flags标签。
                勾选Stay Out框.
                意思是一旦它让游戏黑屏,就会持续黑屏,这样系统就能把各种游戏数据呈现给玩家。
                --------------------------------------------------
                让我们放置一个info_game_event_proxy关闭指导信息。这需要从点实体的objects下拉菜单中选择。

                在摄像机视窗放置好并打开属性
                ---------------------------------
                Name参数改为gameinstructor_disable
                Name of the event to generate参数改为gameinstructor_nodraw
                ----------------------------------
                这表示已经设置成不绘制任何指导信息.
                =================================
                再放置一个env_outtro_stats,这也是一个点实体。这会在战役结束出现统计的位置用来显示各种统计信息。
                ----------------------------
                Name 参数改成 outro
                ----------------------------
                回到"train_end_relay"这是我们制作的第三个logic_relay的名字。打开其属性:
                切换到Outputs标签,添加如下输出:
                ---------------------------第一个
                My output named:OnTrigger
                Targets entities named:gameinstructor_disable
                Via this input:GenerateGameEvent
                --------------------第二个
                My output named:OnTrigger
                Targets entities named:fade_outro_3
                Via this input:Fade
                After a delay in seconds of:5
                --------------第三个
                My output named:OnTrigger
                Targets entities named:outro
                Via this input:RollStatsCrawl
                After a delay in seconds of:10
                -----------------------------------------------
                然后这个点实体就有五个输出输入了

                点击Apply并关闭属性窗口。
                ================================================
                按F9保存和编译你的地图。救援关终于做完了,因为NAV在之前就已经编译好了,现在玩一下你的地图吧


                箱型车已开走,(别注意轮子,只是高度没放好),生还者已经逃脱!


                9楼2014-08-10 20:18
                回复
                  2025-06-07 06:34:21
                  广告
                  本教程终于完毕,弄了一天了--------


                  10楼2014-08-10 20:19
                  回复
                    求助...做完后没有尸潮...


                    来自iPhone客户端11楼2015-08-15 12:50
                    收起回复