Zh/Disc Room: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
(Created page with "{{LanguageBar|Disc Room|title=光盘房间}} thumb|right|350px|"有时候测试必须在实验室之外进行。"<br>- '''GLaDOS''' {{portal2}} '''光盘房间'''是GLaDOS和P-body完成课程后必须面对的最后挑战。它位于GLaDOS影响范围之外的区域,是人类对抗GLaDOS日益增长设施控制权的最后防线。 == 光盘生产机 == '''光盘生产机'''是生成光盘的设备。如果光盘丢失或溶解,它可以重...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{LanguageBar|Disc Room|title=光盘房间}}
{{LanguageBar|Disc Room|title=光盘房间}}
[[File:Insert disk.jpg|thumb|right|350px|"有时候测试必须在实验室之外进行。"<br>- '''GLaDOS''']]
[[File:Insert disk.jpg|thumb|right|350px|"Sometimes testing has to occur outside the confines of the lab."<br>- '''GLaDOS''']]
{{portal2}} '''光盘房间'''是GLaDOS和P-body完成课程后必须面对的最后挑战。它位于GLaDOS影响范围之外的区域,是人类对抗GLaDOS日益增长设施控制权的最后防线。
{{portal2}} '''光盘房间'''是Atlas和P-body完成课程后必须面对的最后挑战。它位于GLaDOS影响范围之外的区域,是人类对抗GLaDOS日益增长设施控制权的最后防线。


== 光盘生产机 ==
== 光盘生产机 ==
Line 23: Line 23:
按照右侧图片所示将光盘模型放置在设备中。
按照右侧图片所示将光盘模型放置在设备中。


现在创建一个8x20x1的刷子并用<code>tools/toolsinvisible</code>纹理化。再次按照右侧图片所示将其放置在光盘模型上方。将刷子绑定到实体(按{{key|Ctrl|T}})并使其成为{{L|func_door}}。现在按如下设置其属性:
现在创建一个8x20x1的笔刷并用<code>tools/toolsinvisible</code>纹理化。再次按照右侧图片所示将其放置在光盘模型上方。将刷子绑定到实体(按{{key|Ctrl|T}})并使其成为{{L|func_door}}。现在按如下设置其属性:
::{| class=standard-table
::{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 114: Line 114:
|}
|}


{{Tip|通常建议让销毁所述光盘的实体触发输出。例如,当{{L|Emancipation Grid|销毁网格}}溶解光盘时,它将触发OnDissolve输出。请检查没有其他物理对象可以被该销毁网格溶解。}}
{{Tip|通常建议让分解所述光盘的实体触发输出。例如,当{{L|Emancipation Grid|分解网}}溶解光盘时,它将触发OnDissolve输出。请检查没有其他物理对象可以被该分解网溶解。}}
现在发射器应该可以工作了,并在最后一个光盘消失时分配新的光盘。然而,这仅仅是使光盘房间正常运行过程的三分之一。
现在发射器应该可以工作了,并在最后一个光盘消失时分配新的光盘。然而,这仅仅是使光盘房间正常运行过程的三分之一。


Line 156: Line 156:
|}
|}
{{Note|移动方向应设置为您的laser_disc_player.mdl所具有的相反的俯仰角、偏航角、滚动角。}}
{{Note|移动方向应设置为您的laser_disc_player.mdl所具有的相反的俯仰角、偏航角、滚动角。}}
{{Note|func_door刷子的长度取决于您希望光盘进入多远;光盘有25个单位半径,您可以据此判断。在上面的图片中,刷子长26个单位,使整个光盘进入。}}
{{Note|func_door笔刷的长度取决于您希望光盘进入多远;光盘有25个单位半径,您可以据此判断。在上面的图片中,刷子长26个单位,使整个光盘进入。}}


=== 步骤2 - 加载 ===
=== 步骤2 - 加载 ===
Line 170: Line 170:
| Filter Name || disc_filter
| Filter Name || disc_filter
|}
|}
确保'''物理对象'''标志被勾选。
确保Flags中''' Physics Objects'''这个Flag被勾选。


2. '''filter_activator_name''':
2. '''filter_activator_name''':
Line 218: Line 218:
现在光盘接收器应该可以运行并在光盘放入时接受它。然而,这仅仅是完成光盘房间过程的又一步骤。
现在光盘接收器应该可以运行并在光盘放入时接受它。然而,这仅仅是完成光盘房间过程的又一步骤。


== 投影电影 ==
== 投射动画影片 ==
[[File:Coop bts blueprints.jpg|thumb|right|300px|这是奇迹发生的地方。]]
[[File:Coop bts blueprints.jpg|thumb|right|300px|这是奇迹发生的地方。]]
'''投影电影'''是加载光盘后发生的序列。包括最后的机器人爆炸。
'''投射动画影片'''是其中一个光盘插入后发生的事情, 包括最后的机器人爆炸。


=== 步骤1 - 设置影片 ===
=== 步骤1 - 设置动画 ===
我们将首先放置一个prop_static并将其模型设置为<code>projector_screen.mdl</code>(通过在模型筛选栏中输入"projector"轻松找到)。现在在其左下角放置一个具有以下属性的{{L|vgui_movie_display}}:
我们将首先放置一个prop_static并将其模型设置为<code>projector_screen.mdl</code>(通过在模型筛选栏中输入"projector"轻松找到)。现在在其左下角放置一个具有以下属性的{{L|vgui_movie_display}}:
::{| class=standard-table
::{| class=standard-table

Latest revision as of 01:24, 9 November 2025

English (en)Русский (ru)中文 (zh)Translate (Translate)
"Sometimes testing has to occur outside the confines of the lab."
- GLaDOS

传送门2 光盘房间是Atlas和P-body完成课程后必须面对的最后挑战。它位于GLaDOS影响范围之外的区域,是人类对抗GLaDOS日益增长设施控制权的最后防线。

光盘生产机

光盘生产机是生成光盘的设备。如果光盘丢失或溶解,它可以重新生成光盘。它通常放置在课程最后一个测试室的光盘接收器附近。但这并非必须如此;将发射器放置在测试室起点可以设计出一些有趣的谜题,其中主要目标是确保光盘不会丢失。

步骤1 - 设置

对齐网格(en):2

创建一个prop_static(en)并将其模型设置为models/props_gameplay/laser_disc_player.mdl,将其放置在光盘房间的任何位置。这是拾取光盘的地方。

现在我们将创建光盘;一个prop_dynamic_override(en)。按如下设置其属性(en)

Property Name Value
Name start_disc
Parent spawner_door
World Model laser_disc.mdl
Disable Shadows Yes

按照右侧图片所示将光盘模型放置在设备中。

现在创建一个8x20x1的笔刷并用tools/toolsinvisible纹理化。再次按照右侧图片所示将其放置在光盘模型上方。将刷子绑定到实体(按Ctrl+T)并使其成为func_door(en)。现在按如下设置其属性:

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
Note.png注意:移动方向应设置为您的laser_disc_player.mdl所具有的俯仰角、偏航角、滚动角(en)

现在必须创建另一个实体prop_physics_override(en),这将是玩家携带的光盘。按住 Shift并拖动_start_disc_到其不再位于设备中且仅其"尖端"接触入口的位置。将其"类"更改为prop_physics_override并命名为disc。

步骤2 - 光盘再生

这里我们将制作一些模板以便在光盘丢失时重新生成它。

Note.png注意:此步骤对于发射器运行并非关键,如果在您的地图中没有丢失光盘的可能性,请跳至步骤3。

创建一个具有以下属性的point_template(en)

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 - 输出系统

这次,一切就绪。
对齐网格(en):8

制作完使发射器工作所需的所有实体后,剩下的就是连接它们的动作以形成光盘;让我们做一些输入/输出(en)连接!
首先创建一个具有以下输出的logic_auto(en)

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn template_disk_spawn ForceSpawn   0.00 No
Tip.png提示:我们将在教程中再次使用此实体,不要忘记它在这里。

打开您的spawner_door的'输出(en)'选项卡并添加以下属性:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnFullyOpen start_disc ClearParent   0.00 No
Io11.png OnFullyOpen start_disc TurnOff   0.00 No
Io11.png OnFullyOpen template_disc ForceSpawn   0.00 No
Io11.png OnFullyOpen start_disc Kill   0.10 No
Io11.png OnFullyOpen spawner_door Kill   0.10 No

现在向您的template_disc_spawn添加以下输出:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnEntitySpawned spawner_door Open   0.00 No

确保检测光盘是否丢失或被销毁的实体具有以下输出:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger template_disk_spawn ForceSpawn   0.00 No
Tip.png提示:通常建议让分解所述光盘的实体触发输出。例如,当分解网(en)溶解光盘时,它将触发OnDissolve输出。请检查没有其他物理对象可以被该分解网溶解。

现在发射器应该可以工作了,并在最后一个光盘消失时分配新的光盘。然而,这仅仅是使光盘房间正常运行过程的三分之一。

光盘接收器

光盘接收器(也称为光盘播放器)是放置光盘以实现其目的的地方;将光盘放入接收器会打开显示GLaDOS正在寻找信息的视频。

步骤1 - 初始化

对齐网格(en):2

在您的光盘房间中放置一个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
Note.png注意:移动方向应设置为您的laser_disc_player.mdl所具有的相反的俯仰角、偏航角、滚动角。
Note.png注意:func_door笔刷的长度取决于您希望光盘进入多远;光盘有25个单位半径,您可以据此判断。在上面的图片中,刷子长26个单位,使整个光盘进入。

步骤2 - 加载

步骤1列出了用于光盘接收器的可见实体,此步骤将列出不可见实体。
第一个是trigger_once(en)刷子,第二个是filter_activator_name(en)。现在添加以下属性:

1. trigger_once

Property Name Value
Name  
Filter Name disc_filter

确保Flags中 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
Io11.png OnMapSpawn hidden_disc TurnOff   0.00 No

向trigger_once添加以下输出:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch hidden_disc TurnOn   0.00 No
Io13.png OnStartTouch !activator Kill   0.00 No
Io11.png OnStartTouch loader_door Open   0.00 No
Note.png注意:Hammer(en)可能以红色显示!activator命令。忽略它,在游戏中它会正常工作。

向loader_door实体添加一个输出:

My Output > Target Entity Target Input Parameter Delay Only Once
Io12.png OnFullyOpen disc_loaded_relay Trigger   0.00 No
Note.png注意:此时我们尚未制作disc_loaded_relay实体,因此该输出可能暂时显示为损坏。

现在光盘接收器应该可以运行并在光盘放入时接受它。然而,这仅仅是完成光盘房间过程的又一步骤。

投射动画影片

这是奇迹发生的地方。

投射动画影片是其中一个光盘插入后发生的事情, 包括最后的机器人爆炸。

步骤1 - 设置动画

我们将首先放置一个prop_static并将其模型设置为projector_screen.mdl(通过在模型筛选栏中输入"projector"轻松找到)。现在在其左下角放置一个具有以下属性的vgui_movie_display(en)

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
Io11.png 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(en)并将其命名为disc_loaded_relay。打开输出标志并添加以下属性:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger insert_disc_movie Disable   2.00 No
Io11.png OnTrigger aperture_movie Enable   2.00 No

创建一个具有这些属性的ambient_generic(en)

Property Name Value
Name disc_windup_sound
Sound Name World.LaserDiskPowerUp

并向disc_loaded_relay再添加一个输出:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger disc_windup_sound PlaySound   0.00 No

最后一切应该都正常工作了!


收尾工作

  • 添加一个实例并将其VMF文件名设置为coop_lighting_ents.vmf。您可以从此处选择地图将具有的雾选项(雾密度、颜色等)。然而,更重要的是,其中有四个env_global(en),每个都可以启用、禁用机器人的ping和嘲讽能力。您应该有一个在光盘加载时触发的logic_relay,具有四个输出:
My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger @global_no_taunting_blue TurnOn   0.00 No
Io11.png OnTrigger @global_no_pinging_blue TurnOn   0.00 No
Io11.png OnTrigger @global_no_taunting_orange TurnOn   0.00 No
Io11.png OnTrigger @global_no_pinging_orange TurnOn   0.00 No
  • 放置一个trigger_hurt(en),其伤害键值设置为10000。确保它覆盖整个光盘房间,并且不要忘记禁用它。在适当的时刻,可能当GLaDOS发表她的最终声明时,启用trigger_hurt刷子使机器人爆炸。
  • 在您的房间中放置一个具有以下设置的point_clientcommand(en)
Property Name Value
Name levelchange

向您的trigger_hurt添加此输出:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnHurt levelchange command changelevel {hub or next chamber} 0.00 No
  • 放置一个面向您的屏幕的静态模型,并将其模型设置为models/props_underground/projector.mdl。在投影仪上放置三个point_spotlight(en),您会知道放在哪里。
  • 在光盘房间的某处通常有一个白板(models/props_office/whiteboard_coop.mdl),声称不要上传光盘。为了与Valve地图保持一致,我建议也放置一个。它带有6种不同的皮肤。