Animation Examples
The Beast demo scenes contain application-side scripts that show how the animation API can be used.
DemoChannelAnimationAndPose
DemoChannelAnimationAndPose demonstrates direct channel access and pose APIs. It is useful for testing eyes, ears, body, head, tail, mouth, neck, and leg poses independently.
Use it as a guide when your application wants to own expression logic or apply direct poses from gameplay code.
DemoNoCodeBeastChannelsAnimation
DemoNoCodeBeastChannelsAnimation demonstrates the no-code bridge for channel poses. A standard Unity Animator plays Unity Animation Clips that keyframe BeastAnimationBridge pose fields.
Use it as a guide when your application wants to drive Beast animation from Unity Animation Clips, Timeline, Unity Events, or Visual Scripting.
The generated BeastAnimationBridge API reference lists every pose property and bridge method available to these workflows.
DemoNoCodeBeastClipChannelAnimation
DemoNoCodeBeastClipChannelAnimation demonstrates how the no-code bridge can also trigger Beast clips such as Idle, Walk, and Rush from Unity animation workflows.
DemoAnimationSimple
DemoAnimationSimple demonstrates clip-level control for Walk, Rush, Search Run, Idle, Wait, Stunned, Takeoff, and Landing. It also keeps a small optional idle-only channel example for ears and eyes, so it is a hybrid clip-plus-channel integration sample.
DemoWildBeasts
DemoWildBeasts demonstrates many animated Beasts roaming freely on a terrain. It is useful for performance checks, for understanding how application-side movement can drive clip selection, and for combining an active clip with temporary channel animation.
Contact Conversation: Clip Plus Channel Overrides
When two roaming Beasts meet, the demo makes one shared random decision for the pair. A conversation can be selected for at most one encounter out of two; otherwise, the Beasts immediately move toward separate escape targets. The probability is adjustable and defaults to 35 percent.
During a conversation, the demo leaves the Idle clip active and temporarily takes control of only the Mouth and Head channels. The two participants alternate speaking turns, with small per-encounter variations in timing, mouth movement, and head movement. An occasional blink demonstrates direct pose timing.
The essential channel code is:
private void UpdateConversation(float deltaTime, bool isSpeaking)
{
animator.AnimateMouthOpenClose(
deltaTime,
weight: 1f,
openDegrees: isSpeaking ? 22f : 0f,
cyclesPerSecond: 2.2f,
phaseOffset: 0f);
if (isSpeaking)
{
animator.AnimateHeadMotion(
deltaTime,
weight: 1f,
bobHeight: 0f,
pitchDegrees: 7f,
yawDegrees: 0f,
cyclesPerSecond: 0.8f,
phaseOffset: 0f,
bobFrequency: 1f,
centeredBob: true,
pitchPhaseOffset: 0f,
yawPhaseOffset: 0.25f);
}
else
{
animator.StopHeadAnimation();
}
}
Call the animation methods every frame while the Beast is speaking. BeastAnimator advances each channel from the supplied deltaTime. Randomize parameters once when an encounter starts, not every frame, to preserve smooth motion.
The blink uses a direct pose because the application owns its timing:
float closedAmount = Mathf.Sin(blinkProgress * Mathf.PI);
animator.SetEyeOpeningPose(1f - closedAmount);
Release the overrides when the conversation ends so the current clip regains control:
animator.ResetMouthOpeningPose();
animator.StopHeadAnimation();
animator.ResetEyeOpeningPose();
See BeastAnimator for the complete channel API and DemoWildBeasts.cs for the alternating turns, randomization, and blink scheduler.
Demo Code Is Reusable
Demo scripts are not part of the internal Beast runtime implementation. They are examples of Unity application code and can be reused or adapted freely.