unity-cinemachine について
Unity で Cinemachine カメラを作成、調査、調整するスキルモジュールです。リフレクションアダプターにより Cinemachine 2.x と 3.x に対応します。
主な機能
- 01バーチャルカメラとミキシングカメラの作成
- 02追従・注視ターゲットとレンズ値の設定
- 03Body、Aim、Noise、拡張機能の設定
- 04ターゲットグループ、スプライン、カメラ状態の管理
- 05バーチャルカメラと Brain 情報の調査
活用シーン
- 01キャラクター追従・注視カメラの設定
- 02FOV、ノイズ、投影モードの調整
- 03アニメーション状態に応じた子カメラの切り替え
- 04ターゲットグループによる複数対象のフレーミング
MCP 対応
MCP クライアント向けに、Cinemachine カメラの調査、作成、設定スキルを提供します。Approval モードでは、作成と設定の操作にユーザーの承認が必要です。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-cinemachineインストール後、Claude Code で/unity-cinemachineを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明からパラメーターを推測してスキルを呼び出そうとしている場合は、いったん停止し、まずこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からパラメーター定義をすでに取得済みの場合は、そのまま dryRun に進めます。
トリガー
- Cinemachine カメラの作成や調整
- フォロー/注視/ノイズの設定
- シネマティックなカメラの動きの構築
- Cinemachine カメラの作成や調整、フォロー/注視/ノイズの設定、カメラワークの構築
Cinemachine スキル
Cinemachine のバーチャルカメラとブレイン設定を制御します。ランタイムリフレクションアダプター(CinemachineAdapter / CinemachineSkills)を通じて、Cinemachine 2.x および 3.x に対応します。
動作モード
- Approval:クエリ系スキル(
cinemachine_inspect_vcam/cinemachine_list_components/cinemachine_get_brain_info、ソースでSkillMode.SemiAutoとマーク)を直接実行します。それ以外の設定/作成系スキル(cinemachine_create_vcam/cinemachine_set_targets/cinemachine_set_lens/cinemachine_configure_body/cinemachine_configure_aimなど。SkillMode.FullAutoとマーク)はユーザーの許可が必要です。許可後、サーバーが一度の処理で実行し、結果を返します。 - Auto / Bypass:禁止リストによってブロックされていないスキルを直接実行します。
- このモジュールには削除系スキルが含まれます:
cinemachine_set_component(パイプラインコンポーネントの置換/削除)、cinemachine_target_group_remove_member、cinemachine_remove_extensionはSkillOperation.Deleteとマークされ、IsForbiddenInSemiによって静的にブロックされます。呼び出せるのは Bypass モード、または Allowlist に追加した場合のみです。 - パッケージ依存関係:
com.unity.cinemachineパッケージ(CM 2.x または 3.x)をインストールする必要があります。未インストールの場合、すべてのスキルは{ error = "Cinemachine is not installed. Install Cinemachine 2.x or 3.x via Package Manager." }というスタブを返します。呼び出し側は、まずpackage_*系スキルを使ってインストール状況を確認してください。 - リフレクションの脆弱性:CM2 と CM3 の間では API 名が大きく変わっています(
CinemachineVirtualCamera→CinemachineCamera、CinemachineComponentBaseの名称変更など)。このモジュールはCinemachineAdapterを使ったリフレクションブリッジで対応していますが、CM の初期プレビュー版(<3.0.0-pre.5)では API の変更により失敗を返すことがあります。まずcinemachine_inspect_vcamを使って現在利用可能なフィールドを調べてから、propertyNameを決めてください。
禁止事項(よくある誤認):
cinemachine_createは存在しません → バーチャルカメラにはcinemachine_create_vcamを使ってくださいcinemachine_set_target/cinemachine_set_follow/cinemachine_set_lookatは存在しません →cinemachine_set_targetsを使ってください(1 回の呼び出しで Follow と LookAt の両方を設定します)cinemachine_add_brainは存在しません → 最初の VCam 作成時に、CinemachineBrain が Main Camera に自動追加されます- Cinemachine 2.x では
CinemachineVirtualCamera、Cinemachine 3.x ではCinemachineCameraが使われます。スキルが自動的に対応します
互換性に関する補足:
- CM3 の優先度にアクセスする場合、互換コードでは共通の最低限の API として
Priority.Valueを使ってください。 3.0.0-pre.5より前の初期 CM3 プレビュー版では、カメラのコア API が大幅に変更されており、現在のサポート対象外です。
振り分け:
- 基本的なゲームカメラの操作 →
cameraモジュールを使用 - Scene View カメラ →
cameraモジュールのcamera_set_transform/camera_look_atを使用 - カメラのアニメーションシーケンス → Cinemachine トラックを使い、
timelineモジュールを使用
スキル
cinemachine_create_vcam
新しいバーチャルカメラを作成します。 パラメーター:
name(string):VCam GameObject の名前。folder(string):親フォルダーのパス(デフォルト:"Assets/Settings")。
cinemachine_inspect_vcam
VCam を詳細に調査し、フィールドとツールチップを返します。 パラメーター:
vcamName(string、任意):VCam GameObject の名前。instanceId(int、任意):VCam のインスタンス ID。path(string、任意):VCam の階層パス。
cinemachine_set_vcam_property
VCam またはそのパイプラインコンポーネントの任意のプロパティを設定します。 パラメーター:
vcamName(string):VCam の名前。instanceId(int, optional):VCam のインスタンス ID。path(string, optional):VCam の階層パス。componentType(string):「Main」(VCam 自体)、「Lens」、またはコンポーネント名(例:「OrbitalFollow」)。propertyName(string):フィールドまたはプロパティ名。value(object):新しい値。fov(float, optional):レンズの FOV のショートカット。propertyNameを指定せずに設定すると、cinemachine_set_lensに処理が振り分けられます。nearClip(float, optional):レンズのニアクリップのショートカット。farClip(float, optional):レンズのファークリップのショートカット。orthoSize(float, optional):レンズの正投影サイズのショートカット。
cinemachine_set_targets
Follow と LookAt のターゲットを設定します。 パラメーター:
vcamName(string):VCam の名前。instanceId(int, optional):VCam のインスタンス ID(精度を優先する場合に使用)。path(string, optional):VCam の階層パス。followName(string, optional):追従する GameObject の名前。lookAtName(string, optional):注視する GameObject の名前。
cinemachine_set_component
VCam のパイプラインコンポーネント(Body/Aim/Noise)を切り替えます。 パラメーター:
vcamName(string):VCam の名前。instanceId(int, optional):VCam のインスタンス ID。path(string, optional):VCam の階層パス。stage(string):「Body」、「Aim」、または「Noise」。componentType(string):型名(例:「OrbitalFollow」、「Composer」)または削除する場合は「None」。
cinemachine_add_component
非推奨 — パイプライン(Body/Aim/Noise ステージ)を適切に制御するには、代わりに
cinemachine_set_componentを使用してください。 Cinemachine コンポーネントを追加します(レガシー版。CM2 と CM3 に対応)。 パラメーター:
vcamName(string):VCam の名前。instanceId(int, optional):VCam のインスタンス ID。path(string, optional):VCam の階層パス。componentType(string):型名(例:「OrbitalFollow」)。
cinemachine_set_lens
レンズ設定(FOV、Near、Far、OrthoSize)と投影の ModeOverride をすばやく設定します。 パラメーター:
vcamName(string):VCam の名前。instanceId(int, optional):VCam のインスタンス ID。path(string, optional):VCam の階層パス。fov(float, optional):視野角。nearClip(float, optional):ニアクリッププレーン。farClip(float, optional):ファークリッププレーン。orthoSize(float, optional):正投影サイズ。mode(string, optional):レンズのModeOverrideを設定します。つまり、この VCam がライブ状態になったときに Unity Camera に適用する投影モードです。大文字と小文字は区別されません。有効な値はNone(Camera 自体の投影設定を変更しない)、Orthographic、Perspective、Physicalです。省略した場合、既存のModeOverrideは変更されません。
fov / nearClip / farClip / orthoSize / mode のうち、少なくとも 1 つを指定する必要があります。何も指定しない場合は No values provided to update. が返されます。無効な mode を指定すると、書き込みが行われる前に SEMANTIC_INVALID と validValues が返され、呼び出し全体が拒否されます。そのため、ほかのパラメーターも適用されません。
cinemachine_list_components
使用可能な Cinemachine コンポーネント名をすべて一覧表示します。 パラメーター:
- なし。
cinemachine_impulse_generate
場所を指定するか、Source を介して Impulse を発生させます。 パラメーター:
sourceParams(string, optional):パラメーターを指定する JSON 文字列。例:{"velocity": {"x": 0, "y": -1, "z": 0}}。
cinemachine_get_brain_info
アクティブな Camera とブレンドに関する情報を取得します。 パラメーター:
- なし。
cinemachine_create_target_group
CinemachineTargetGroup を作成します。 パラメーター:
name(string):新しい TargetGroup GameObject の名前。
cinemachine_target_group_add_member
TargetGroup のメンバーを追加または更新します。 パラメーター:
groupName(string): TargetGroup の名前。groupInstanceId(int, optional): TargetGroup のインスタンス ID。groupPath(string, optional): TargetGroup の階層パス。targetName(string): メンバーの GameObject の名前。targetInstanceId(int, optional): メンバーの GameObject のインスタンス ID。targetPath(string, optional): メンバーの GameObject の階層パス。weight(float): メンバーの重み(デフォルトは 1)。radius(float): メンバーの半径(デフォルトは 1)。
cinemachine_target_group_remove_member
TargetGroup からメンバーを削除します。 パラメーター:
groupName(string): TargetGroup の名前。groupInstanceId(int, optional): TargetGroup のインスタンス ID。groupPath(string, optional): TargetGroup の階層パス。targetName(string): メンバーの GameObject の名前。targetInstanceId(int, optional): メンバーの GameObject のインスタンス ID。targetPath(string, optional): メンバーの GameObject の階層パス。
cinemachine_set_spline
VCam の SplineDolly コンポーネント(Body ステージ)に SplineContainer を割り当てます。 パラメーター:
vcamName(string): VCam の名前。vcamInstanceId(int, optional): VCam のインスタンス ID。vcamPath(string, optional): VCam の階層パス。splineName(string): SplineContainer を持つ GameObject の名前。splineInstanceId(int, optional): SplineContainer の GameObject のインスタンス ID。splinePath(string, optional): SplineContainer の GameObject の階層パス。
cinemachine_add_extension
VCam に CinemachineExtension を追加します。 パラメーター:
vcamName(string): VCam の名前。instanceId(int, optional): VCam のインスタンス ID。path(string, optional): VCam の階層パス。extensionName(string): エクステンションの型名(例:"CinemachineStoryboard"、"CinemachineImpulseListener")。
cinemachine_remove_extension
VCam から CinemachineExtension を削除します。 パラメーター:
vcamName(string): VCam の名前。instanceId(int, optional): VCam のインスタンス ID。path(string, optional): VCam の階層パス。extensionName(string): エクステンションの型名。
cinemachine_set_active
最高の優先度を設定して VCam のアクティブ化(SOLO)を強制します。 パラメーター:
vcamName(string): アクティブ化する VCam の名前。instanceId(int, optional): VCam のインスタンス ID。path(string, optional): VCam の階層パス。
cinemachine_create_mixing_camera
Cinemachine Mixing Camera を作成します。 パラメーター:
name(string): 新しい GameObject の名前。
cinemachine_mixing_camera_set_weight
Mixing Camera 内の子カメラの重みを設定します。 パラメーター:
mixerName(string, optional): Mixing Camera の名前。mixerInstanceId(int, optional): Mixing Camera のインスタンス ID。mixerPath(string, optional): Mixing Camera の階層パス。mixerEntityId(string, optional): Mixing Camera のエンティティ ID(Unity 6000.4+、推奨)。childName(string, optional): 子 VCam の名前。childInstanceId(int, optional): 子 VCam のインスタンス ID。childPath(string, optional): 子 VCam の階層パス。childEntityId(string, optional): 子 VCam のエンティティ ID(Unity 6000.4+、推奨)。weight(float): 重みの値。通常は 0.0~1.0(デフォルトは 1)。
cinemachine_create_clear_shot
Cinemachine Clear Shot Camera を作成します。 パラメーター:
name(string): 新しい GameObject の名前。
cinemachine_create_state_driven_camera
Cinemachine State Driven Camera を作成します。 パラメーター:
name(string): 新しい GameObject の名前。targetAnimatorName(string, optional): バインドする Animator を持つ GameObject の名前。
cinemachine_state_driven_camera_add_instruction
State Driven Camera にステートマッピングの指示を追加します。 パラメーター:
cameraName(string, optional):State Driven Camera の名前。cameraInstanceId(int, optional):State Driven Camera のインスタンス ID。cameraPath(string, optional):State Driven Camera の階層パス。cameraEntityId(string, optional):State Driven Camera のエンティティ ID(Unity 6000.4 以降で使用可能、推奨)。stateName(string):アニメーションステートの名前(例:「Run」)。childCameraName(string, optional):このステートで有効にする子 VCam の名前。childInstanceId(int, optional):子 VCam のインスタンス ID。childPath(string, optional):子 VCam の階層パス。childEntityId(string, optional):子 VCam のエンティティ ID(Unity 6000.4 以降で使用可能、推奨)。minDuration(float, optional):最小継続時間(秒、デフォルトは 0)。activateAfter(float, optional):有効化までの遅延時間(秒、デフォルトは 0)。
cinemachine_set_noise
ノイズ設定(Basic Multi Channel Perlin)を構成します。 パラメーター:
vcamName(string):VCam の名前。instanceId(int, optional):VCam のインスタンス ID。path(string, optional):VCam の階層パス。amplitudeGain(float):ノイズの振幅。frequencyGain(float):ノイズの周波数。
cinemachine_set_priority
Virtual Camera に明示的な優先度を設定します。優先度が高いほど、アクティブ化の優先順位が高くなります。 パラメーター:
vcamName(string, optional):VCam の名前。name/instanceId/path のいずれかを指定します。instanceId(int, optional):VCam のインスタンス ID。path(string, optional):VCam の階層パス。priority(int):優先度の値(デフォルトは 10)。
cinemachine_set_blend
CinemachineBrain のデフォルトブレンド、またはカメラペアごとのブレンドを設定します。デフォルトブレンドを設定するには、fromCamera/toCamera を空にします。
パラメーター:
style(string):ブレンドスタイル —Cut/EaseInOut/EaseIn/EaseOut/HardIn/HardOut/Linear(デフォルトはEaseInOut)。time(float):ブレンド時間(秒、デフォルトは2)。fromCamera(string, optional):カメラペアごとのブレンドで使用するソース VCam の名前。toCamera(string, optional):カメラペアごとのブレンドで使用する宛先 VCam の名前。
cinemachine_set_brain
CinemachineBrain のプロパティ(更新方法、デフォルトブレンド、デバッグ表示)を構成します。 パラメーター:
updateMethod(string, optional):FixedUpdate/LateUpdate/SmartUpdate/ManualUpdate。blendUpdateMethod(string, optional):FixedUpdate/LateUpdate。defaultBlendStyle(string, optional):ブレンドスタイル名(cinemachine_set_blendを参照)。defaultBlendTime(float, optional):デフォルトのブレンド時間(秒)。showDebugText(bool, optional):Cinemachine のデバッグテキストオーバーレイを表示します。showCameraFrustum(bool, optional):アクティブなカメラのフラスタムギズモを描画します。ignoreTimeScale(bool, optional):ブレンドでTime.timeScaleを無視します。
cinemachine_create_sequencer
子カメラを順番に再生する Sequencer カメラ(CM3)または BlendList カメラ(CM2)を作成します。 パラメーター:
name(string):新しい GameObject の名前。loop(bool):シーケンスをループするかどうか(デフォルトはfalse)。
cinemachine_sequencer_add_instruction
Sequencer/BlendList カメラに子カメラの指示を追加します。 パラメーター:
sequencerName(string, optional):Sequencer カメラ名。sequencerInstanceId(int, optional):Sequencer のインスタンス ID。sequencerPath(string, optional):Sequencer の階層パス。sequencerEntityId(string, optional):Sequencer のエンティティ ID(Unity 6000.4 以降では推奨)。childCameraName(string, optional):子 VCam 名。childInstanceId(int, optional):子 VCam のインスタンス ID。childPath(string, optional):子 VCam の階層パス。childEntityId(string, optional):子 VCam のエンティティ ID(Unity 6000.4 以降では推奨)。hold(float):この子カメラを維持する時間(秒)。デフォルトは2です。blendStyle(string):この子カメラへの遷移に使用するブレンドスタイル。デフォルトはEaseInOutです。blendTime(float):ブレンド時間(秒)。デフォルトは2です。
Sequencer と子カメラのそれぞれに、少なくとも 1 つの識別子を指定してください。
cinemachine_create_freelook
FreeLook カメラを作成します。CM2 では CinemachineFreeLook を使用し、CM3 では CinemachineCamera + OrbitalFollow(ThreeRing) + RotationComposer を構築します。
パラメーター:
name(string):新しい GameObject の名前。followName(string, optional):追従する GameObject。lookAtName(string, optional):注視する GameObject。
cinemachine_configure_camera_manager
ClearShot/StateDriven/Sequencer カメラマネージャーのプロパティを 1 回の呼び出しで設定します。対象にないマネージャータイプのパラメーター、解決できない animatorName(または Animator を持たないオブジェクトを指定したもの)、および不明なブレンドスタイルは、書き込みの前に拒否されます。
パラメーター:
cameraName(string, optional):カメラマネージャー名。name/instanceId/path のいずれかを指定してください。cameraInstanceId(int, optional):カメラマネージャーのインスタンス ID。cameraPath(string, optional):カメラマネージャーの階層パス。activateAfter(float, optional):ClearShot — アクティブ化までの遅延。minDuration(float, optional):ClearShot — ショットの最小継続時間。randomizeChoice(bool, optional):ClearShot — ショットの選択をランダム化します。animatorName(string, optional):StateDriven — Animator を持つ GameObject の名前。layerIndex(int, optional):StateDriven — Animator のレイヤーインデックス。defaultBlendStyle(string, optional):デフォルトのブレンドスタイル(ClearShot/StateDriven で共通)。defaultBlendTime(float, optional):デフォルトのブレンド時間(秒)。loop(bool, optional):Sequencer — 再生をループします。
cinemachine_configure_body
1 回の呼び出しで、Body ステージコンポーネント(Follow、OrbitalFollow、ThirdPersonFollow、PositionComposer、FramingTransposer など)を設定します。有効なコンポーネントに一致するフィールドのみが適用されます。一致するフィールドがない場合、呼び出しは失敗し、書き込みできなかったフィールドが warnings に一覧表示されます。
パラメーター:
vcamName(string、任意):VCam 名。name/instanceId/path のいずれかを指定してください。instanceId(int、任意):VCam のインスタンス ID。path(string、任意):VCam の階層パス。
Follow / Transposer:
offsetX/offsetY/offsetZ(float、任意):Follow オフセットベクトル。bindingMode(string、任意):バインディング/ターゲットのアタッチモード(例:LockToTarget、WorldSpace)。dampingX/dampingY/dampingZ(float、任意):位置のダンピング。
OrbitalFollow / OrbitalTransposer:
orbitStyle(string、任意):SphereまたはThreeRing。radius(float、任意):球形軌道の半径。topHeight/topRadius(float、任意):上部リングのパラメーター。midHeight/midRadius(float、任意):中央リングのパラメーター。bottomHeight/bottomRadius(float、任意):下部リングのパラメーター。
ThirdPersonFollow:
shoulderX/shoulderY/shoulderZ(float、任意):肩のオフセット。verticalArmLength(float、任意):垂直アームの長さ。cameraSide(float、任意):0 = 左、1 = 右。
PositionComposer / FramingTransposer:
cameraDistance(float、任意):カメラとターゲットの距離。screenX/screenY(float、任意):画面上のターゲット位置(0~1)。deadZoneWidth/deadZoneHeight(float、任意):デッドゾーンのサイズ(0~1)。
cinemachine_configure_aim
1 回の呼び出しで、Aim ステージコンポーネント(RotationComposer、Composer、PanTilt、POV など)を設定します。有効なコンポーネントに一致するフィールドのみが適用されます。一致するフィールドがない場合、呼び出しは失敗し、書き込みできなかったフィールドが warnings に一覧表示されます。
パラメーター:
vcamName(string、任意):VCam 名。name/instanceId/path のいずれかを指定してください。instanceId(int、任意):VCam のインスタンス ID。path(string、任意):VCam の階層パス。
Composer / RotationComposer:
screenX/screenY(float、任意):画面上のターゲット位置。deadZoneWidth/deadZoneHeight(float、任意):デッドゾーンのサイズ。softZoneWidth/softZoneHeight(float、任意):ソフトゾーンのサイズ。horizontalDamping/verticalDamping(float、任意):コンポジションのダンピング。lookaheadTime/lookaheadSmoothing(float、任意):ターゲットの先読み調整。centerOnActivate(bool、任意):有効化時に再度中央に配置します。
PanTilt / POV:
referenceFrame(string、任意):パン/チルト軸の基準フレーム。panValue/tiltValue(float、任意):明示的なパン/チルト値。
ターゲットオフセット:
targetOffsetX/targetOffsetY/targetOffsetZ(float、任意):ターゲットのピボットからのオフセット。
cinemachine_configure_extension
Cinemachine 拡張機能(CinemachineConfiner、CinemachineDeoccluder/Collider、CinemachineFollowZoom、CinemachineGroupFraming など)を設定します。extensionName が省略された場合は、VCam 上の最初の拡張機能が使用されます。VCam に含まれていない extensionName と、解決できない boundingShapeName は拒否されます。書き込みできなかった設定は warnings に一覧表示されます。
Parameters:
vcamName(string, optional): VCam 名です。name/instanceId/path のいずれかを指定してください。instanceId(int, optional): VCam の Instance ID です。path(string, optional): VCam の階層パスです。extensionName(string, optional): 拡張機能の型名です(例:CinemachineConfiner)。
Confiner:
boundingShapeName(string, optional): バウンディングシェイプの GameObject 名です。damping(float, optional): 閉じ込め時に適用されるダンピングです。slowingDistance(float, optional): バウンディングシェイプ内で減速する距離です。
Deoccluder / Collider:
cameraRadius(float, optional): カメラの衝突半径です。strategy(string, optional): 遮蔽物除去の戦略名です。maximumEffort(int, optional): レイキャストの最大反復回数です。smoothingTime(float, optional): 遮蔽の変化に対するスムージング時間です。
FollowZoom:
width(float, optional): ワールド単位での目標幅です。fovMin/fovMax(float, optional): FOV の制限範囲です。
GroupFraming:
framingMode(string, optional): フレーミングモード名です。framingSize(float, optional): 目標のフレーミングサイズです。sizeAdjustment(string, optional): サイズ調整の戦略名です。
cinemachine_configure_impulse_source
CinemachineImpulseSource の定義(形状、継続時間、ゲイン)を設定します。ソースが指定されていない場合は、シーン内の最初の CinemachineImpulseSource が使用されます。
Parameters:
sourceName(string, optional): ソース名です。name/instanceId/path のいずれかを指定してください。すべて省略すると最初のソースが選択されます。sourceInstanceId(int, optional): ソースの Instance ID です。sourcePath(string, optional): ソースの階層パスです。amplitudeGain(float, optional): 振幅ゲインの倍率です。frequencyGain(float, optional): 周波数ゲインの倍率です。impactRadius(float, optional): ワールド単位での衝撃半径です。duration(float, optional): 信号の継続時間(秒)です。dissipationRate(float, optional): 距離に応じた減衰率です。
最小限の例
import unity_skills
# Create a vcam that follows and looks at the player
unity_skills.call_skill("cinemachine_create_vcam", name="PlayerCam")
unity_skills.call_skill("cinemachine_set_targets", vcamName="PlayerCam", followName="Player", lookAtName="Player")
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく GET /skills/schema または unity_skills.get_skill_schema() で定義されています。