unity-animator について
Unity の Mecanim を扱う開発者向けスキルモジュールです。Animator Controller、ステート、遷移、パラメーターを作成・設定し、GameObject のアニメーションを確認または操作できます。
主な機能
- 01Animator Controller の作成
- 02ステート、遷移、パラメーターの管理
- 03GameObject へのコントローラー割り当て
- 04Animator 情報とステートの確認
- 05実行時パラメーターの設定とステート再生
活用シーン
- 01キャラクターのアニメーションステートマシン構築
- 02アニメーションレイヤーと遷移の設定
- 03実行時のパラメーターやステートの操作
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-animatorインストール後、Claude Code で/unity-animatorを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターを使ってスキルを呼び出そうとしている場合は、いったん停止してください。まずこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からすでにパラメーターの定義を取得している場合は、そのまま dryRun に進めます。
トリガー
- Animator のセットアップまたは接続
- アニメーションステートマシンの調整
- 実行時のアニメーションパラメーターの制御
Unity Animator スキル
Unity の Mecanim システムを制御します。Animator Controller の作成、レイヤーへのステート/トランジション/パラメーターの追加、GameObject へのコントローラーの割り当て、実行時のパラメーター設定、ステートの再生を行います。
動作モード
- Approval:照会系スキル(
animator_get_parameters/animator_get_info/animator_list_states、ソースではSkillMode.SemiAutoとマーク)は直接実行します。それ以外の変更系スキル(create_controller / add_parameter / set_parameter / play / assign_controller / add_state / add_transition、SkillMode.FullAutoとマーク)はユーザーの許可が必要です。許可後、サーバーが一度の手順で実行し、結果を返します。 - Auto / Bypass:すべてのスキルを直接実行します。Auto では AI が自己評価し、Bypass ではすべて許可します。
- このモジュールには Delete / PlayMode / Reload / 高危険度のスキルは含まれず、Bypass 限定のブロック項目もありません。
animator_set_parameter/animator_playは、シーン内で Animator がアタッチされている GameObject に適用されます。現在 Play mode でない場合、ステートマシンは Editor のプレビューモードでのみ進行し、実行時と完全に同じ動作にはなりません。
行わないでください(よくある誤った推測):
animator_create_clip/animator_add_clipは存在しません → AnimationClip は Unity Editor またはアセットのインポートで作成しますanimator_set_speedは存在しません → Animator コンポーネントに対してcomponent_set_propertyを使い、propertyName="speed" を指定します
ルーティング:
- Timeline アニメーションには
timelineモジュールを使用します - Animator のコンポーネントプロパティには
componentモジュールを使用します - アニメーションのインポート設定には
importerモジュールを使用します
スキル一覧
| スキル | 説明 |
|---|---|
animator_create_controller | 新しい Animator Controller を作成 |
animator_add_parameter | コントローラーにパラメーターを追加 |
animator_get_parameters | すべてのパラメーターを一覧表示 |
animator_set_parameter | 実行時にパラメーター値を設定 |
animator_play | アニメーションステートを再生 |
animator_get_info | Animator コンポーネント情報を取得 |
animator_assign_controller | GameObject にコントローラーを割り当て |
animator_list_states | コントローラー内のステートを一覧表示 |
animator_add_state | コントローラーレイヤーにステートを追加 |
animator_add_transition | 2 つのステート間にトランジションを追加 |
パラメーターの型
| 型 | 説明 | 使用例 |
|---|---|---|
float | 小数値 | 速度、ブレンドウェイト |
int | 整数値 | ステートインデックス |
bool | True/false | IsGrounded、IsRunning |
trigger | 一度限りのシグナル | Jump、Attack |
スキル
animator_create_controller
新しい Animator Controller を作成します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
name | string | はい | - | コントローラー名 |
folder | string | いいえ | "Assets/Animations" | 保存先フォルダー |
戻り値:{success, name, path}
animator_add_parameter
コントローラーにパラメーターを追加します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
controllerPath | string | はい | - | コントローラーのアセットパス |
paramName | string | はい | - | パラメーター名 |
paramType | string | いいえ | float | float/int/bool/trigger |
defaultFloat | float | いいえ | 0 | 初期 float 値 |
defaultInt | int | いいえ | 0 | 初期 int 値 |
defaultBool | bool | いいえ | false | 初期 bool 値 |
animator_get_parameters
コントローラーからすべてのパラメーターを取得します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
controllerPath | string | はい | コントローラーのアセットパス |
戻り値:{controller, parameters: [{name, type, defaultFloat, defaultInt, defaultBool}]}
animator_set_parameter
実行時にパラメーター値を設定します(name/instanceId/pathに対応)。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | いいえ* | GameObject 名 |
instanceId | int | いいえ* | GameObject のインスタンス ID |
path | string | いいえ* | GameObject の階層パス |
paramName | string | はい | パラメーター名 |
paramType | string | いいえ | float/int/bool/trigger(デフォルト:float) |
floatValue | float | いいえ* | 浮動小数点値 |
intValue | int | いいえ* | 整数値 |
boolValue | bool | いいえ* | ブール値 |
*識別子を少なくとも1つ指定する必要があります。paramTypeに応じた値を指定してください(triggerには値は不要です)。
animator_play
指定したアニメーションステートを再生します(name/instanceId/pathに対応)。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
name | string | いいえ* | - | GameObject 名 |
instanceId | int | いいえ* | 0 | GameObject のインスタンス ID |
path | string | いいえ* | null | GameObject の階層パス |
stateName | string | はい | - | アニメーションステート名 |
layer | int | いいえ | 0 | Animator レイヤー |
normalizedTime | float | いいえ | 0 | 開始時間(0~1) |
*識別子を少なくとも1つ指定する必要があります。
animator_get_info
Animator コンポーネントの情報を取得します(name/instanceId/pathに対応)。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
name | string | いいえ | null | GameObject 名 |
instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
path | string | いいえ | null | GameObject の階層パス |
戻り値:{gameObject, instanceId, hasController, controllerPath, speed, applyRootMotion, updateMode, cullingMode, layerCount, parameterCount}
animator_assign_controller
GameObject にコントローラーを割り当てます(name/instanceId/pathに対応)。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | いいえ* | GameObject 名 |
instanceId | int | いいえ* | GameObject のインスタンス ID |
path | string | いいえ* | GameObject の階層パス |
controllerPath | string | はい | コントローラーアセットのパス |
*識別子を少なくとも1つ指定する必要があります。
animator_list_states
コントローラーレイヤー内のすべてのステートを一覧表示します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
controllerPath | string | はい | - | コントローラーアセットのパス |
layer | int | いいえ | 0 | レイヤーインデックス |
戻り値:{controller, layer, layerName, stateCount, states: [{name, tag, speed, hasMotion}]}
animator_add_state
Animator Controller のレイヤーにステートを追加します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
controllerPath | string | はい | - | コントローラーアセットのパス |
stateName | string | はい | - | 新しいステートの名前 |
clipPath | string | いいえ | null | 割り当てるアニメーションクリップアセットのパス。AnimationClipではないパスを指定すると、ステートの追加前に呼び出しが拒否されます |
layer | int | いいえ | 0 | レイヤーインデックス |
戻り値:{success, controller, stateName, layer}
animator_add_transition
Animator Controller 内の2つのステート間にトランジションを追加します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
controllerPath | string | はい | - | コントローラーアセットのパス |
fromState | string | はい | - | 遷移元のステート名 |
toState | string | はい | - | 遷移先のステート名 |
layer | int | いいえ | 0 | レイヤーインデックス |
hasExitTime | bool | いいえ | true | トランジションが終了時間まで待機するかどうか |
duration | float | いいえ | 0.25 | トランジションの時間(秒) |
戻り値:{success, from, to, layer, hasExitTime, duration}
例:アニメーション設定の全手順
import unity_skills
# 1. Create controller
unity_skills.call_skill("animator_create_controller",
name="PlayerController",
folder="Assets/Animations"
)
# 2. Add parameters
unity_skills.call_skill("animator_add_parameter",
controllerPath="Assets/Animations/PlayerController.controller",
paramName="Speed", paramType="float", defaultFloat=0
)
unity_skills.call_skill("animator_add_parameter",
controllerPath="Assets/Animations/PlayerController.controller",
paramName="IsGrounded", paramType="bool", defaultBool=True
)
unity_skills.call_skill("animator_add_parameter",
controllerPath="Assets/Animations/PlayerController.controller",
paramName="Jump", paramType="trigger"
)
# 3. Assign to character
unity_skills.call_skill("animator_assign_controller",
name="Player",
controllerPath="Assets/Animations/PlayerController.controller"
)
# 4. Control at runtime
unity_skills.call_skill("animator_set_parameter",
name="Player", paramName="Speed", paramType="float", floatValue=5.0
)
# Trigger jump
unity_skills.call_skill("animator_set_parameter",
name="Player", paramName="Jump", paramType="trigger"
)
# Play specific state
unity_skills.call_skill("animator_play", name="Player", stateName="Idle")
ベストプラクティス
- パラメーターを追加する前にコントローラーを作成します
- 意味のあるパラメーター名を使用します
- トリガーは発火後に自動的にリセットされます
- ステートを再生する前にパラメーターを設定します
- 独立したアニメーション(体+顔)にはレイヤーを使用します
- ステートを再生する前に、コントローラーにステートが存在している必要があります
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。