trigger_changelevel
Class hierarchy |
---|
CChangeLevel |
triggers.cpp
|
trigger_changelevel
is a brush entity available in all Source games.,当被触发时,它将提示游戏加载下一个关卡
Note:此实体在多人游戏中不起作用。如果你需要在多人游戏中更换关卡,你必须要通过
point_servercommand
实体或在代码中使用changelevel
指令,这不会保留实体状态Note:在中,建议使用info_changelevel,尽管此实体仍然可用[1],但游戏不会将其体积内的导航网格附加CHECKPOINT属性
Contents
注意事项
在两个地图中放置一个info_landmark,以标记两个地图中的相同位置 触发关卡转换时,info_landmark必须位于玩家的视野范围内。否则关卡转换将失败 两个info_landmark实体必须具有相同的名字。并且不能带有空格。它们也不能位于实心固体内 landmark的实体名称和地图名称的长度都必须小于32个字符
>
Note:虽然Landmark实体在几何空间上必须位于同一位置,但其并不要求坐标上的完全一致。Landmark实体实际上可以放置在正在更改的新地图网格中的任何位置,只要它周围的转换场景与上一个关卡的完全相同即可。这可以帮助解决大场景下的换图,即:玩家在顶视图的东边移动,并且必须在下一张地图中继续这样做,而这在从结束位置开始下一张地图的情况下是不可能的。简化关卡过渡附近的几何图形可以使处理它们变得更容易!
关卡转换必须是双向的,即下一张地图必须有一个指向当前地图的trigger_changelevel,而当前地图也必须要有一个指向下一张地图的trigger_changelevel。如果需要进行单向关卡转换,只需要让玩家无法接触到回到当前地图的trigger_changelevel即可(或者勾选Flags中的Disable Touch
选项)
Warning:尽管info_landmark应该在两个关卡之间位于相同位置,但两张图的trigger_changelevel固体不能位于同一位置,否则玩家将会陷入死循环,不断的在两个关卡之间来回切换
要在下一关触发事件,请在当前地图通过输出启用env_global。实体有几个预定义状态,但您可以手动输入自己的自定义状态。然后创建一个logic_auto来检查env_global的状态。在env_global启用的情况下,你可以使用OnMapTransition来在完成关卡转换后触发事件
要控制哪些实体会保留到下一张地图,创建一个或多个trigger_transition,并给予它们和Landmark实体相同的名字。其体积内的所有实体都将保留到下一张地图
Keyvalues
- Name
(targetname)
<string> - The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g.
parentname
ortarget
).
Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- New Map Name
(map)
<string> - 要转换到的下一张地图名
- Landmark Name
(landmark)
<targetname> - 要使用的Landmark实体名称(具体细节见上方)
Flags
Disable Touch : [2]
- 禁止通过触碰触发关卡转换
To Previous Chapter : [4]
- 至上一个章节
Bug:此Flag会导致实体完全实心 [todo tested in?]
Inputs
ChangeLevel
- 手动触发关卡转换,用于通过按钮触发等非直接触碰进行的关卡转换
Warning:自 Source 2007起,此输入对于多人游戏不起作用
Outputs
OnChangeLevel
- 当进行关卡转换时触发
References
References | ||
---|---|---|
|