unity-animation について
unity-animationは、Unity 6.3 LTSのAnimatorとAnimator Controllerでキャラクターアニメーションを制御するスキルです。スクリプト駆動のワークフローで、状態遷移、ブレンド、レイヤー、人型IKを扱います。
主な機能
- 01Animatorの状態と遷移
- 02スクリプトによるアニメーションパラメーター制御
- 03移動用のBlend Tree
- 04アニメーションレイヤーとAvatar Mask
- 05人型キャラクターの逆運動学
活用シーン
- 01キャラクターのアニメーションステートマシン構築
- 02待機・歩行・走行モーションのブレンド
- 03移動に上半身アクションを重ねる
- 04人型キャラクターの手足IK追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill unity-animationインストール後、Claude Code で/unity-animationを入力して読み込まれたか確認します。
同梱ファイルreferences/blend-trees-and-ik.md
詳細
Unity Animation (Animator / Mecanim)
Unity 6.3 LTS の Animator と Animator Controller を使って、アニメーションの状態を制御します。パラメーター、遷移、ブレンドツリー、レイヤー、ヒューマノイド IK に対応しています。対象は Unity 6.3 LTS (6000.3) です。
使用する場面
- アニメーションクリップをステートマシンに接続する場合、パラメーターを使ってスクリプトから制御する場合、移動アニメーション(アイドル→歩行→走行)をブレンドする場合、移動に上半身の動作を重ねる場合、またはヒューマノイドリグに足や手の IK を追加する場合に使用します。
- プロジェクトに
*.controller(Animator Controller)や*.animアセットがある場合、またはリグ付きモデルに Avatar がある場合に使用します。
使用しない場面: UI のフェードや位置の補間など、スケルトンを使わない単純な値のトゥイーンには、トゥイーンやコルーチンの使用が適しています。unity-csharp-scripting を参照してください。Timeline のカットシーンは別のツールを使用します。2D スプライトのフレームアニメーションも Animator を使いますが、スプライトのキーフレームを使用します。
基本的なワークフロー
- モデルに
Animatorを追加して Animator Controller を割り当てます。ヒューマノイドモデルの場合は、リグを Humanoid に設定して Avatar を用意します(リターゲティングと IK が有効になります)。 - コントローラーにパラメーターを定義します。
Float(Speed)、Bool(IsGrounded)、Int、Trigger(Jump)などを設定し、それらのパラメーターを読み取る 条件 を持つ遷移をステートに設定します。 - ステートを直接操作せず、スクリプトからパラメーターを設定します。
SetFloat、SetBool、SetInteger、SetTriggerを使用します。ステートマシンが遷移を処理します。 - 連続した動きのブレンドには、複数の個別ステートと遷移を使う代わりに、Blend Tree を使用します(Speed などの 1 つの
Floatでアイドル↔歩行↔走行を制御します)。 - 加算または上書きする動作をレイヤー化します(例:Avatar Mask を使った上半身の「照準」レイヤー)。その
layerWeightを制御します。 - Play モード中に Animator ウィンドウで確認します。現在のステートがハイライトされ、パラメーターの値が更新されるため、どの遷移が実行されたか(またはされなかったか)を正確に確認できます。
パターン
1. スクリプトから移動アニメーションと一度限りの動作を制御する
using UnityEngine;
[RequireComponent(typeof(Animator))]
public class CharacterAnim : MonoBehaviour
{
private Animator _anim;
// Cache parameter hashes — faster and typo-proof vs string lookups every frame.
private static readonly int Speed = Animator.StringToHash("Speed");
private static readonly int IsGrounded= Animator.StringToHash("IsGrounded");
private static readonly int Jump = Animator.StringToHash("Jump");
private void Awake() => _anim = GetComponent<Animator>();
public void Tick(float planarSpeed, bool grounded)
{
_anim.SetFloat(Speed, planarSpeed); // drives a 1D blend tree (idle/walk/run)
_anim.SetBool(IsGrounded, grounded); // gates a falling/landing transition
}
public void DoJump() => _anim.SetTrigger(Jump); // fire-and-forget; auto-resets after use
}
2. ノイズの多い入力をブレンドパラメーターに滑らかに反映する
// dampTime smooths Speed so the blend tree doesn't snap; great for analog sticks.
_anim.SetFloat(Speed, targetSpeed, 0.1f /* dampTime */, Time.deltaTime);
3. ステートを直接再生/クロスフェードする(パラメーター条件を回避)
// Useful for hit reactions where you want an immediate, explicit transition.
_anim.CrossFade("Hit", 0.1f); // blend over 0.1s normalized
// Or jump instantly: _anim.Play("Hit");
4. 現在のステートが終了するまで待つ
private System.Collections.IEnumerator AfterAttack()
{
var info = _anim.GetCurrentAnimatorStateInfo(0); // layer 0
yield return new WaitForSeconds(info.length); // approximate clip length
// ...follow-up logic
}
注意点
SetTriggerが認識されない、または「残り続ける」 — トリガーは次に条件を満たした遷移で消費され、自動的にリセットされます。トリガーを消費する遷移がない場合、予期しないタイミングで実行されることがあります。ResetTriggerでクリアするか、条件が継続的な状態を表す場合はBoolを使用してください。- 文字列パラメーターの誤記は通知されない — 名前を間違えても何も起こらないだけです。
Animator.StringToHashを使い、整数ハッシュをキャッシュしてください。 - 遷移が遅く感じる —
Has Exit Timeが有効だと、クリップが正規化時間に達するまで遷移が待機します。ジャンプや被弾など、条件に応じたすばやい遷移を行うには無効にします。 - キャラクターが滑る、または動かない —
Apply Root Motionが有効なのにコードでも Transform を動かしている、またはその逆の状態です。ルートモーションかスクリプトによる移動のどちらかを選び、併用しないでください。 - 上半身レイヤーが全身を上書きする — レイヤーの Blend モード(Override または Additive)を設定し、Avatar Mask を割り当てて、
layerWeight(0~1)を調整してください。 - IK が動作しない — IK は
OnAnimatorIK内でのみ適用されます。レイヤーで「IK Pass」を有効にし、Humanoid Avatar を用意する必要があります。
参考資料
- ブレンドツリー(1D と 2D Freeform/Directional)、アニメーションレイヤーと Avatar Mask、ヒューマノイド IK(
OnAnimatorIK、SetIKPositionWeight、SetIKPosition、Look At)については、references/blend-trees-and-ik.mdを参照してください。 - 主なドキュメント:Unity Manual の「Animation」セクション、および
ScriptReference/Animator。
関連スキル
unity-csharp-scripting— 上記で使用した MonoBehaviour とコルーチンのタイミング制御。unity-physics— アニメーションで表現する物体の移動。game-ai— どのアニメーションステートをいつ再生するかの判断。
コメント
Markdown 対応