If you have ever tried building a high-velocity action platformer or a parkour-heavy movement system in Unity, you know that the hardest part isn't the character controller script—it's getting clean, responsive movement clip transitions that don't look floaty or disjointed. The Runner Action Animation Pack directly targets this headache by offering a focused suite of high-energy motion capture and hand-keyed animations tailored specifically for fast traversal mechanics.
In my experience building third-person character controllers, many generic animation bundles fall short because their clip keyframes lack consistent root velocity or aggressive momentum arcs. This pack handles character movement with a crisp, punchy tempo. Built around the Mecanim Humanoid Rig architecture, these clips easily retarget onto standard Unity avatars, custom 3D models, or modular character generators like Synty or Mixamo rigs with minimal bone offset tweaks.
Architecturally, this asset is structured to support both dynamic gameplay styles and tight physical constraints. Here are the core technical specifications worth noting:
Has Exit Time crossfades (typically between 0.1s and 0.15s transition durations).While the title points toward traditional endless runners, the motion profiles in this collection extend well beyond hyper-casual titles. Here is where I see this asset fitting best in modern production pipelines:
Integrating these clips into an existing custom controller takes less than 15 minutes if your avatar setup is clean. Here is how I set up the initial movement bridge using Unity's modern Animator parameters.
Select the imported animation models in your Unity project browser. Ensure the Animation Type is set to Humanoid under the Rig tab. Verify that bone mappings for spine, hips, and lower limbs match your base player model seamlessly.
Attach the following production-ready logic to your player GameObject to hook up speed parameters, slide triggers, and vault detection via sphere casting:
using UnityEngine;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(CharacterController))]
public class RunnerAnimationBridge : MonoBehaviour
{
private Animator animator;
private CharacterController controller;
[SerializeField] private float slideSpeedThreshold = 4.0f;
[SerializeField] private float vaultCheckDistance = 1.2f;
[SerializeField] private LayerMask obstacleLayerMask;
private static readonly int SpeedHash = Animator.StringToHash("Speed");
private static readonly int IsGroundedHash = Animator.StringToHash("IsGrounded");
private static readonly int SlideTriggerHash = Animator.StringToHash("TriggerSlide");
private static readonly int VaultTriggerHash = Animator.StringToHash("TriggerVault");
private void Awake()
{
animator = GetComponent<Animator>();
controller = GetComponent<CharacterController>();
}
private void Update()
{
float currentSpeed = new Vector3(controller.velocity.x, 0, controller.velocity.z).magnitude;
animator.SetFloat(SpeedHash, currentSpeed, 0.1f, Time.deltaTime);
animator.SetBool(IsGroundedHash, controller.isGrounded);
if (Input.GetKeyDown(KeyCode.C) && currentSpeed >= slideSpeedThreshold)
{
animator.SetTrigger(SlideTriggerHash);
}
if (Input.GetButtonDown("Jump") && CheckVaultObstacle())
{
animator.SetTrigger(VaultTriggerHash);
}
}
private bool CheckVaultObstacle()
{
Vector3 origin = transform.position + Vector3.up * 0.5f;
return Physics.Raycast(origin, transform.forward, vaultCheckDistance, obstacleLayerMask);
}
}
OnAnimatorIK() if your obstacle geometry varies significantly in height.| Category | 3D / Animations |
|---|---|
| Latest Version | v1.7.2 (2 tracked releases) |
| File Size | 375.70 MB |
| Added to Platform | February 10, 2026 |
| Views | 11 views |
| Downloads | 3 downloads |
| Favourites | 0 favourites |
| Issue with Package? | Report Broken Link → |