I am implementing stealth finishers, and for enemy character PlayMontage not working… I have created Slot “StealthTakeDown” for both characters, for my player character and enemy, in AnimBP i have created slot too. But for enemy PlayMontage not working, only moving character along root motion without playing animation, also still doing such movements as walking. I have selected Mesh and connected to SkeletalMesh argument in PlayMontage for enemy. Skeleton meshes and animation have the same skeleton.
For player character everthing working. What is causing such error that PlayMontage not fully working? Only root motion moving character along path of root bone motion.
I am using ALS Community C++ plugin for game.
You can reproduce issue when you try some mixamo animation I think.
I believe I can help you with that!
Working with ALS (Advanced Locomotion System) and Anim Montages can be a bit confusing at times due to the way the system is structured to handle animation layers/slots.
Before I proceed to a more in depth search, may I ask you to check a few things for me to see if anything looks off?
Slot placement in Anim Graph
Where is the StealthTakeDown slot node placed in your enemy AnimBP AnimGraph? If the slot is not plugged in before the final pose or postprocessing layer node, ALS internal state machine might be overriding the montage pose with its default locomotion
AnimBP Instance
Is the enemy Skeletal Mesh using the correct AnimBP class assigned in the Blueprint details panel at run-time?
Blend Weights/Overlay States
Since ALS heavily relies on Overlay States and Curves, Are you triggering any specific ALS overlay state or stopping its locomotion logic when the montage starts?
Montage Asset Settings
Inside the Anim Montage itself, did you double check that the track group is set to DefaultGroup (or your custom group) and that StealthTakeDown is selected on that exact track?
If you could share a screenshot of your enemy AnimGraph and the layout of the Anim Montage that would be great!
Cool that you figured out the layer blending part!
As for why the locomotion continues to update even after calling Stop Movement.
This has to do with how ALS (and regular UE Character Movement) works.
Typically Stop Movement will zero out the velocity/acceleration on the Character Movement Component but ALS internally might still be tracking that the character is in a “Moving” state or that it should update its rotation/gait states
Here are a few things that I typically do to stop or override ALS’s locomotion during takedowns/finishers:
Disable Movement/Set Movement Mode to None
Instead of Stop Movement Immediately, perhaps consider disabling movement (or setting movement mode to none) on the character movement component while the finisher is playing and re-enabling walking once the montage completes (using the on completed/interrupted pins of your play montage node)
ALS Custom State/Overlay State
ALS makes heavy use of custom states for its own internal logic. You might want to update the ALS Gait or Movement State explicitly (or set an overlay state such as “Action”) so that ALS knows not to blend in gait or locomotion poses.
Disable Input/Ignore Movement Input
If the enemy AI’s controller is still issuing move commands perhaps tell it to ignore movement input (Set Ignore Move Input) on the controller right before the montage plays to prevent the pawn from continually attempting to move
The main difference seems to be in how MetaHumans and regular ALSv4 characters are organized in AnimBP and hierarchy:
Modular Character Structure
MetaHumans use a modular character setup where typically the Body mesh controls the animations and the Root/Main Mesh is either leading or utilizes Linked Anim Instances/Master Pose logic.
By playing a montage on a MetaHuman main AnimInstance or Body you are likely to be overriding ALS layered blending system by applying animations directly on the underlying base skeleton pose, not getting the extra complexity of layered nodes from ALS.
ALSv4 Layered AnimBP
Native ALSv4 characters use a heavy multi-layer pose blending pipeline (pelvis, legs, torso, head, etc) so if a slot is not hooked up to their respective layer curves/blend nodes inside the ALS AnimGraph, ALS will continuously overwrite their pose calculations on the bones leading to only the Root Motion track being applied while the actual skeletal animation is masked out
So in short: MetaHuman default setup doesn’t apply ALS full layer override pipeline to its sub-meshes in the same way as ALSv4 requires the explicit blend curves and slot configuration to let the pose pass through the AnimGraph
Let me know if you run into anything else while setting up your finishers