Skip to content
Back to skills

Animation

ASecurity

Unity animation system — Animator controllers, layers, blend trees, state machine behaviors, root motion, animation events, Timeline.

  • 21 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 28, 2026
ai-agentsgoreact

Works with

  • cli

Security analysis

A100/100

Scanned May 28, 2026

npx -y skills add XeldarAlz/everything-claude-unity --skill animation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Animation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Animation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/xeldaralz-animation/badge)](https://www.skillsdirectory.com/skills/xeldaralz-animation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: animation
description: "Unity animation system — Animator controllers, layers, blend trees, state machine behaviors, root motion, animation events, Timeline."
globs: ["**/*.controller", "**/*Anim*.cs", "**/*.anim"]
---

# Animation System

## Animator Controller

### Parameters
```csharp
// Cache hash IDs — NEVER use string version in Update
private static readonly int SpeedHash = Animator.StringToHash("Speed");
private static readonly int JumpHash = Animator.StringToHash("Jump");
private static readonly int IsGroundedHash = Animator.StringToHash("IsGrounded");
private static readonly int AttackHash = Animator.StringToHash("Attack");

private void Update()
{
    _animator.SetFloat(SpeedHash, _currentSpeed);
    _animator.SetBool(IsGroundedHash, _isGrounded);
}

// Triggers: fire once, auto-reset
public void Attack() => _animator.SetTrigger(AttackHash);
```

### Transition Settings
- **Has Exit Time:** animation finishes before transitioning (good for attacks, bad for instant response)
- **Fixed Duration:** transition time in seconds vs normalized
- **Transition Duration:** blend time (0 for instant, 0.1-0.25 for smooth)
- **Interruption Source:** which transitions can interrupt this one

### Layers
- Base Layer: locomotion (walk, run, idle)
- Upper Body Layer (Avatar Mask): aiming, attacks (overrides base)
- Additive Layer: breathing, hit reactions (adds on top)

## Blend Trees

**1D:** Speed parameter → walk/run blend
**2D Simple Directional:** X/Y input → directional movement (forward, back, strafe)
**2D Freeform:** more flexible placement of motion clips

## State Machine Behaviors

```csharp
public sealed class AttackStateBehavior : StateMachineBehaviour
{
    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // Enable hitbox
        animator.GetComponent<CombatSystem>().EnableHitbox();
    }

    public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // Disable hitbox
        animator.GetComponent<CombatSystem>().DisableHitbox();
    }
}
```

## Root Motion

- Enable `Apply Root Motion` on Animator
- Override in `OnAnimatorMove()` for custom control:

```csharp
private void OnAnimatorMove()
{
    // Use animation's root motion for position
    Vector3 deltaPosition = _animator.deltaPosition;
    transform.position += deltaPosition;

    // Use animation's rotation
    transform.rotation *= _animator.deltaRotation;
}
```

## Animation Events

Call methods from specific frames in animation clips:
```csharp
// Called from animation event on frame 12
public void OnFootstep()
{
    _audioSource.PlayOneShot(_footstepClip);
}

public void OnAttackHit()
{
    // Check hitbox collisions at this exact frame
}
```

## IK (Inverse Kinematics)

```csharp
private void OnAnimatorIK(int layerIndex)
{
    if (_lookTarget != null)
    {
        _animator.SetLookAtWeight(1f, 0.3f, 0.6f, 1f);
        _animator.SetLookAtPosition(_lookTarget.position);
    }

    // Foot IK for uneven terrain
    _animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1f);
    _animator.SetIKPosition(AvatarIKGoal.LeftFoot, _leftFootTarget);
}
```

## Timeline Integration

- Animation Track: play animation clips on any Animator
- Custom Playable: create custom Timeline clips with `PlayableAsset` + `PlayableBehaviour`
- Signal Track: fire events at specific times (similar to animation events but on Timeline)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.