可用的梯子
注:本文行文方式较原文有所改变,欢迎改进仍然存在的不足
除了少数例外,在大多数用
起源引擎制作的游戏中,一个完整的梯子实际上由两部分构成:
如此而言,玩家爬的不是看得到的梯子模型,而是真正提供攀爬功能的不可见实体或固体。
若要创建可见部分,你可以选择:
- 一个应用梯子模型(例如models/props_c17/metalladder001.mdl)的prop_static实体。
- 一个具有梯子纹理(例如metal/metalladder001a)的固体。
关于创建攀爬部分,由于
起源游戏间有不同的需求,梯子攀爬部分的创建和攀爬方式主要被划分为2种。
(下文分游戏讲述攀爬部分的创建方法以及梯子的优化。)
点实体梯子
创建梯子
- 适用于:
Half-Life 2 series(半衰期2系列),
SiN Episodes,
Dark Messiah of Might and Magic
这种梯子的攀爬部分类似线段,需要你确定两点作为梯子的起止点。可以使用的有func_useableladder点实体。(还可以用一个可能在较古早地图中碰见的func_ladderendpoint点实体。)
func_useableladder实体(在实体编辑面板中)被分为两个子实体:起点与止点(见 Fig. 1a)。有两种方法改变这两点的位置。
- 当梯子实体(func_useableladder)被选中时,在2D视图(2D View)中可看到其中心点,拖动其中的一个中心点来把TA放到一个合适的位置(见 Fig. 1b)。梯子的起止点位置(理论上)没有限制(可见 Fig. 1c)。
- 在实体编辑面板中修改两点坐标;
在游戏中,玩家攀爬的轨迹为两点构成的线段。
放置好起止点后,确保它们不与可视部分接触,因为这会使梯子的部分区域不可攀爬。
落脚点
你可以创建一个落脚点(英文版中的Dismount)(见 Fig. 2)来使玩家更轻松且可控地下梯。使用名为info_ladder_dismount的点实体创建落脚点。 在靠近梯子起止位置的旁边创建一个落脚点的实体,玩家便可在起止点及周围按使用键(默认为“E”)从梯上下到落脚点(通常当梯子在两个以上的楼层之间运行时)。若玩家到达了梯子的起止点,他也可以面朝落脚点走下梯子。 可以使用多个info_ladder_dismount点实体设置多个落脚点。
为避免相近梯子的不同落脚点间的混乱,每个info_ladder_dismount点实体(落脚点)都有一个LadderName属性,可以用来设置该落脚点所属的梯子的名称(Name)。
类似于梯子,落脚点不得有障碍物且玩家按使用键到达下梯时不得与世界带碰撞多边形相触
游戏内测试
弄好梯子后,你就可以编译地图并在游戏中测试它们了。可以在游戏内打开控制台输入sv_showladders 1来显示梯子实体与调试信息, 然后打开或重加载(控制台输入restart)你欲要调试的地图。随后便将显示梯子的起止点(func_useableladder 实体)与落脚点(info_ladder_dismount 实体; 见 Fig. 3a)。这帮助你查究这些梯子实体是否与世界几何体即固体或道具模型(如与prop_static挤在一起。(见 Fig. 3b).
游戏中梯子如何运作
爬上梯子最安全(应该叫最好?)的方法是靠近梯子,随后按下使用键。这会自动把你吸到梯子上。 (或者用方向键直接走上去,但伴有更大风险,比如从梯子上掉下来或掉进洞里(话说真有这么危险吗))。
从梯上下来,你可以:1.跳跃;2.按使用键。
如果梯子拥有info_ladder_dismount实体的话,你也可以直接从结束处走下,并且在靠近并面对info_ladder_dismount时按下使用键也可以让你在梯子的任何地方更可控地下梯子。
固体型梯子
func_ladder作梯子
适用于: ![]()
求生之路系列,
反恐精英:起源,
胜利之日:起源,
Garry's Mod,
Vampire: The Masquerade – Bloodlines,
The Ship: Murder Party,
黑山,
半衰期:起源,
Jabroni Brawl: Episode 3
在可视部分前创建固体,尽可能靠近的同时注意保留空隙。调整固体宽高直到二者之间宽高相同。给前文中创建的固体应用纹理tools/toolsinvisibleladder,再将其转为固体实体(快捷键Ctrl+T)。在物体属性对话框中选择func_ladder并确认。做完这些,梯子就可以用来爬了。
这种梯子是可以左右滑动的,按下对应方向的移动键就可以了。速度较快,不便于新手掌控。
梯子攀爬部分的高度应当距离下方落脚地面至少56个单位左右,同时攀爬部分不能与其上方的天花板接触。
若攀爬部分即func_ladder实体没有足够的高度,向上攀爬时会滑落下来而不是登至上方落脚处。入机的IQ并不高,爬梯却常爬很高。如果梯子实体距离上方的障碍物太近,会让入机们爬梯时卡在梯子顶端。
- func_ladder固体实体可使用任何纹理,VBSP会自动给予func_ladder以梯子成分。任何已渲染的面在游戏中仍然可见。 (例如
中梯子实体使用tools/toolsinvisible纹理。) - 多个相互交接的梯子会被转为单个梯子。如果要对一个梯子阻塞导航路点(block navigation),操作会在2个梯子上同时生效。在梯子间保留缝隙。
- 在

求生之路系列中,感染者梯子使用纹理tools/climb_versus。想要制作对幸存者和感染者阵营都可使用的梯子,参见下面非func_ladder作梯子的方法。也可以去看看如何在L4D中制作梯子的文章。
非func_ladder作梯子
这种梯子的放置方式与运作原理与固体实体型梯子完全一致,但是作为攀爬部分的固体不应该被转为func_ladder固体实体,否则在游戏中它会不存在。 要创建这种梯子,创建一个固体在你欲要使其可攀爬的物体/固体前,尽量靠近但不要接触。
把可见部分正面的宽高调整到与攀爬部分的相同,将纹理tools/toolsinvisibleladder应用给作为攀爬部分的固体。 然后没有了——你搞完了。
- 因为应用tools/toolsinvisibleladder的固体也会分割可视区域, 所以确保将攀爬部分转为func_detail或其他的固体实体。
- 在作为攀爬部分的固体与其他固体间预留至少一个单位的空隙来防止其他固体的某个纹理面被吃掉。
- 任何添加有
%CompileLadder参数的固体纹理都可供攀爬。 - toolsinvisibleladder纹理和任何其他的%CompileLadder材质都会让整个固体发挥梯子的效用,甚至在只有一面为该纹理的情况下也是如此。固体的其他面将仍然展示ta原有的纹理。
- 若固体仅有一面可供攀爬,那么带有$surfaceprop参数的梯子材质是一个替代的选择(测试于
),可能不适用于所有游戏。某些游戏同时也有一个提供不同攀爬音效的带同参数的木梯材质)。 - 在可供使用非func_ladder作梯子的游戏中,带碰撞体积的模型在使用
$contents "ladder"QC命令后可以像梯子般供作攀爬。
以固体为基础的变相创建梯子的方法
某些起源引擎的游戏不支持搞正常的梯子,燃鹅,创建极倾斜的楼梯是一种实现梯子的替代方案。
创建可视部分:
首先,创建一个prop_static实体并将类似于models/props_c17/metalladder002.mdl的世界模型应用给该实体。 你也可以创建一个梯子道具(ladder prop)或一个应用了梯子纹理的固体。
下一步,创建一个高16个单位且应用碰撞纹理的固体。以该固体作为单个阶梯,不断复制,并以1个单位为横向距离调整各阶梯位置,最终构成的结构实际上将被游戏视为可供玩家攀爬的楼梯。为防止玩家到达底部时ta们走出太远,选择未应用碰撞纹理的固体,将它们编为一组,压缩它们直到最高一阶穿出道具(the prop)终止的位置,而每个方块的小边缘仍会正常工作。(这句我看不太懂,原句:To keep them from going too far out once you reach the bottom select the no clip blocks group them and then compress them as long as the top step sticks out past where the prop ends and each block still has a small lip it will work just fine. )至此则大功告成——你得到了一个好看,可爬的梯子。
该种方法的视频参考: TF2地图制作:TF2中的梯子(需要梯子,嗯对)
由VScript驱动的替代方案
仅在
军团要塞2中使用: 使用VScript的,一个重现func_ladder移动方式的方案。
首先,下载该script (右键后点击 (将链接)另存为), 把TA放进你的tf/scripts/vscripts/目录内。然后创建一个func_brush作为func_ladder实体的替代,并在实体的键值Entity Scripts一栏填写func_ladder.
大功告成。
梯子优化/完善
作为可视部分的梯子道具,如每个prop_static实体,默认使用VPhysics作为碰撞体积。这会提供更细致的物理碰撞,但在某些情况下或许不太合适。在供多人游戏的和优化要求高的地图里,使用VPhysics的道具会花费宝贵的资源,而你可能会想去牺牲更好的物理效果来避免滞后/卡顿。以下是些减小花销的妙点子:
- 若梯子使用于
半衰期2或
半衰期2:死亡竞赛这2款游戏中,而且梯子还是直的,最好的选择取决于你是否打算让玩家透过梯子射击。如否(如梯子贴墙而立),那么Collisions的键值应改为"Use Bounding Box"(使用界限盒)。如是,那么键值可改为"Not Solid"(无碰撞体积)并放置一个应用碰撞纹理(如tools/toolsclip)的固体来提供碰撞体积。 - 若梯子使用于上面的同款游戏中,但梯子是斜的,使用界限盒("Use Bounding Box")不仅不会使之和梯子道具同时旋转,而且还会阻碍攀爬系统的正常工作,在这种情况下一个更好的选择是将梯子道具的键值Collisions更改为Not Solid,并沿梯子放置一个经过旋转且应用纹理toolsclip或toolsplayerclip的固体。做为选择,如果不用实体prop_static的话,你可以关闭SmartEdit(智能编辑)并将道具的键值solid更改为3,这会让ta使用一个正确旋转过的界限盒。
- 若梯子使用于
反恐精英:起源或
胜利之日:起源中,你可将梯子道具的键值Collisions更改为"Not Solid"并让func_ladder固体覆盖梯子道具,若有必要则适当旋转。
在多人游戏地图中,区别于直线的单向挪动,在梯子的表面上自由滑动是制图者所期望的另一种爬梯方式。固体作为外观的梯子,可以将供攀爬的梯子固体转为无碰撞的func_brush来防止玩家“粘”上梯子的一面,而用道具作为外观的梯子,它们常常沿墙面伸出过多距离让玩家觉得可以站在其中。那样的话,你最好创建2个应用toolsplayerclip纹理的楔形固体来引导玩家面向梯子正面。
如果没别的需要,把非func_ladder的一般固体作的梯子转为func_detail可以削减多余的可见区域。
亦可参阅
- func_useableladder
- info_ladder_dismount
- func_ladder
- 固体梯子 让你起源引擎mod的固体梯子生效的教程



