ALS V4 中文拆解手册

0. 先搞清楚 ALS 是什么

ALS = Advanced Locomotion System(高级运动系统),作者 Caleb Longmire,免费发布在虚幻商城。

它不是「一个角色 + 一堆动画」的资源包,而是一整套第三人称角色移动方案。你打开演示关卡按 WASD 走两步就会发现,它解决的是一堆自己从头做会非常痛苦的事:

  • 走 / 跑 / 冲刺 三种步态之间平滑过渡,速度变了动作跟着变,不滑步

  • 站立 / 下蹲 切换,并且蹲着走和站着走能无缝混合

  • 原地转身(Turn In Place):站着不动转视角,角色会自己迈一小步调整朝向

  • 翻越 (Mantle):对着 1 米高的墙冲过去,自动翻上去 ------ 而且是动态检测的,不用事先摆好可翻越区域

  • 空中状态:起跳、下落、落地缓冲、落地翻滚

  • 布娃娃(Ragdoll):按 X 软倒,再按一次爬起来,起来的位置跟着倒下的姿态走

  • 上半身叠加层(Overlay):同一套走跑动画,上半身能自动切换成持枪 / 拉弓 / 拿手电 / 望远镜

  • 脚步 IK:脚踩在不平的地面上会自己贴合

它不是成品游戏,也不打算是。 作者在演示关卡里放了一块牌子,原话是:

本系统并非成品,功能也不完整,它本来就不是为此而做的。它的存在只是为了展示「更高级的动画系统可以长什么样」。因此其中大量的玩法逻辑,都应该由你自己用更完善的系统去替换。请不要指望往里面塞点东西就能得到一个完整的游戏 ------ 要有效地使用这套系统,你需要具备一定的游戏开发经验。

这句话很重要,它决定了你应该怎么用它:把 ALS 当成「移动和动画的底座」,在它上面长你自己的玩法,而不是把它当成一个可以直接改改就上线的模板。


1. 七个枚举 ------ 整套系统的词汇表

ALS 的一切都是围着这七个枚举转的。看懂这七个,你就看懂了 ALS 在说什么。

它们在 Content\AdvancedLocomotionV4\Data\Enums\:

1.1 ALS_Gait ------ 步态

值 中文 说明
Walking 走 最慢,Ctrl 键切
Running 跑 默认档
Sprinting 冲刺 Shift 键按住

注意区分三个概念(这是 ALS 设计里很关键的一点):

  • Desired Gait(期望步态):玩家想用什么步态

  • Allowed Gait(允许步态):系统允许的最大步态(比如你在瞄准时就不让冲刺)

  • Actual Gait(实际步态) :角色当前真正在用的步态

为什么要有三个?因为从冲刺急停时,角色不会瞬间切成"走"------ 它会保持跑步动画直到速度真的降到跑步以下。Actual Gait 就是这个"实际"值。原作者注释:

取得实际步态。这是由角色的实际运动计算出来的,所以它可能和期望步态、允许步态都不一样。举例:如果允许步态变成了"走",实际步态在角色减速到走路速度之前,仍然会是"跑"。

1.2 ALS_Stance ------ 站姿

值 中文
Standing 站立
Crouching 下蹲

左 Alt 切换。双击左 Alt 会变成翻滚(Roll)。

1.3 ALS_RotationMode ------ 旋转模式(最重要、也最容易搞混的一个)

值 中文 说明
VelocityDirection 速度方向 角色朝着移动方向转身(像老式动作游戏)。按 1 键
LookingDirection 注视方向 角色朝着镜头看的方向(像 FPS 的肩膀视角)。按 2 键
Aiming 瞄准 举起武器时的模式,上半身锁定瞄准方向

VelocityDirection 和 LookingDirection 的区别,一句话:

  • 速度方向:你按 A,角色转过身去往左跑

  • 注视方向:你按 A,角色侧着身子往左平移,脸还朝着镜头方向

1.4 ALS_ViewMode ------ 视角

值 中文
ThirdPerson 第三人称
FirstPerson 第一人称

按 C 键切换(按住 C 再松开是换肩膀)。

⚠️ 有个联动规则(原作者注释):

如果切换到第一人称,而当前是速度方向模式,就把旋转模式设为注视方向。 如果切回第三人称,再把旋转模式恢复成你之前想要的那个。

为什么? 因为第一人称下你不可能"朝着移动方向转身"------ 那样镜头会跟着乱转。

1.5 ALS_OverlayState ------ 叠加层状态(上半身动作层)

这是 ALS 最有意思的设计。下半身跑走跳的动画不变,只换上半身。

值 中文 对应资产目录
Default 空手 ---
Rifle 步枪 Overlay\M4A1\
Pistol 手枪 Overlay\Pistol\
Bow 弓 Overlay\Bow\
Torch 手电筒 Overlay\Torch\
Binoculars 望远镜 Overlay\Binoculars\
Barrel 抱桶 Overlay\Barrel\
Box 抱箱子 Overlay\Box\
Masculine 男性姿态 Overlay\StanceVariations\
Feminine 女性姿态 Overlay\StanceVariations\
Injured 受伤 Overlay\StanceVariations\
HandsTied 双手被绑 Overlay\StanceVariations\

滚轮上下切换,Q 键打开选择菜单。

1.6 ALS_MovementState ------ 移动状态

值 中文 说明
Grounded 着地 正常在地面
InAir 空中 起跳/下落
Ragdoll 布娃娃 软倒
Mantling 翻越中 正在翻墙

注意 :这个枚举是 Grounded ,不带 InAir(InAir 在别的地方也有定义)。以资源里的实际值为准。

1.7 ALS_MovementAction ------ 移动动作

值 中文 说明
LowMantle 低翻越 翻矮墙,手撑一下
HighMantle 高翻越 翻高墙,整个人上去
Rolling 翻滚 蹲姿双击
GettingUp 起身 从布娃娃爬起来

2. 核心心智模型:状态是怎么流动的

想改 ALS,必须先明白这个循环。整套系统就是一个「每帧算状态 → 告诉动画蓝图 → 动画蓝图选动画」的循环。

复制代码
   玩家按键
      ↓
┌─────────────────────────────────────┐
│  ALS_Base_CharacterBP(角色蓝图)    │
│                                      │
│  1. 读输入:WASD / 蹲 / 冲刺 / 瞄准   │
│  2. 算速度、加速度、朝向              │
│  3. 算这一帧应该是什么状态:          │
│     Gait / Stance / RotationMode /   │
│     OverlayState / MovementState /   │
│     MovementAction                   │
│  4. 得出「实际值」,和上一帧对比,     │
│     变了就触发对应的「事件」           │
└──────────────┬──────────────────────┘
               │  通过蓝图接口传递
               │  ALS_Character_BPI
               │  ALS_Animation_BPI
               ↓
┌─────────────────────────────────────┐
│  ALS_AnimBP(动画蓝图)              │
│                                      │
│  1. 从接口取上面那些状态值            │
│  2. 状态机(State Machine)决定进哪个 │
│     姿态:站/蹲 × 走/跑/冲刺 × 方向   │
│  3. 混合空间(Blend Space)按速度和   │
│     方向混合动画                      │
│  4. 叠加层(Layered Blend)把持枪/   │
│     拉弓等上半身动作叠上去            │
│  5. 脚步 IK 修正                      │
└──────────────┬──────────────────────┘
               ↓
          骨骼姿态输出

为什么要用「接口」而不是直接引用?

ALS 的动画蓝图不认识你的角色类 。它只认 ALS_Animation_BPI 这个接口。任何实现了这个接口的角色(玩家、AI、甚至别的类),动画蓝图都能驱动。

这就是为什么演示关卡里的 AI 角色和玩家角色共用同一套 AnimBP ------ 原作者注释:

从移动和动画的角度看,AI 角色和玩家角色的运作方式完全相同,唯一的区别在于 Controller(控制器)。只要把 Velocity(速度)、Movement Input(移动输入)、Looking Rotation(注视旋转)以及当前状态这些信息通过接口传给 AnimBP,一切就会和玩家角色一样正常工作。

继承链

复制代码
ALS_Base_CharacterBP          ← 所有逻辑都在这(输入、状态、翻越、布娃娃、相机接口)
      ↓ 继承
ALS_AnimMan_CharacterBP       ← 只做两件事:套上 Mannequin 模型、把 Overlay 状态映射到具体动画

你要改东西,90% 改的是 ALS_Base_CharacterBP;换模型、改 Overlay 动画映射,才动 ALS_AnimMan_CharacterBP。


3. 资产地图

E:\UnrealProject\Als_Test\Content\AdvancedLocomotionV4\ 下的结构:

复制代码
AdvancedLocomotionV4/
│
├── Blueprints/
│   ├── CharacterLogic/
│   │   ├── ALS_Base_CharacterBP.uasset      ★ 核心,所有逻辑
│   │   ├── ALS_AnimMan_CharacterBP.uasset     演示用子类(Mannequin 模型)
│   │   ├── ALS_Player_Controller.uasset       玩家控制器(相机、调试切换)
│   │   └── AI/                                演示用 AI(行为树任务 + AI 控制器)
│   ├── GameModes/
│   │   └── ALS_GameMode_SP.uasset             游戏模式(默认 Pawn 指向 AnimMan 角色)
│   ├── Interfaces/                          ★ 四个接口,模块之间靠它们通信
│   │   ├── ALS_Character_BPI.uasset           角色接口
│   │   ├── ALS_Animation_BPI.uasset           动画接口(AnimBP 靠这个拿数据)
│   │   ├── ALS_Camera_BPI.uasset              相机接口
│   │   └── ALS_Controller_BPI.uasset          控制器接口
│   ├── CameraSystem/
│   │   ├── ALS_PlayerCameraManager.uasset     相机管理器(算最终相机位置)
│   │   └── ALS_PlayerCameraBehavior.uasset    相机行为(相机动画蓝图)
│   ├── AnimModifiers/                       ★ 动画曲线生成器
│   │   ├── Create_Curves.uasset
│   │   ├── Calculate_RotationAmount.uasset
│   │   ├── Create_LayeringCurves.uasset
│   │   └── Copy_Curves.uasset
│   ├── AnimNotifys/                         ★ 挂在动画上的自定义通知
│   │   ├── MovementAction_NotifyState.uasset  翻滚/翻越期间锁定状态
│   │   ├── GroundedEntryState_AnimNotify.uasset
│   │   ├── EarlyBlendOut_NotifyState.uasset
│   │   ├── Footstep_AnimNotify.uasset
│   │   ├── CameraShake_Notify.uasset
│   │   └── OverlayOverride_NotifyState.uasset
│   ├── UI/                                     演示 HUD + Overlay 切换菜单
│   └── Libraries/ALS_MacroLibrary.uasset       蓝图宏库
│
├── CharacterAssets/MannequinSkeleton/
│   ├── ALS_AnimBP.uasset                    ★ 动画蓝图(几千个节点)
│   ├── ALS_Mannequin_Skeleton.uasset          骨架(UE4 Mannequin 骨骼)
│   ├── Meshes/                                AnimMan / Mannequin / Proxy
│   └── AnimationExamples/                 ★ 151 个动画,分四类
│       ├── Base/                              站蹲 × 走跑冲刺 × 方向 + 空中 + 转身
│       ├── Overlay/                           各种持械的上半身动作
│       ├── Actions/                           翻越 / 翻滚 / 起身蒙太奇
│       └── AimOffsets/                        瞄准偏移
│
├── Data/
│   ├── Enums/                              ★ 七个核心枚举
│   ├── Structs/                               参数结构体
│   ├── Curves/                                曲线资产(混合权重等)
│   └── DataTables/MovementModelTable.uasset   移动参数表
│
├── Levels/
│   ├── ALS_DemoLevel.umap                     演示关卡(推荐先玩这个)
│   └── ALS_GridLevel.umap
│
├── Environment/ Props/ Audio/                 演示场景素材(可删)
└── Blueprints/UI/                             演示 HUD

★ = 核心资产


4. 操作说明

这一节的内容全部来自原作者写在蓝图里的注释(原文见第 6 节),不是我的猜测。

按键 作用 原作者注释原文
W A S D 移动 ---
鼠标 转视角 ---
Shift(按住) 冲刺 "按住 Sprint Action 冲刺"
Ctrl 切换 走 / 跑 "按 Walk Action 在走和跑之间切换"
左Alt 站 ↔ 蹲 "按 Stance Action 切换站立/下蹲"
左Alt 双击 翻滚 "双击翻滚"
空格 跳跃 见下方说明
X 布娃娃开关 "按 Ragdoll Action 开关布娃娃状态"
C 按住切第一/第三人称,单击换肩膀 "按住 Camera Action 切换第一/第三人称,单击换肩膀"
1 / 2 切换旋转模式 "切换默认旋转模式为速度方向或注视方向"
鼠标右键(按住) 进入瞄准 "按住 AimAction 进入瞄准模式,松开恢复之前的旋转模式"
滚轮上/下 切换 Overlay ---
Q 打开 Overlay 菜单 ---

空格键是个多功能键,原作者注释:

按 Jump Action:如果正在布娃娃状态,就结束布娃娃;检查是否可以翻越(在地面或空中时);如果蹲着就站起来;如果站着就跳。

为什么一个键干这么多事? 因为 ALS 是状态驱动的 ------ 同样的"跳跃"意图,在不同状态下应该做不同的事。这是这套系统设计思路的典型体现。


5. 常用改动从哪里下手

5.1 换成你自己的角色模型

  1. 把你的模型导入工程,蒙皮到 UE4 Mannequin 骨骼(或者后续做重定向)

  2. 打开 ALS_AnimMan_CharacterBP

  3. 左边组件树选中 Mesh,把 Skeletal Mesh 换掉

  4. 如果要换骨架,记得把 Anim Class 仍然指向 ALS_AnimBP

⚠️ ALS 用的是 UE4 Mannequin 骨骼 ,和你工程里 UE5 的 Manny/Quinn 不通用。想在 Manny 上用,必须做 IK Retarget(这是另一摊工作)。

5.2 改移动速度

打开 Content\AdvancedLocomotionV4\Data\DataTables\MovementModelTable.uasset。

这里面是各个步态的速度、加速度、减速度、转向速率。原作者注释:

从 Movement Model 数据表取移动数据并设置到 Movement Data 结构体。这样你可以很方便地替换整套移动行为。

改完在 ALS_Base_CharacterBP 里会立刻生效 ------ 不用改蓝图逻辑。

5.3 改相机

  • 相机位置/距离/偏移 :ALS_Base_CharacterBP 里的 Camera Settings 相关变量

  • 相机行为 (跟随曲线、碰撞):Blueprints\CameraSystem\ALS_PlayerCameraManager.uasset

  • 相机动画 :Blueprints\CameraSystem\ALS_PlayerCameraBehavior.uasset(这是个 AnimBP)

原作者注释说明相机管理器在干什么:

从 Player Camera Behavior 动画蓝图里取一个动画曲线值,作为自定义相机行为计算的参数。

5.4 加一套新的持械姿态(比如加一把霰弹枪)

  1. 准备好上半身的动画(瞄准偏移 + 各姿态的叠加动画)

  2. 在 ALS_OverlayState 枚举里加一个新枚举项 (比如 Shotgun) ⚠️ 加在最后,不要插在中间 ------ 枚举的序号会变,动画蓝图里按序号做的映射会错位

  3. 在 ALS_AnimMan_CharacterBP 里找到 Overlay 状态映射的地方,把新状态指向你的动画

  4. 在 Blueprints\UI\ 的 Overlay 切换菜单里加一项

5.5 删掉演示内容

如果你自己做游戏,这些可以整个删掉,不影响角色系统:

  • Environment\、Props\、Audio\ ------ 演示场景素材(约 20 MB)

  • Levels\ALS_DemoLevel、ALS_GridLevel ------ 演示关卡

  • Blueprints\UI\ ------ 演示 HUD

  • Blueprints\CharacterLogic\AI\ ------ 演示 AI

  • CharacterAssets\MannequinSkeleton\AnimationExamples\Overlay\ 里你用不到的那几个持械目录

千万不要删 :Data\(枚举/结构体/曲线/数据表)、Blueprints\Interfaces\、Blueprints\AnimModifiers\、Blueprints\AnimNotifys\。


6. 原作者注释中文对照

下面这些是 ALS 作者写在蓝图注释框里的说明,逐条对照翻译。 左列是原文(在蓝图里看到的),右列是中文。 常见术语:Gait=步态 / Stance=站姿 / Mantle=翻越 / Overlay=叠加层 / Ragdoll=布娃娃 / Curve=曲线

6.1 输入与状态(ALS_Base_CharacterBP)

原文 中文
Gait Actions Type 1: Press "Walk Action" to toggle walking/running, hold "Sprint Action" to sprint. 步态方案 1:按 Walk Action 在走/跑之间切换,按住 Sprint Action 冲刺。
Gait Action Type 2 (Unused): Hold "Sprint Action" to run, double tap and hold to sprint. 步态方案 2(未启用):按住 Sprint Action 跑步,双击并按住冲刺。
Stance Action: Press "Stance Action" to toggle Standing / Crouching, double tap to Roll. 站姿:按 Stance Action 切换站立/下蹲,双击翻滚。
Jump Action: Press "Jump Action" to end the ragdoll if ragdolling, check for a mantle if grounded or in air, stand up if crouching, or jump if standing. 跳跃:按 Jump Action ------ 布娃娃状态下结束布娃娃;在地面或空中时检查能否翻越;下蹲时站起;站立时跳跃。
Ragdoll Action: Press "Ragdoll Action" to toggle the ragdoll state on or off. 布娃娃:按 Ragdoll Action 开关布娃娃状态。
Camera Action: Hold "Camera Action" to toggle Third / First Person, tap to swap shoulders. 相机:按住 Camera Action 切换第一/第三人称,单击换肩膀。
AimAction: Hold "AimAction" to enter the aiming mode, release to revert back the desired rotation mode. 瞄准:按住 AimAction 进入瞄准模式,松开恢复到之前想要的旋转模式。
Select Rotation Mode: Switch the desired (default) rotation mode to Velocity or Looking Direction. This will be the mode the character reverts back to when un-aiming 选择旋转模式:把期望(默认)旋转模式切换为速度方向或注视方向。这就是松开瞄准后角色会恢复到的模式。
Velocity / Looking Direction Rotation 速度方向 / 注视方向旋转
If the new rotation mode is Velocity Direction and the character is in First Person, set the viewmode to Third Person. 如果新旋转模式是速度方向、而角色正处于第一人称,就把视角切回第三人称。
If First Person, set the rotation mode to looking direction if currently in the velocity direction mode. 如果切到第一人称,而当前是速度方向模式,就设为注视方向模式。
If Third Person, set the rotation mode back to the desired mode. 如果切到第三人称,就把旋转模式恢复成期望的那个。

6.2 步态判定

原文 中文
Calculate the Allowed Gait. This represents the maximum Gait the character is currently allowed to be in, and can be determined by the desired gait, the rotation mode, the stance, etc. For example, if you wanted to force the character into a walking state while indoors, this could be done here. 计算「允许步态」。它代表角色当前被允许使用的最高步态,由期望步态、旋转模式、站姿等共同决定。举例:如果你想强制角色在室内只能走,就在这里做。
Get the Actual Gait. This is calculated by the actual movement of the character, and so it can be different from the desired gait or allowed gait. For instance, if the Allowed Gait becomes walking, the Actual gait will still be running untill the character decelerates to the walking speed. 取得「实际步态」。它由角色真实的运动算出,所以可能和期望步态、允许步态都不同。举例:允许步态变成「走」之后,实际步态在角色减速到走路速度之前仍会是「跑」。
Determine the Actual Gait. If it is different from the current Gait, Set the new Gait Event. 判定实际步态。如果它和当前步态不同,就触发「新步态」事件。
Update the Character Max Walk Speed to the configured speeds based on the currently Allowed Gait. 根据当前的允许步态,把角色最大行走速度设为配置值。
Use the allowed gait to update the movement settings. 用允许步态来更新移动设置。
Determine if the character is currently able to sprint based on the Rotation mode and current acceleration (input) rotation. If the character is in the Looking Rotation mode, only allow sprinting if there is full movement input and it is faced forward relative to the camera + or - 50 degrees. 根据旋转模式和当前(输入)加速度方向判断角色现在能不能冲刺。如果处于注视方向模式,只有在移动输入满值、且朝向相对相机在正负 50 度以内时才允许冲刺。

6.3 速度与加速度计算

原文 中文
Determine if the character is moving by getting it's speed. The Speed equals the length of the horizontal (x y) velocity, so it does not take vertical movement into account. If the character is moving, update the last velocity rotation. This value is saved because it might be useful to know the last orientation of movement even after the character has stopped. 通过速度判断角色是否在移动。Speed 等于水平(XY)速度的长度,所以不计入垂直运动。如果角色在移动,就更新「最后的移动方向」。这个值被保存下来,因为即使角色停下了,知道它最后朝哪个方向移动可能也有用。
Calculate the Acceleration by comparing the current and previous velocity. The Current Acceleration returned by the movement component equals the input acceleration, and does not represent the actual physical accelration of the character. 通过比较当前和上一帧的速度来计算加速度。移动组件返回的「当前加速度」等于输入加速度,并不代表角色真实的物理加速度。
Determine if the character has movement input by getting its movement input amount. The Movement Input Amount is equal to the current acceleration divided by the max acceleration so that it has a range of 0-1, 1 being the maximum possible amount of input, and 0 beiung none. If the character has movement input, update the Last Movement Input Rotation. 通过移动输入量判断角色有没有移动输入。移动输入量 = 当前加速度 ÷ 最大加速度,范围 0-1,1 表示输入拉满、0 表示没有输入。如果角色有移动输入,就更新「最后的移动输入方向」。
Map the character's current speed to the configured movement speeds with a range of 0-3, with 0 = stopped, 1 = the Walk Speed, 2 = the Run Speed, and 3 = the Sprint Speed. This allows you to vary the movement speeds but still use the mapped range in calculations for consistent results. 把角色当前速度映射到配置的移动速度上,范围 0-3:0 = 停止,1 = 走速,2 = 跑速,3 = 冲刺速度。这样你可以随意改这些速度值,而计算时仍然用映射后的范围,结果保持一致。
Update the Acceleration, Deceleration, and Ground Friction using the Movement Curve. This allows for fine control over movement behavior at each speed (May not be suitable for replication). 用移动曲线更新加速度、减速度和地面摩擦力。这样可以精细控制每种速度下的移动手感(可能不适合网络同步)。
These values represent how the capsule is moving as well as how it wants to move, and therefore are essential for any data driven animation system. They are also used throughout the system for various functions, so I found it is easiest to manage them all in one place. 这些值既代表胶囊体「正在怎么动」,也代表它「想要怎么动」,因此对任何数据驱动的动画系统都是必不可少的。它们在系统各处被用到,所以我发现把它们集中在一个地方管理最省事。
Get movement data from the Movement Model Data table and set the Movement Data Struct. This allows you to easily switch out movement behaviors. 从 Movement Model 数据表取移动数据,设置到 Movement Data 结构体。这样你可以很方便地整包替换移动行为。
Cache certain values to be used in calculations on the next frame 缓存一些值,供下一帧的计算使用。
Interpolate the Target Rotation for extra smooth rotation behavior 对目标旋转做插值,让转向更顺滑。
Calculate the rotation rate by using the current Rotation Rate Curve in the Movement Settings. Using the curve in conjunction with the mapped speed gives you a high level of control over the rotation rates for each speed. Increase the speed if the camera is rotating quickly for more responsive rotation. 用移动设置里当前的「转向速率曲线」来计算转向速率。曲线配合映射后的速度,可以让你高度控制每种速度下的转向速率。如果相机转得快,就提高速率让角色转向更跟手。
Prevent the character from rotating past a certain angle. 防止角色转过某个角度。

6.4 翻越系统(Mantle)------ 完整七步

这是 ALS 里最复杂也最漂亮的部分。 原作者把它拆成了 Step 1 ~ Step 7:

原文 中文
Step 1: Trace forward to find a wall / object the character cannot walk on. 第 1 步:向前做射线检测,找到角色走不上去的墙/物体。
Step 2: Trace downward from the first trace's Impact Point and determine if the hit location is walkable. 第 2 步:从第一次检测的命中点向下做射线,判断命中处能不能站上去。
Step 3: Check if the capsule has room to stand at the downward trace's location. If so, set that location as the Target Transform and calculate the mantle height. 第 3 步:检查胶囊体在向下检测的命中位置有没有空间站立。有的话就把那里设为「目标变换」,并算出翻越高度。
Step 4: Determine the Mantle Type by checking the movement mode and Mantle Height. 第 4 步:根据移动模式和翻越高度判定翻越类型(低翻越 / 高翻越)。
Step 5: If everything checks out, start the Mantle 第 5 步:如果所有检查都通过,开始翻越。
Step 6: Configure the Mantle Timeline so that it is the same length as the Lerp/Correction curve minus the starting position, and plays at the same speed as the animation. Then start the timeline. 第 6 步:配置翻越时间轴,让它的长度等于「插值/修正曲线」减去起始位置,并以和动画相同的速度播放,然后启动时间轴。
Step 7: Play the Anim Montaget if valid. 第 7 步:如果蒙太奇有效,播放它。

翻越开始后(MantleStart 函数里):

原文 中文
Step 1: Get the Mantle Asset and use it to set the new Mantle Params. 第 1 步:取得 Mantle Asset,用它设置新的翻越参数。
Step 2: Update the Position and Correction Alphas using the Position/Correction curve set for each Mantle. 第 2 步:用每个翻越动作自带的 Position/Correction 曲线来更新位置和修正的权重。
Step 3: Set the Mantle Target and calculate the Starting Offset (offset amount between the actor and target transform). 第 3 步:设置翻越目标,并计算起始偏移(角色当前位置和目标变换之间的差距)。
Step 4: Calculate the Animated Start Offset from the Target Location. This would be the location the actual animation starts at relative to the Target Transform. 第 4 步:从目标位置算出「动画起始偏移」。也就是动画实际开始播放的位置相对于目标变换的差值。
Step 5: Clear the Character Movement Mode and set the Movement State to Mantling 第 5 步:清空角色移动模式,把移动状态设为「翻越中」。
Mantle Timeline: This timeline is triggered from the MantleStart function and updates the function that lerps the character to the new location. 翻越时间轴:由 MantleStart 函数触发,驱动那个把角色插值移动到新位置的函数。
Blend from the currently blending transforms into the final mantle target using the X value of the Position/Correction Curve. 用 Position/Correction 曲线的 X 值,从当前混合中的变换过渡到最终的翻越目标。
Blend into the animated horizontal and rotation offset using the Y value of the Position/Correction Curve. 用 Position/Correction 曲线的 Y 值,混合到动画的水平与旋转偏移。
Blend into the animated vertical offset using the Z value of the Position/Correction Curve. 用 Position/Correction 曲线的 Z 值,混合到动画的垂直偏移。
Initial Blend In (controlled in the timeline curve) to allow the actor to blend into the Position/Correction curve at the midoint. This prevents pops when mantling an object lower than the animated mantle. 初始混合(由时间轴曲线控制),让角色从中间点开始进入 Position/Correction 曲线。这样可以避免在翻越一个比动画设定更矮的物体时出现跳变。
Step 3: Lerp multiple transforms together for independent control over the horizontal and vertical blend to the animated start position, as well as the target position. 第 3 步:把多个变换一起插值,从而独立控制「到动画起始位置」和「到目标位置」这两个方向的水平/垂直混合。
Step 4: Set the actors location and rotation to the Lerped Target. 第 4 步:把角色的位置和旋转设为插值后的目标。
Step 1: Continually update the mantle target from the stored local transform to follow along with moving objects. 第 1 步:持续用保存的局部变换更新翻越目标,这样在移动的物体上翻越时也能跟上。
Step 2: Convert the world space target to the mantle component's local space for use in moving objects. 第 2 步:把世界空间的目标转换到翻越组件的局部空间,用于移动物体上的翻越。
Perform a trace to see if the capsule has room to be at the target location. 做射线检测,看胶囊体在目标位置有没有空间。
Trace downward from the target location to offset the target location, preventing the lower half of the capsule from going through the floor when the ragdoll is laying on the ground. 从目标位置向下做射线来偏移目标位置,防止布娃娃躺在地上时胶囊体下半部分穿进地面。
Perform a mantle check if falling while movement input is pressed. 如果在下落且有移动输入,就做一次翻越检测。
This gets overriden in the AnimMan Child character to select the appropriate animation based on the overlay state. 这个在子类 AnimMan 角色里被覆盖,用来根据 Overlay 状态选择对应的动画。
Get the Default Mantle Asset values. These will be overriden in the AnimMan Child Character 取得默认的翻越资产值。这些会在子类 AnimMan 角色里被覆盖。
Stop the Mantle Timeline if transitioning to the ragdoll state while mantling. 如果翻越过程中进入布娃娃状态,就停止翻越时间轴。
Mantle Actual Start Offset Location / Mantle Animated Start Offset Location 翻越的实际起始偏移位置 / 翻越的动画起始偏移位置

6.5 布娃娃与起身

原文 中文
Step 1: Clear the Character Movement Mode and set teh Movement State to Ragdoll 第 1 步:清空角色移动模式,把移动状态设为布娃娃。
Step 2: Disable capsule collision and enable mesh physics simulation starting from the pelvis. 第 2 步:关闭胶囊体碰撞,从骨盆开始启用网格物理模拟。
Step 3: Re-Enable capsule collision, and disable physics simulation on the mesh. 第 3 步:重新启用胶囊体碰撞,关闭网格的物理模拟。
Step 1: Save a snapshot of the current Ragdoll Pose for use in AnimGraph to blend out of the ragdoll 第 1 步:保存当前布娃娃姿态的快照,供 AnimGraph 从布娃娃状态平滑混合出来时使用。
Step 2: If the ragdoll is on the ground, set the movement mode to walking and play a Get Up animation. If not, set the movement mode to falling and update teh character movement velocity to match the last ragdoll velocity. 第 2 步:如果布娃娃在地上,就把移动模式设为行走并播放起身动画;如果不在,就把移动模式设为下落,并把角色移动速度更新为布娃娃的最后速度。
Step 3: Stop any active montages. 第 3 步:停止所有正在播放的蒙太奇。
Determine wether the ragdoll is facing up or down and set the target rotation accordingly. 判断布娃娃是面朝上还是朝下,据此设置目标旋转。
Disable Gravity if falling faster than -4000 to prevent continual acceleration. This also prevents the ragdoll from going through the floor. 如果下落速度快于 -4000 就关闭重力,防止持续加速,同时也防止布娃娃穿过地面。
Update the Actor location to follow the ragdoll. 更新角色位置以跟随布娃娃。
Set the Last Ragdoll Velocity. 记录布娃娃的最后速度。
Use the Ragdoll Velocity to scale the ragdoll's joint strength for physical animation. 用布娃娃的速度来缩放各关节的强度,用于物理动画。
Set the pelvis as the target location. 把骨盆设为目标位置。

6.6 其它状态逻辑

原文 中文
If the character enters the air, set the In Air Rotation and uncrouch if crouched. If the character is currently rolling, enable the ragdoll. 如果角色进入空中,设置「空中朝向」;如果正蹲着就站起来;如果正在翻滚,就启用布娃娃。
On Jumped: Set the new In Air Rotation to the velocity rotation if speed is greater than 100. 起跳时:如果速度大于 100,把空中朝向设为速度方向。
On Landed: Temporarily increase the braking friction on lands to make landings more accurate, or trigger a breakfall roll. 落地时:临时提高刹车摩擦力让落点更准,或者触发落地翻滚。
Breakfall / Roll: Simply play a Root Motion Montage. 落地翻滚:很简单,就是播放一个根运动蒙太奇。
Make the character crouch if performing a roll. 如果正在翻滚,就让角色下蹲。
Upon ending a roll, reset the stance back to its desired value. 翻滚结束时,把站姿恢复成期望值。
Use the Character Movement Mode changes to set the Movement States to the right values. This allows you to have a custom set of movement states but still use the functionality of the default character movement component. 用角色移动模式的切换来把移动状态设为正确的值。这样你既能有自己的移动状态集合,又能继续用默认移动组件的功能。
Set the Character Movement Mode to Walking 把角色移动模式设为行走。
Set the amount of Acceleration. 设置加速度大小。
Update states to use the initial desired values. 把各个状态更新为初始期望值。
These functions are a great place to perform logic based on the previous and new state, as they should be called whenever a state changes (as long as you use the Interface Event to change the state). 这些函数是处理「状态变化」逻辑的好地方 ------ 只要用接口事件来改状态,它们就会在每次状态变化时被调用。
Update the Actors Location and Rotation as well as the Target Rotation variable to keep everything in sync. 更新角色的位置和旋转,以及目标旋转变量,保持所有东西同步。
Make sure the mesh and animbp update after the CharacterBP to ensure it gets the most recent values. 确保网格和动画蓝图在角色蓝图之后更新,好让它们拿到最新的值。
Set Reference to the Main Anim Instance. 设置对主动画实例的引用。
Get Debug Info from Player Controller 从玩家控制器获取调试信息。
Get the Actual Gait...(同上,见 6.2) ---
Apply the RotationAmount curve from Turn In Place Animations. The Rotation Amount curve defines how much rotation should be applied each frame, and is calculated for animations that are animated at 30fps. 应用原地转身动画里的 RotationAmount 曲线。这条曲线定义每帧应该施加多少旋转量,是按 30fps 制作的动画计算出来的。

6.7 相机系统

原文 中文
Get an Anim Curve value from the Player Camera Behavior AnimBP to use as a parameter in the custom camera behavior calculations 从 Player Camera Behavior 动画蓝图取一个动画曲线值,用作自定义相机行为计算的参数。
Get info from the character each frame to use in the camera graph. 每帧从角色取得信息,供相机图使用。
Call "OnPossess" in ALS Player Camera Manager when possessing a pawn 附身到 Pawn 时,调用 ALS Player Camera Manager 里的 OnPossess。
Create and add HUD to Viewport 创建 HUD 并添加到视口。
Search for all ALS Characters and populate array. Used to switch target character when viewing character info in the HUD 搜索所有 ALS 角色并填充数组。用于在 HUD 里查看角色信息时切换目标角色。
The currently selected pose (as an enum value) 当前选中的姿态(枚举值)。

6.8 动画蓝图(ALS_AnimBP)------ 运行机制

原文 中文
Get Information from the Character via the Character Interface to use throughout the AnimBP and AnimGraph. 通过角色接口从角色取得信息,供整个 AnimBP 和 AnimGraph 使用。
Each stance can have its own set of State Machines. The cached locomotion states are inserted into the "Main Grounded States" for easy transitions between stances. 每个站姿可以有自己的一套状态机。缓存好的移动状态会被插进「Main Grounded States」里,方便在站姿之间切换。
Create layers from different body sections. 按身体部位切分图层。
Calculate the Movement Direction. This value represents the direction the character is moving relative to the camera during the Looking Cirection / Aiming rotation modes, and is used in the Cycle Blending Anim Layers to blend to the appropriate directional states. 计算移动方向。在注视方向/瞄准模式下,这个值代表角色相对相机的移动方向,用于在循环混合动画层里混合到正确的方向状态。
Calculate the Velocity Blend. This value represents the velocity amount of the actor in each direction (normalized so that diagonals equal .5 for each direction), and is used in a BlendMulti node to produce better directional blending than a standard blendspace. 计算速度混合。这个值代表角色在各个方向上的速度分量(已归一化,斜向时每个方向为 0.5),用在 BlendMulti 节点里,能得到比标准混合空间更好的方向混合效果。
Calculate the Walk Run Blend. This value is used within the Blendspaces to blend between walking and running. 计算走跑混合值。用在混合空间里,在走和跑之间做混合。
Calculate the Stride Blend. This value is used within the blendspaces to scale the stride (distance feet travel) so that the character can walk or run at different movement speeds. It also allows the walk or run gait animations to blend independently while still matching the animation speed to the movement speed, preventing the character from needing to play a half walk+half run blend. The curves are used to map the stride amount to the speed for maximum control. 计算步幅混合值。用在混合空间里缩放步幅(脚走过的距离),好让角色能以不同速度走或跑。它还让走和跑的动画能各自独立混合、同时又把动画速度匹配上移动速度,避免出现「半步走半步跑」的混合。曲线用来把步幅映射到速度,以便最大程度地控制。
Calculate the Relative Acceleration Amount. This value represents the current amount of acceleration / deceleration relative to the actor rotation. It is normalized to a range of -1 to 1 so that -1 equals the Max Braking Deceleration, and 1 equals the Max Acceleration of the Character Movement Component. 计算相对加速度量。这个值代表相对角色朝向的当前加速/减速量,归一化到 -1~1,其中 -1 等于角色移动组件的最大刹车减速度,1 等于最大加速度。
Calculate the Crouching Play Rate by dividing the Character's speed by the Animated Speed. This value needs to be separate from the standing play rate to improve the blend from crocuh to stand while in motion. 用角色速度除以动画速度来计算下蹲的播放速率。这个值需要和站立的播放速率分开,以便改进移动中从蹲到站的混合。
Calculate the Aiming angle and Smoothed Aiming Angle by getting the delta between the aiming rotation and the actor rotation. 通过求瞄准朝向和角色朝向之间的差值,计算瞄准角度和平滑后的瞄准角度。
Interp the Aiming Rotation value to achieve smooth aiming rotation changes. Interpolating the rotation before calculating the angle ensures the value is not affected by changes in actor rotation, allowing slow aiming rotation changes with fast actor rotation changes. 对瞄准朝向做插值,实现平滑的瞄准转向。在计算角度之前先插值可以确保这个值不受角色朝向变化的影响,从而在角色快速转身时依然能缓慢改变瞄准方向。
Clamp the Aiming Pitch Angle to a range of 1 to 0 for use in the vertical aim sweeps. 把瞄准俯仰角限制在 0~1,用于垂直方向的瞄准扫描。
Get the Aim Offset weight by getting the opposite of the Aim Offset Mask. 通过取「瞄准偏移遮罩」的反值,得到瞄准偏移的权重。
Get the delta between the Movement Input rotation and Actor rotation and map it to a range of 0-1. This value is used in the aim offset behavior to make the character look toward the Movement Input. 求移动输入方向与角色朝向的差值,并映射到 0~1。这个值用在瞄准偏移行为里,让角色看向移动输入方向。
Cache all directions so they can be used in multiple places but only evaluate once. 缓存所有方向值,这样可以在多处使用但只计算一次。
Cache all directions + Sprint so they can be used in multiple places but only evaluate once. 缓存所有方向值 + 冲刺,这样可以在多处使用但只计算一次。
Blend Root Motion Based on Root Bone 基于根骨骼混合根运动。
Blend AnimCurves from both layers together and override previous layer interference. 把两个图层的动画曲线混合在一起,并覆盖之前图层的干扰。
Although these layer nodes have no bones, they still influences the curve values. This allows the system to take the values directly from the curves present in the Base and Overlay Layer, preventing them from being affected by all the previous layering. If this is not done, it would be nearly impossible to control how the curves interact with each other, since they drive the blend amounts in the layering process. 虽然这些图层节点没有骨骼,它们仍然会影响曲线值。这让系统能直接从 Base 层和 Overlay 层的曲线取值,不受之前所有分层的影响。如果不这么做,几乎不可能控制曲线之间如何互相作用 ------ 因为在分层过程中,正是这些曲线在驱动混合量。
Both a mesh space and local space version of the Base Additive is created so that different body parts can recieve different additive types. Local space works best on the arms so that the motion respects the rotation induced by the spine. Base Additive 同时创建了网格空间和局部空间两个版本,好让不同身体部位接收不同的叠加类型。局部空间在手臂上效果最好,这样动作会尊重脊椎带来的旋转。
Do additive delta calculation in mesh space 在网格空间做叠加差值计算。
Blend and set the Hand IK weights to ensure they only are weighted if allowed by the Arm layers. 混合并设置手部 IK 权重,确保只有在手臂图层允许时才生效。
Apply the RotationAmount curve(见 6.6) ---
Apply Sprinting if not masked. The mask is used in the additive landing animations to improve the sprinting land. If not masked, the knees had the tendency to overcompress and cause IK issues. 如果没有被遮罩,就应用冲刺。遮罩用在叠加的落地动画里以改进冲刺落地。如果不遮罩,膝盖容易过度压缩并引发 IK 问题。
Apply IK to Feet / Apply Aim Offsets or manual spine rotation 对脚部应用 IK / 应用瞄准偏移或手动脊椎旋转。
Interp Foot IK offsets back to 0 把脚部 IK 偏移插值回 0。
Calculate the Pelvis Alpha by finding the average Foot IK weight. If the alpha is 0, clear the offset. 通过求脚部 IK 权重的平均值来计算骨盆权重。如果权重为 0,就清空偏移。
Calculate the Diagnal Scale Amount. This value is used to scale the Foot IK Root bone to make the Foot IK bones cover more distance on the diagonal blends. Without scaling, the feet would not move far enough on the diagonal direction due to the linear translational blending of the IK bones. The curve is used to easily map the value. 计算斜向缩放量。这个值用于缩放脚部 IK 的根骨骼,让脚 IK 骨骼在斜向混合时覆盖更大距离。如果不缩放,由于 IK 骨骼是线性平移混合的,脚在斜向就不会移动足够远。用曲线来方便地映射这个值。
Get the distance traveled between frames relative to the mesh rotation to find how much the foot should be offset to remain planted on the ground. 求每帧之间相对网格旋转走过的距离,以确定脚需要偏移多少才能稳定踩在地面上。
Enable Movement Animations if IsMoving and HasMovementInput, or if the Speed is greater than 150. 如果「正在移动」且有「移动输入」,或者速度大于 150,就启用移动动画。
If the character stops while a foot is planted down, lock the correct foot. 如果角色停下时有一只脚踩在地上,就锁定正确的那只脚。
If the character stops while a foot is NOT planted down, play a section of the cycle where the foot IS down, and lock it. 如果角色停下时脚没有踩在地上,就播放循环里「脚踩地」的那一段,并锁定它。
Calculate the land prediction weight by tracing in the velocity direction to find a walkable surface the character is falling toward, and getting the 'Time' (range of 0-1, 1 being maximum, 0 being about to land) till impact. The Land Prediction Curve is used to control how the time affects the final weight for a smooth blend. 通过沿速度方向做射线,找到角色正在落向的可站立表面,并取得落地前的「时间」(范围 0-1,1 是最大,0 表示即将落地),从而计算落地预测权重。Land Prediction 曲线用来控制时间如何影响最终权重,以实现平滑混合。
Interp and set the In Air Lean Amount / Interp and set the Velocity Blend. 插值并设置空中倾斜量 / 插值并设置速度混合。
Effector Location. Target Location to reach. 效应器位置。要到达的目标位置。

6.9 动画曲线生成器(AnimModifiers)

Blueprints\AnimModifiers\ 里那 6 个东西不是你手动运行的 。它们挂在动画序列的「动画修饰符」上,在动画导入/编译时自动跑,作用是把计算好的曲线写进动画数据。

资产 作用
Create_Curves 批量创建曲线
Calculate_RotationAmount 计算原地转身的旋转量曲线
Create_LayeringCurves 创建分层混合用的曲线
Copy_Curves 从别的动画复制曲线过来
AnimCurveCreationData / AnimCurveCreationParams 上面两个的参数结构体和数据

这就是为什么你不能把 ALS 的动画「单独拎出来用」 ------ 曲线是这些修饰符算出来的,动画蓝图又靠曲线驱动混合。你把动画复制到别的工程,曲线就没了。


6.10 演示关卡里的告示牌

ALS_DemoLevel 里摆了 25 块文字牌(TextRenderActor)。9 块是攀爬练习墙的高度刻度(.5 M ~ 2.5 M,不用翻),其余 16 块是作者写的说明。全部原文与译文如下,你在关卡里看到哪块,对应查这里。

主标题牌
原文 译文
Advanced Locomotion System V4.0 高级运动系统 V4.0
警告区(三块牌子叠在一起)
原文 译文
WARNING 警告
AS IS 按原样提供
PER PROJECT 仅针对本项目
免责声明(开头那块长牌)

原文 This system is not gameplay ready or feature complete, nor was it intended to be. It exists merely to provide an example of what more advanced animation setups can look like. As such, much of the existing gameplay logic is meant to be replaced with more sophisticated systems on a basis. Please do not expect to be able to throw some things into this and have a full game, and understand that working with this system effectively does require prior game dev knowledge and experience.
译文 本系统并非可直接用于游戏,功能也不完整 ------ 它本来就不是为此而做的。它存在只是为了展示「更高级的动画系统可以长什么样」。因此,其中大量的玩法逻辑,本来就该由你自己用更完善的系统去替换。请不要指望往里面随随便便塞点东西就能得到一个完整的游戏,也要明白:想要有效地使用这套系统,你需要具备一定的游戏开发知识和经验。

作者的话

牌子标题:Message from designer → 来自作者的话

原文 Due to work conflicts and time restrictions, this project has been provided for free, with no guarantees of any more major updates. I know some parts are unfinished, but its the best I could do with the time I had left. Regardless, I hope this project becomes a valuable learning resource to you and helps you create some cool stuff. Thank you to everyone who has supported me and this project thus far! It's been fun :)
译文 由于工作冲突和时间限制,本项目是以免费形式提供的,不保证今后还会有重大更新。我知道有些部分尚未完成,但这已经是我在剩余时间里能做到的最好程度了。无论如何,希望本项目能成为对你有价值的学习资源,帮助你做出一些很酷的东西。感谢所有至今支持我和这个项目的人!这一路很有趣 :)

(署名 Blue Skies, Caleb 保留原文 ------ 那是作者的固定落款。)

未来可能的改进

牌子标题:Potential Improvements? → 未来可能的改进?

原文 Although I can't guarntee it, here are some things that might find their way into the system if I ever get the time.   Multiplayer Replication   Weapon Animation examples like firing, reloads, etc.   Improved IK behavior on slopes   Solution for 90/180 degree starts and (possibly) stops.   Improved Mantling mechanics   Improved transition management for overlay states
译文 虽然不保证,但如果以后有时间,下面这些内容可能会进入本系统:   多人联机同步   武器动画示例,比如开火、换弹等   改进斜坡上的 IK 表现   解决 90/180 度起步(可能还有急停)的问题   改进翻越机制   改进 Overlay 状态之间的过渡管理

翻越系统展区

牌子标题:Dynamic Mantling → 动态翻越

原文 The mantle system is fully dynamic and works by tracing against geometry. It requires no additional pre-defined areas and can work on both simple and complex objects (as long as the collision blocks the "Climbable" channel). Currently, there are some issues with non-uniform scaled objects, so make sure all mantleable objects have a uniform scale.
译文 翻越系统是完全动态的,靠对几何体做射线检测来工作。它不需要预先定义任何区域,简单和复杂的物体都能用 ------ 只要碰撞体阻挡了 Climbable 通道。目前,非等比缩放的物体还存在一些问题,所以请确保所有可翻越的物体都使用等比缩放。

💡 对你的实际影响 :如果你自己搭的场景里,翻越不生效,先检查两件事 ------ ① 那个物体在碰撞预设 里有没有阻挡 Climbable 通道;② 它的缩放是不是非等比(XYZ 不一样)。

脚步 IK 展区

牌子标题:Foot IK → 脚部 IK

原文 The current Foot IK offset implentation is fairly basic, and although it works well for general purposes, it may not function ideally in all scenarios, such as super steep inclines.
译文 目前的脚部 IK 偏移实现比较基础。虽然在一般情况下效果不错,但在某些场景下表现可能不理想,比如非常陡峭的斜坡。

AI 展区

牌子标题:AI Examples → AI 示例

原文 These basic AI recieve commands from a behavior tree and move to random locations while focused on the player. From a movement and animation standpoint, AI characters function identically to player characters. The only difference should be the Controller. As long as the correct information like Velocity, Movement Input, Looking Rotation, and current states are sent to the AnimBP via the interface, everything should work as it does for player characters.
译文 这些基础 AI 从行为树接收指令,一边随机移动,一边盯着玩家。从移动和动画的角度看,AI 角色和玩家角色的运作方式完全相同,唯一的区别在于 Controller(控制器)。只要把 Velocity(速度)、Movement Input(移动输入)、Looking Rotation(注视旋转)以及当前状态这些信息,通过接口传给 AnimBP,一切就会和玩家角色一样正常工作。

💡 这一条是理解 ALS 架构的关键:动画蓝图不认识你的角色类,它只认接口。所以 AI、玩家、甚至任何你自己写的类,只要实现接口就能共用这套动画。

高度刻度(攀爬练习墙)

.5 M / .75 M / 1 M / 1.25 M / 1.5 M / 1.75 M / 2 M / 2.25 M / 2.5 M

这些不用翻 ------ 是墙面高度标记,用来测试不同高度的翻越动作。

⚠️ 关于这些牌子能不能改成中文 :能改(技术上文字是可写的),但 ALS 用的是 Roboto 距离场字体,没有中文字形 ,直接写中文会显示成空白。要真正显示中文,需要往工程里导入一个中文字体资产(烘焙距离场,体积和耗时都不小)。本手册就是这些牌子内容的完整中文版,建议直接查手册。


7. 术语表

英文 中文 说明
Gait 步态 走 / 跑 / 冲刺
Stance 站姿 站立 / 下蹲
Rotation Mode 旋转模式 角色朝哪转:移动方向 / 镜头方向 / 瞄准
View Mode 视角 第一人称 / 第三人称
Overlay State 叠加层状态 上半身的动作层(持枪/拉弓等)
Movement State 移动状态 着地 / 空中 / 布娃娃 / 翻越中
Movement Action 移动动作 低翻越 / 高翻越 / 翻滚 / 起身
Mantle 翻越 爬墙、翻障碍
Ragdoll 布娃娃 物理软倒
Breakfall 落地缓冲 高处落地时的翻滚卸力
Turn In Place 原地转身 站着不动转视角时迈步调整
Aim Offset 瞄准偏移 上半身额外朝向瞄准方向的旋转
Blend Space 混合空间 按参数在多段动画间插值
Montage 蒙太奇 可播放一次、能分段、能被打断的动画
Anim Notify 动画通知 动画播到某个时间点触发的事件
Curve 曲线 动画上挂的数值轨道,驱动混合权重
Root Motion 根运动 由动画本身驱动角色位移
Foot IK 脚部 IK 让脚贴合地面的反向动力学
AnimBP 动画蓝图 决定角色播什么动画
BPI(Interface) 蓝图接口 模块之间通信的协议

8. 建议的学习路径

别一上来就读蓝图。 那几千个节点会把人劝退。按这个顺序来:

第 1 步 ------ 玩(半小时) 打开 Content\AdvancedLocomotionV4\Levels\ALS_DemoLevel,按第 4 节的按键表每个都试一遍。先建立"它能做什么"的直觉。

第 2 步 ------ 看数据结构(1 小时) 打开 Data\Enums\ 里的七个枚举,对照第 1 节看一遍。这一步做完,你就知道 ALS 在说什么了。

第 3 步 ------ 看懂状态流(2 小时) 打开 ALS_Base_CharacterBP,只看事件图表 里的注释框(本手册第 6 节就是它们的翻译)。不要试图看懂每个节点,只看注释框的标题,就能摸出主干。

第 4 步 ------ 改一个东西(2 小时) 挑最简单的改:改 MovementModelTable 里的走路速度,进游戏看效果。这是建立"我改得动它"信心的关键一步。

第 5 步 ------ 换模型(半天) 按 5.1 把自己的模型换上去。

第 6 步 ------ 需要什么再学什么 翻越系统、相机系统、脚步 IK ------ 这些都是独立的模块,等你真的需要改它们时再深入。


附:本手册相关的其它文件

文件 说明
E:\UnrealProject\Als_Test\Config\DefaultInput.ini 输入映射(ALS 用旧版输入系统,见文件末尾的注释)
E:\UnrealProject\Als_Test\Config\DefaultEngine.ini 碰撞通道 Climbable / Grabbable、ALS_Character / ALS_Prop 碰撞预设
E:\UnrealProject\Als_Test\Tools\als_localize\ 本次汉化用的脚本与提取数据

ALS 版权归 Caleb Longmire 所有。 本手册只是把原作者写在蓝图里的英文注释翻译成中文,方便阅读,不对系统本身做任何修改。

相关推荐
Hello_Pyhx2 小时前
挖兔硬盘精灵 WatuDisk:从首次检测到日常检查的使用指南
运维·windows·硬盘·维护
迪康Defender3 小时前
终端安全事后追溯能力解析:本地审计模块设计思路与落地实践
运维·开发语言·人工智能·安全·php·安全威胁分析·运维开发
geats人山人海3 小时前
linux 2 基本操作与vim
linux·运维·vim
xixiaoyunya4 小时前
集中保护多台电脑:搭建内网备份服务器的完整实操方案
运维·服务器·电脑
JEECG低代码平台4 小时前
不买服务器也能异地组网:开源 P2WLAN 把两地电脑“插“进同一台路由器
运维·服务器·开源·开源软件
wdfk_prog4 小时前
LWIP教程 00:从网线上的电信号到 lwIP——PHY、MAC、DMA 与 `netif` 的完整边界
运维·网络·笔记·学习·ip
cehuishi95274 小时前
测绘外业调查如何正确的开展
运维·服务器·网络
zmsup4 小时前
从运维需求到产品能力:OpsArk Agent 的运维智能平台架构设计思路
运维·系统架构·agent·智能体·运维智能平台
江屿风5 小时前
【Linux系统】【从菜鸟驿站到操作系统:一节课打通Linux重定向与缓冲区真相】流食般投喂
linux·运维·服务器·开发语言·笔记