直立开关
本教程将展示如何创建在Portal中后期出现的开关。这个开关是专门给玩家使用的,可以永久按下,也可以在一段时间后弹回。
制作
1.底座笔刷
创建一个使用 <nodraw>纹理, <64宽*64长*8高> 的笔刷。为其侧面使用<signage/hazard_orange_03b>纹理,顶部则是<concrete/concrete_modular_floor001a>纹理。
2.开关模型
放一个 <prop_dynamic> 实体并将其 World Model 设为 <models/props/switch001.mdl>,并起名 (更改Name) 为<switch1>。

3.开关声音
放一个 <ambient_generic > 实体,起名为 <button1_down>,将其 Sound Name 设为 <Portal.button_down>, 再将 Source Entity Name 设为 <switch1>。 放另一个 <ambient_generic > 并起名为 <button1_up>, 它的 Sound Name 为 <Portal.button_up>, Source Entity Name 为 <switch1>.
4.计时器
创建一个 <logic_timer > 实体,起名为 <timer_ticktock1>。进入属性,将其 Start Disabled设为<Yes> 并将其 Refire Interval 设为 <1>。接下来,创建一个<ambient_generic>实体并起名为<sound_ticktock1>,将其 Sound Name 设为 <Portal.room1_TickTock>,将其Max Audible Distance 设为<441> 并将其 Source Entity Name 设为 <switch1>(你的按钮模型)。 现在,将以下输出添加到<timer_ticktock1>:
My Output | Target Entity | Target Input | Parameter | Delay | Only Once | |
---|---|---|---|---|---|---|
![]() |
OnTimer | sound_ticktock1 | PlaySound | 0.00 | No |
5.使按钮可用
在开关模型上方32个单位处创建一个 <16宽*16长*16高> 的笔刷。 其纹理应该是 <tools/toolsplayerclip > 并将其绑定为 <func_door_rotating > 实体。 将其Speed 设为 <500>, 将 Distance 设为 <0>。
并将 Delay before reset 设为它应保持按下的时间,设为 <-1> 即可永远保持按下。 下一步,前往flags选项卡检查Use Opens 和 Door Silent 框框。 接下来,将以下输出添加到door实体:
开关已经准备就绪,应该可以在地图中正常使用。
结果
第一步
把它放在你需要的位置,你当然可以旋转它。
第二步
添加开关激活时应触发的输出。
按下开关时应触发的输出为 <func_door_rotating> 实体的 OnFullyOpen,以及开关在其计时器走完后的 OnFullyClosed 输出。