合作模式门由两个触发器组成,需要两个机器人都站上去才能开门,每个触发器上的人形标志会亮起。
实例
1.) 创建一个func_instance,设置如下:
| Property Name |
Value
|
| Name |
coop_exit_door
|
| VMF Filename |
instances/coop/coop_team_double_exit_door.vmf
|
2.) 创建一个使用Trigger纹理的方块刷子。将此刷子绑定到trigger_playerteam,并设置以下输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnStartTouchBluePlayer |
coop_exit_door |
instance:relay_blue_in;Trigger |
<none> |
0.00 |
No
|
 |
OnEndTouchBluePlayer |
coop_exit_door |
instance:relay_blue_out;Trigger |
<none> |
0.00 |
No
|
 |
OnStartTouchOrangePlayer |
coop_exit_door |
instance:relay_orange_in;Trigger |
<none> |
0.00 |
No
|
 |
OnEndTouchOrangePlayer |
coop_exit_door |
instance:relay_orange_out;Trigger |
<none> |
0.00 |
No
|
手动创建
门
1.) 添加一个prop_testchamber_door,设置如下:
| Property Name |
Value
|
| Name |
door_01
|
2.) 添加一个logic_coop_manager,设置如下:
| Property Name |
Value
|
| Name |
coop_man
|
以及输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnChangeToAllTrue |
door_01 |
Open |
<none> |
0.00 |
No
|
触发器
1.) 添加一个logic_relay,设置如下:
| Property Name |
Value
|
| Name |
relay_b_in
|
以及输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
coop_man |
SetStateATrue |
<none> |
0.00 |
No
|
2.) 添加一个logic_relay,设置如下:
| Property Name |
Value
|
| Name |
relay_b_out
|
以及输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
coop_man |
SetStateAFalse |
<none> |
0.00 |
No
|
3.) 重复步骤1-2,但更改以下内容:
| Property Name |
Value
|
| Name |
relay_o_in
|
输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
coop_man |
SetStateBTrue |
<none> |
0.00 |
No
|
添加一个logic_relay,设置如下:
| Property Name |
Value
|
| Name |
relay_o_out
|
输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
coop_man |
SetStateBFalse |
<none> |
0.00 |
No
|
4.) 创建一个使用Trigger纹理的方块刷子。将此刷子绑定到trigger_playerteam,并设置以下输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnStartTouchBluePlayer |
relay_b_in |
Trigger |
<none> |
0.00 |
No
|
 |
OnEndTouchBluePlayer |
relay_b_out |
Trigger |
<none> |
0.00 |
No
|
 |
OnStartTouchOrangePlayer |
relay_o_in |
Trigger |
<none> |
0.00 |
No
|
 |
OnEndTouchOrangePlayer |
relay_o_out |
Trigger |
<none> |
0.00 |
No
|
复选框
1.) 添加一个prop_static,设置如下:
| Property Name |
Value
|
| World Model |
models/props/sign_frame02/sign_frame02.mdl
|
2.)
创建一个32长×4宽×32高的func_brush,使用纹理signage/signage_coop_teamdoor_orange。
| Property Name |
Value
|
| Name |
checkbox_o
|
将其在框内左侧对齐。
3.) 重复步骤2,但使用纹理signage/signage_coop_teamdoor_blue代替。
将其在框内右侧对齐。
4.) 添加两个env_texturetoggle,设置如下:
| Property Name |
Value
|
| Name |
textog_o
|
| Target Brush(es). |
checkbox_o
|
| Property Name |
Value
|
| Name |
textog_b
|
| Target Brush(es). |
checkbox_b
|
5.) 添加两个ambient_generic,设置如下:
| Property Name |
Value
|
| Name |
sound_out
|
| Sound Name |
portal.button_down
|
| Property Name |
Value
|
| Name |
sound_in
|
| Sound Name |
portal.button_up
|
6.) 向relay_o_in添加以下输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
textog_o |
SetTextureIndex |
1 |
0.00 |
No
|
 |
OnTrigger |
sound_in |
PlaySound |
<none> |
0.00 |
No
|
向relay_o_out添加以下输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
textog_o |
SetTextureIndex |
0 |
0.00 |
No
|
 |
OnTrigger |
sound_out |
PlaySound |
<none> |
0.00 |
No
|
向relay_b_in添加以下输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
textog_b |
SetTextureIndex |
1 |
0.00 |
No
|
 |
OnTrigger |
sound_in |
PlaySound |
<none> |
0.00 |
No
|
向relay_b_out添加以下输出:
|
My Output |
Target Entity |
Target Input |
Parameter |
Delay |
Only Once
|
 |
OnTrigger |
textog_b |
SetTextureIndex |
0 |
0.00 |
No
|
 |
OnTrigger |
sound_out |
PlaySound |
<none> |
0.00 |
No
|
您现在已创建了一个只有在两个合作伙伴都位于触发器(en)内时才会打开的门。