Skip to main content

Overview

BetterModel provides a powerful animation system that supports looping, single-play animations, speed control, blending, and per-player animation states.

Basic Animation Playback

Playing an Animation

Play an animation by name:

Play Once

Play an animation a single time:

Animation with Callback

Execute code when an animation finishes:

Animation Modifiers

Creating Custom Modifiers

AnimationModifier controls how animations play:

Animation Types

Example usage:

Speed Control

Adjust animation speed:

Lerp (Blend) Transitions

Smooth transitions between animations:
Use longer lerp times for smoother transitions between animations. A value of 10-20 ticks works well for most cases.

Conditional Animations

Play animations based on conditions:

Stopping Animations

Stop by Name

Stop a specific animation:

Stop for Specific Player

Stop a per-player animation:

Animation Replacement

Replace Running Animation

Seamlessly transition from one animation to another:

Using Blueprint Animations

Replace with a blueprint animation object:

Per-Player Animations

What are Per-Player Animations?

Per-player animations show different animations to different players for the same model. This is essential for:
  • Custom player emotes visible only to nearby players
  • Player-specific effects
  • Individualized NPC interactions

Playing Per-Player Animations

Use the player() modifier to target specific players:

Per-Player Events

Listen for per-player animation events:
Per-player animations increase packet overhead. Use them sparingly and only when necessary.

Built-in Animations

Spawn Animation

Automatic animations on tracker creation:

Damage Animation

Automatic damage animation on entity hit (if enabled in TrackerModifier):

Animation Layering

Override vs. Blend

Bone-Specific Animations

Play animations on specific bones:

Advanced Patterns

Animation State Machine

Implement a simple state machine:

Combo Attacks

Chain animations together:

Synchronized Group Animations

Animate multiple trackers together:

Animation Debugging

Checking Running Animations

Listing Available Animations

Performance Considerations

  • Use LOOP for continuous animations (idle, walk)
  • Use PLAY_ONCE for actions (attack, jump)
  • Avoid starting/stopping animations every tick
  • Cache AnimationModifier instances when possible
  • Limit per-player animations to visible range

Next Steps

Custom Hitboxes

Add interactive hitboxes to animated parts

Per-Player Animation

Deep dive into per-player animation system