光盘房间
光盘房间是Atlas和P-body完成课程后必须面对的最后挑战。它位于GLaDOS影响范围之外的区域,是人类对抗GLaDOS日益增长设施控制权的最后防线。
光盘生产机
光盘生产机是生成光盘的设备。如果光盘丢失或溶解,它可以重新生成光盘。它通常放置在课程最后一个测试室的光盘接收器附近。但这并非必须如此;将发射器放置在测试室起点可以设计出一些有趣的谜题,其中主要目标是确保光盘不会丢失。
步骤1 - 设置
创建一个prop_static并将其模型设置为models/props_gameplay/laser_disc_player.mdl,将其放置在光盘房间的任何位置。这是拾取光盘的地方。
现在我们将创建光盘;一个prop_dynamic_override。按如下设置其属性:
Property Name Value Name start_disc Parent spawner_door World Model laser_disc.mdl Disable Shadows Yes
按照右侧图片所示将光盘模型放置在设备中。
现在创建一个8x20x1的笔刷并用tools/toolsinvisible纹理化。再次按照右侧图片所示将其放置在光盘模型上方。将刷子绑定到实体(按Ctrl+T)并使其成为func_door。现在按如下设置其属性:
Property Name Value Name spawner_door Speed 26 Start Sound World.LaserDiskLoad Delay Before Reset (-1 stay) -1 Loop Moving Sound Yes Move Direction 0 0 0
laser_disc_player.mdl所具有的俯仰角、偏航角、滚动角。现在必须创建另一个实体prop_physics_override,这将是玩家携带的光盘。按住⇧ Shift并拖动_start_disc_到其不再位于设备中且仅其"尖端"接触入口的位置。将其"类"更改为prop_physics_override并命名为disc。
步骤2 - 光盘再生
这里我们将制作一些模板以便在光盘丢失时重新生成它。
创建一个具有以下属性的point_template:
Property Name Value Name template_disc_spawn Template 1 start_disc Template 2 spawner_door
再创建一个具有这些属性的point_template:
Property Name Value Name template_disc Template 1 disc
步骤3 - 输出系统
制作完使发射器工作所需的所有实体后,剩下的就是连接它们的动作以形成光盘;让我们做一些输入/输出连接!
首先创建一个具有以下输出的logic_auto:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnMapSpawn template_disk_spawn ForceSpawn 0.00 No
打开您的spawner_door的'输出'选项卡并添加以下属性:
现在向您的template_disc_spawn添加以下输出:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnEntitySpawned spawner_door Open 0.00 No
确保检测光盘是否丢失或被销毁的实体具有以下输出:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnTrigger template_disk_spawn ForceSpawn 0.00 No
现在发射器应该可以工作了,并在最后一个光盘消失时分配新的光盘。然而,这仅仅是使光盘房间正常运行过程的三分之一。
光盘接收器
光盘接收器(也称为光盘播放器)是放置光盘以实现其目的的地方;将光盘放入接收器会打开显示GLaDOS正在寻找信息的视频。
步骤1 - 初始化
在您的光盘房间中放置一个prop_static,并将其模型设置为models/props_gameplay/laser_disc_player.mdl。这是玩家将放置光盘以结束关卡的地方。
当玩家将光盘放置在接收器附近时,所携带的光盘将被移除,并且一个隐藏的光盘将加载。我们这样做是为了更好地控制光盘进入接收器的方式,并简单地克服许多问题。需要另一个prop_dynamic_override,即通过附加到func_door在设备中加载的那个。
Property Name Value Parent loader_door Disable Shadows Yes World Model laser_disc.mdl Name hidden_disc
光盘需要按照右侧图片所示放置。
现在使用tools/toolsinvisible创建一个func_door刷子。再次按照右侧图片所示将其放置在光盘模型上方。添加以下属性:
Property Name Value Name loader_door Speed 8 Start Sound World.LaserDiskLoad Delay Before Reset (-1 stay) -1 Loop Moving Sound Yes Move Direction 0 180 0
步骤2 - 加载
步骤1列出了用于光盘接收器的可见实体,此步骤将列出不可见实体。
第一个是trigger_once刷子,第二个是filter_activator_name。现在添加以下属性:
1. trigger_once:
Property Name Value Name Filter Name disc_filter
确保 Physics Objects的Flag被勾选。
2. filter_activator_name:
Property Name Value Name disc_filter Filter Name disc
步骤3 - 输入系统
为了使所有东西互动,我们将使用输入/输出系统。记得我们使用过的logic_auto吗?打开其输出选项卡并添加以下属性:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnMapSpawn hidden_disc TurnOff 0.00 No
向trigger_once添加以下输出:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnStartTouch hidden_disc TurnOn 0.00 No 
OnStartTouch !activator Kill 0.00 No 
OnStartTouch loader_door Open 0.00 No
向loader_door实体添加一个输出:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnFullyOpen disc_loaded_relay Trigger 0.00 No
现在光盘接收器应该可以运行并在光盘放入时接受它。然而,这仅仅是完成光盘房间过程的又一步骤。
投射动画影片
投射动画影片是其中一个光盘插入后发生的事情, 包括最后的机器人爆炸。
步骤1 - 设置动画
我们将首先放置一个prop_static并将其模型设置为projector_screen.mdl(通过在模型筛选栏中输入"projector"轻松找到)。现在在其左下角放置一个具有以下属性的vgui_movie_display:
Property Name Value Name insert_disc_movie Movie Filename media/insert_disk.bik Loop Movie Yes Stretch to Fill Yes Force precache Yes Panel width 156 Panel height 112
再次打开我们的logic_auto的属性并添加这些输出:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnMapSpawn insert_disc_movie Enable 0.00 No
现在在与上一个完全相同的位置制作另一个vgui_movie_display实体(只需将刚刚创建的实体拖动一个单位,然后移回)。唯一的区别是名称和它将显示的视频:
Property Name Value Name aperture_movie Movie Filename media/coop_bts_blueprints.bik Loop Movie Yes Stretch to Fill Yes Force precache Yes Panel width 156 Panel height 112
步骤2 - 拉开帷幕
记得我们使用过但未制作的disc_loaded_relay实体吗?好吧,我们现在要使用它。首先创建一个logic_relay并将其命名为disc_loaded_relay。打开输出标志并添加以下属性:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnTrigger insert_disc_movie Disable 2.00 No 
OnTrigger aperture_movie Enable 2.00 No
创建一个具有这些属性的ambient_generic:
Property Name Value Name disc_windup_sound Sound Name World.LaserDiskPowerUp
并向disc_loaded_relay再添加一个输出:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnTrigger disc_windup_sound PlaySound 0.00 No
最后一切应该都正常工作了!
收尾工作
- 添加一个实例并将其VMF文件名设置为
coop_lighting_ents.vmf。您可以从此处选择地图将具有的雾选项(雾密度、颜色等)。然而,更重要的是,其中有四个env_global,每个都可以启用、禁用机器人的ping和嘲讽能力。您应该有一个在光盘加载时触发的logic_relay,具有四个输出:
- 放置一个trigger_hurt,其伤害键值设置为10000。确保它覆盖整个光盘房间,并且不要忘记禁用它。在适当的时刻,可能当GLaDOS发表她的最终声明时,启用trigger_hurt刷子使机器人爆炸。
- 在您的房间中放置一个具有以下设置的point_clientcommand:
Property Name Value Name levelchange
向您的trigger_hurt添加此输出:
My Output > Target Entity Target Input Parameter Delay Only Once 
OnHurt levelchange command changelevel {hub or next chamber} 0.00 No
- 放置一个面向您的屏幕的静态模型,并将其模型设置为
models/props_underground/projector.mdl。在投影仪上放置三个point_spotlight,您会知道放在哪里。 - 在光盘房间的某处通常有一个白板(
models/props_office/whiteboard_coop.mdl),声称不要上传光盘。为了与Valve地图保持一致,我建议也放置一个。它带有6种不同的皮肤。