Zh/Box dropper: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
m (→‎进阶配置: 添加直立开关重生方法)
Line 149: Line 149:
| Dissolve Type || Energy || 这是初始项,不用更改
| Dissolve Type || Energy || 这是初始项,不用更改
|}
|}
(Energy实际上是在{{HL2|4}}基于其制作的游戏中被能量球击杀的效果)
(Energy实际上是在{{HL2|4}}或基于其制作的游戏中被能量球击杀的效果)
现在你的<s>削除</s>销毁功能应该能正常奏效了,只差输出。
现在你的<s>削除</s>销毁功能应该能正常奏效了,只差输出。



Revision as of 15:08, 6 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>纹理) 2. 中央放置prop_physics实体:

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

3. 创建point_template

  - 命名:box_template
  - 模板目标:box

4. 通道顶部附近创建env_entity_maker

  - 命名:entity_box_maker
  - 关联模板:box_template

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秒,或至少在方块落地后能立即按下开关的时间