重生室门

From Valve Developer Community
Jump to navigation Jump to search
English (en)한국어 (ko)Русский (ru)中文 (zh)Translate (Translate)
English (en)한국어 (ko)Русский (ru)中文 (zh)Translate (Translate)

wetweirripp翻译 --20260728


重生室门(队伍限定为门)只对一个队伍的玩家打开,它们通常作为重生室的门,与空气墙相比具有阻挡室内视线和子弹,飞行物的作用,同时也作为只有一个队伍可以进去的区域的出入口,用来调节地图平衡性。

教程-基本的重生室门

这里我们为红队的重生室做一个只为红队玩家打开的门。

filter_activator_tfteam

首先,放置一个filter_activator_tfteam(en)的点实体。这个过滤器可以决定哪个队伍的玩家可以触发开门。你需要设置它的队伍Team,过滤模式Filter mode, 和合适的名字Name.比如我们把队伍设为Red, 过滤模式设为"Allow entities that match criteria"(符合过滤标准的实体), 名称设为red_filter.

你只需要给一个队伍设置一个filter_activator_tfteam(en)即可。所有的队伍限制的触发器都可以利用这两个filter_activator_tfteam(en),最好把这两个实体放在易于记忆的地方。比如把我们的red_filter放在红队的出生点.

prop_dynamic

prop_dynamic.

接着,放置一个prop_dynamic(en)把它的模型World Model设置为门,比如models/props_gameplay/door_slide_large_door.mdl。不要忘记设置它的父级"parent"(func_door(en)), 否则它会保持静止,即使触发器被触发。

func_door

The func_door.

然后,放置一个类型为func_door(en)的固体实体,它决定门如何运动,所以使用tools/toolsnodraw纹理即可。它会像一个不可见的移动空气墙一样阻挡玩家,所以最好把它的形状贴近模型,并且使它们重叠.

你需要设置一些func_door(en)的属性

键值 描述 值
Name 实体的名字,用于绑定触发器实体,例:door_red_spawn_01 door_red_spawn_01
Speed 影响门开关的速度(单位 HU/s),通常为400或500 500
Move direction 决定门的移动方向,这里以Up(向上)为例,可从下拉菜单选择或填写xyz值 Up (-90 0 0)
Lip 决定门打开时凸起的高度(单位 HU),这里以3为例 3
Delay Before Reset 重置的时间:把它设置为-1(单位 s),否则门会在一段时间内自动关上,并不会再次打开,除非所有人离开触发器后,再有人进入触发器,任何一个不是-1的值都会导致bug (比如一个在触发区里挂机的玩家可以把其他玩家锁在屋子里). -1

接下来打开它的Flags(标签)选项卡,确保你没有勾选Touch Opens(触碰实体开启)(默认是选上的)。否则被过滤器过滤的玩家可以通过触碰门来把门打开!

然后,我们需要给予func_door(en)对门模型的控制权。选择prop_dynamic(en)的门模型,把它的Parent(父级)的键值设置为实体func_door(en)的Name键值。这里为door_red_spawn_01。

trigger_multiple

trigger_multiple

其次,放置类型为trigger_multiple(en)的固体实体,当一个玩家触碰这个触发器时它会让门打开,然后关闭。

这个触发器需要足够大来确保玩家靠近门的过程中门就被完全打开。建议扩展它的体积延伸出门的两侧而不是用两个独立的功能相同的触发器实体,它应该使用tools/toolstrigger纹理。

确保把它的"Delay Before Reset"的值设为0。(默认为-1,意思使触发器不会重置,也就是门关闭后不会再打开)

选择trigger_multiple(en)属性的Output选项卡,你需要增加两个输出,如表所示:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnEndTouchAll door_red_spawn_01 Close <none> 0.00 No
Io11.png OnStartTouchAll door_red_spawn_01 Open <none> 0.00 No

最后,把trigger_multiple(en)的Filter Name属性设置为你的filter_activator_tfteam(en)的Name值来让这个门团队私有化,这里为red_filter。

这样一来,我们就有一个只为红队打开的门了!

下载示例地图(原作者的dropbox)

设计理论

位置

理论上,这样的门可以放在地图中的任何地方,但注意它可能会造成极大的平衡性事故

碰撞箱

官图的prop_dynamic(en)的Collisions(碰撞)设为Not Solid(无碰撞)。这并非必须,但会更方便。这里{{L|func_door}会决定碰撞箱,它已足够合适。

工程师建筑

在门口增加func_nobuild(en)的固体实体是有必要的。因为工程师的建筑会把门给卡住,除非你把Force closed(强制关闭)的键值设置为"yes"。(但是通常为"No"否则玩家会卡在门里面)

参见