Zh/Box dropper: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
(汉化...个屁)
 
m (→‎方块模板: {{Tip}})
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{langsp|title=传送门教程-方块滴管}}
{{LanguageBar|Portal_Box_Dropper|title=传送门:投放器制作教程}}
{{Back |Zh/Portal Level Creation|返回传送门关卡制作}}
{{toc-right}}


{{Back | Portal Level Creation:zh-cn}}
本教程将逐步演示如何制作[[Portal|传送门]]测试密室中常见的'''投放器'''(官方名:'''维生装置通风口''')。该装置可在玩家原有配重存储方块被销毁时提供新方块。
{{toc-right}}
 
{{Tutorial Skill Level | skill=2}}
== 基础构造 ==
=== 投放器模型 ===
[[File:Box dropper models.jpg|right|thumb|300px|模型组件]]
1. 创建{{ent|prop_dynamic}},设置模型为<code>models/props/box_dropper.mdl</code>
2. 创建第二个{{ent|prop_dynamic}},命名为<code>box_dropper_model_cover</code>,模型设为<code>models/props/box_dropper_cover.mdl</code>
3. 将两个实体对齐至目标位置
 
=== 顶部拱形结构 ===
使用[[Hammer Arch Properties|拱形工具]]创建尺寸为<code>128L*128W*16H</code>的架构,参数设置:
{| class="wikitable"
! 属性 !! 值
|-
| 墙体厚度 || 24
|-
| 边数 || 8
|-
| 弧度 || 360°
|-
| 起始角度 || 0°
|}
 
* 将结构绑定至{{ent|func_detail}}
* 使用{{L|Hammer Vertex Tool|顶点编辑工具}}调整为矩形中空形态
* 纹理贴图:
  - 内缘:<code>metal/metalwall061f</code>
  - 底面:<code>concrete/concrete_modular_ceiling001a</code>


{{warning|此页面目前没有内容,请前往原址}}<br>
[https://developer.valvesoftware.com/w/index.php?title=Box_dropper&uselang=en 英文教程-滴管]
<br>
[[File:Box dropper models.jpg|right|thumb|300px|The models]]
<br>
<gallery>
<gallery>
Image:Box dropper arch.jpg|The arch
Image:Box dropper arch.jpg|原始拱形
Image:Box dropper arch2.jpg|The arch after vertex manipulation
Image:Box dropper arch2.jpg|顶点编辑后
Image:Box dropper arch3.jpg|The arch textured
Image:Box dropper arch3.jpg|贴图完成
</gallery>
</gallery>
<br>
 
[[File:Box_dropper_shaft.jpg|right|thumb|300px|The shaft seen from the outside]]
=== 垂直通道 ===
[[File:Box_dropper_shaft2.jpg|right|thumb|300px|The inside of the shaft with nodraw hidden]]
[[File:Box_dropper_shaft.jpg|right|thumb|300px|通道外观]]
<br>
[[File:Box_dropper_shaft2.jpg|right|thumb|300px|通道内部结构]]
[[File:Box_dropper_stop_plugging.jpg|right|thumb|300px|<code>tube_stop_plugging</code>]]
1. 创建<code>128L*128W*256H</code>的垂直通道
<br>
2. 使用[[clipping tool|分割工具]]将各面均分
[[File:Box_dropper_trigger.jpg|right|thumb|300px|<code>trigger_box_dropper_clear</code>]]
3. 纹理贴图:
<br>
  - 下部内壁:<code>metal/metalwall_bts_006a</code>
[[File:Box_dropper_funnel.jpg|right|thumb|300px|The sloped brushes]]
  - 上部内壁:<code>metal/metalwall_bts_006b_gradient</code>
  - 顶部:<code>lights/light_orange001</code>
 
== 功能系统 ==
=== 方块模板 ===
1. 在通道顶部创建<code>128L*128W*112H</code>的{{ent|func_detail}}空间(使用<nodraw>纹理)
{{Warning|如果你的地图使用{{L|Skybox|天空盒}}或{{L|Adding Water|水体}},那么它应该被包在地图(天空盒)内,因为{{Portal|2}}允许你在有泄露的情况下编译并进入游戏,而这个盒子也是一种泄露,会导致你的水体无法被加载(即水面显示天空盒而不是你要的水)}}
2. 中央放置{{ent|prop_physics}}实体:
  - 模型:<code>models/props/metal_box.mdl</code>
  - 命名:<code>box</code>
  - 输出设置:
    {| class="wikitable"
    | OnOutOfWorld || !activator || Kill
    |-
    | OnOutOfWorld || logic_drop_box || Trigger
    |}
 
3. 在方块正中心创建{{ent|point_template}}:
  - 命名:<code>box_template</code>
  - 模板目标:<code>box</code>
{{Tip|这个实体会将你的方块作为模板,给下面这个实体用}}
4. 通道顶部内创建{{ent|env_entity_maker}}:
  - 命名:<code>entity_box_maker</code>
  - 关联模板:<code>box_template</code>
{{Tip|这个实体会用来生成你的方块}}
5. 创建{{ent|filter_activator_name}}过滤器:
  - 命名:<code>filter_boxes</code>
  - 过滤名称:<code>box</code>
 
=== 舱门控制 ===
[[File:Box_dropper_stop_plugging.jpg|right|thumb|300px|防堵塞组件]]
1. 创建<code>96L*96W*4H</code>的{{ent|func_brush}}:
  - 命名:<code>stop_tube_plugging</code>
  - 初始状态:禁用
 
2. 创建<code>128L*128W*128H</code>的{{ent|trigger_multiple}}:
  - 命名:<code>trigger_box_dropper_clear</code>
  - 过滤器:<code>filter_boxes</code>
  - 标志设置:
    {{entity-flag-start}}
    {{entity-flag|Physics Objects|on}}
    {{entity-flag|Clients|off}}
    {{entity-flag-end}}
  - 输出链:
    {| class="wikitable"
    | OnEndTouch || 执行动作
    |-
    | → entity_box_maker || 生成新方块
    |-
    | → box_dropper_model_cover || 播放关闭动画
    |-
    | → stop_tube_plugging || 启用防堵塞
    |}
 
=== 逻辑控制 ===
创建{{ent|logic_relay}}:
- 命名:<code>logic_drop_box</code>
- 输出设置:
  {| class="wikitable"
  | OnTrigger || 执行动作
  |-
  | → box_dropper_model_cover || 播放开启动画
  |-
  | → stop_tube_plugging || 禁用防堵塞
  |-
  | → trigger_box_dropper_clear || 启用触发区域
  |}
 
== 进阶配置 ==
=== 自动补充机制 ===
当方块被{{L|Creating_a_portal/object_fizzler|分解立场}}或{{L|Poison Water|毒液}}销毁时:
1. 对于湮灭场:在{{ent|trigger_portal_cleanser}}添加<code>OnDissolveBox → logic_drop_box:Trigger</code>输出
2. 对于毒液:在液体区域创建{{ent|trigger_multiple}}:
  - 过滤器:<code>filter_boxes</code>
  - 输出设置:
    {| class="wikitable"
    | OnStartTouch || 执行动作
    |-
    | → !activator || 销毁方块
    |-
    | → logic_drop_box || 触发补充
    |}
 
=== 使用直立开关重生方块 ===
虽然这听着有点难,但其实非常简单。<br>
你只需要做两三件事。
 
==== 创建直立开关 ====
请参考{{L|Switch|直立开关}},并在完成后把它放到滴管面前。
{{Tip|由于这是方块滴管而不是别的什么需要计时的东西,请无视其中提到{{L|Logic_timer}}与其ambient实体的部分}}<br>
随后,根据上文给开关的{{L|func_door_rotating}}添加<logic_drop_box>的相关输出。
 
==== 添加并运用[[env_entity_dissolver]]实体 ====
很明显,“Dissolver”直接告诉了该实体的作用,它是用来销毁掉现有方块的。<br>
将这个实体放在开关旁边(实际位置不重要,只是方便),修改其属性:
{| class="wikitable"
|-
| 名称 || 内容 || 介绍
|-
| Name || BoxDissolver || 随便起一个名字,只要你能看懂
|-
| Target to Dissolve || box || 要销毁的目标,在这里当然是方块
|-
| Dissolve Type || Energy || 这是初始项,不用更改
|}
(Energy实际上是在{{HL2|4}}或基于其制作的游戏中被能量球击杀的效果)<br>
现在你的<s>削除</s>销毁功能应该能正常奏效了,只差输出。
 
=== 为开关添加输出并测试 ===
这个操作会轻松的多。
像开头所讲的一样,给Door_rotating实体添加一个输出。
{| {{OutputsTable}}
|-
| [[File:Io11.png]] || OnOpen || BoxDissolver || Dissolve || &nbsp; || 0.00 || No
|}
 
好了,这样因该就行了!<br>
按{{Key|f9}}来编译地图试试吧!
{{Note|记得按照滴管的实际长度(即方块从生成到落地的时间)来更改func_door_rotating的回弹倒计时<br>
我们推荐你使用1秒,或至少在方块落地后能立即按下开关的时间}}




[[Category:Portal]]
{{ACategory|Portal|传送门系列}}
[[Category:Level Design]]
{{ACategory|Level Design|关卡设计}}
[[Category:Tutorials]]
{{ACategory|Tutorials|教程}}

Latest revision as of 08:53, 7 October 2025

English (en)中文 (zh)Translate (Translate)
返回传送门关卡制作

本教程将逐步演示如何制作传送门测试密室中常见的投放器(官方名:维生装置通风口)。该装置可在玩家原有配重存储方块被销毁时提供新方块。

基础构造

投放器模型

模型组件

1. 创建prop_dynamic,设置模型为models/props/box_dropper.mdl 2. 创建第二个prop_dynamic,命名为box_dropper_model_cover,模型设为models/props/box_dropper_cover.mdl 3. 将两个实体对齐至目标位置

顶部拱形结构

使用拱形工具创建尺寸为128L*128W*16H的架构,参数设置:

属性
墙体厚度 24
边数 8
弧度 360°
起始角度
 - 内缘:metal/metalwall061f
 - 底面:concrete/concrete_modular_ceiling001a

垂直通道

通道外观
通道内部结构

1. 创建128L*128W*256H的垂直通道 2. 使用分割工具将各面均分 3. 纹理贴图:

  - 下部内壁:metal/metalwall_bts_006a
  - 上部内壁:metal/metalwall_bts_006b_gradient
  - 顶部:lights/light_orange001

功能系统

方块模板

1. 在通道顶部创建128L*128W*112Hfunc_detail空间(使用<nodraw>纹理)

Warning.png警告:如果你的地图使用天空盒(en)水体(en),那么它应该被包在地图(天空盒)内,因为传送门 传送门允许你在有泄露的情况下编译并进入游戏,而这个盒子也是一种泄露,会导致你的水体无法被加载(即水面显示天空盒而不是你要的水)

2. 中央放置prop_physics实体:

  - 模型:models/props/metal_box.mdl
  - 命名:box
  - 输出设置:
OnOutOfWorld !activator Kill
OnOutOfWorld logic_drop_box Trigger

3. 在方块正中心创建point_template

  - 命名:box_template
  - 模板目标:box
Tip.png提示:这个实体会将你的方块作为模板,给下面这个实体用

4. 通道顶部内创建env_entity_maker

  - 命名:entity_box_maker
  - 关联模板:box_template
Tip.png提示:这个实体会用来生成你的方块

5. 创建filter_activator_name过滤器:

  - 命名:filter_boxes
  - 过滤名称:box

舱门控制

防堵塞组件

1. 创建96L*96W*4Hfunc_brush

  - 命名:stop_tube_plugging
  - 初始状态:禁用

2. 创建128L*128W*128Htrigger_multiple

  - 命名:trigger_box_dropper_clear
  - 过滤器:filter_boxes
  - 标志设置:
    
Flag
Checkbox-on.png Physics Objects {{{3}}}
Checkbox-off.png Clients {{{3}}}
  - 输出链:
OnEndTouch 执行动作
→ entity_box_maker 生成新方块
→ box_dropper_model_cover 播放关闭动画
→ stop_tube_plugging 启用防堵塞

逻辑控制

创建logic_relay: - 命名:logic_drop_box - 输出设置:

OnTrigger 执行动作
→ box_dropper_model_cover 播放开启动画
→ stop_tube_plugging 禁用防堵塞
→ trigger_box_dropper_clear 启用触发区域

进阶配置

自动补充机制

当方块被分解立场(en)毒液(en)销毁时: 1. 对于湮灭场:在trigger_portal_cleanser添加OnDissolveBox → logic_drop_box:Trigger输出 2. 对于毒液:在液体区域创建trigger_multiple

  - 过滤器:filter_boxes
  - 输出设置:
OnStartTouch 执行动作
→ !activator 销毁方块
→ logic_drop_box 触发补充

使用直立开关重生方块

虽然这听着有点难,但其实非常简单。
你只需要做两三件事。

创建直立开关

请参考直立开关(en),并在完成后把它放到滴管面前。

Tip.png提示:由于这是方块滴管而不是别的什么需要计时的东西,请无视其中提到Logic_timer(en)与其ambient实体的部分


随后,根据上文给开关的func_door_rotating(en)添加<logic_drop_box>的相关输出。

添加并运用env_entity_dissolver实体

很明显,“Dissolver”直接告诉了该实体的作用,它是用来销毁掉现有方块的。
将这个实体放在开关旁边(实际位置不重要,只是方便),修改其属性:

名称 内容 介绍
Name BoxDissolver 随便起一个名字,只要你能看懂
Target to Dissolve box 要销毁的目标,在这里当然是方块
Dissolve Type Energy 这是初始项,不用更改

(Energy实际上是在半衰期2 半衰期2或基于其制作的游戏中被能量球击杀的效果)
现在你的削除销毁功能应该能正常奏效了,只差输出。

为开关添加输出并测试

这个操作会轻松的多。 像开头所讲的一样,给Door_rotating实体添加一个输出。

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnOpen BoxDissolver Dissolve   0.00 No

好了,这样因该就行了!
f9来编译地图试试吧!

Note.png注意:记得按照滴管的实际长度(即方块从生成到落地的时间)来更改func_door_rotating的回弹倒计时
我们推荐你使用1秒,或至少在方块落地后能立即按下开关的时间