AIゲーム開発研究室

2026-08-24 13:31:00

AIはゲームキャラクターを動かし、自ら問題を診断できるのか

AIゲーム開発研究室

ゲーム開発ドキュメント

Unity AI Agentによるキャラクター実装

AIはゲームキャラクターを動かし、自ら問題を診断できるのか

前回の実験では、Unity AI Agentを使用して、「森のどんぐり大作戦」の背景、上部前景、下部前景、そしてパンタをUnity上へ配置した。

それまで別々の画像素材として制作してきたものが、初めて一つのゲーム画面として組み合わされた。

しかし、まだパンタは動かない。

今回は、いよいよパンタをゲームキャラクターとして動かしてみる。

ここでも基本方針は変わらない。

人間がUnityのInspectorを操作し、スクリプトを書き、Animatorを設定するのではなく、

人間と対話AIが実装内容を検討し、その指示をUnity AI Agentへ渡す。

Unity AI Agentは、その指示をもとに実際のUnityプロジェクトを構築する。


まず、パンタのアニメーションを作る

パンタの待機時のアクションには、すでに制作済みの3枚の画像素材がある。

Panta_Catch_Up_01.png
Panta_Catch_Up_02.png
Panta_Catch_Up_03.png

この3枚を、

01 → 02 → 03

の順番で切り替えることによって、パンタがその場で小さく動くアクションになる。

Unity AI Agentへ、この3枚からSprite Animationを作成するよう指示した。

AIはAnimation ClipとAnimator Controllerを作成し、既存のPanta GameObjectへ設定した。

Playしてみる。

パンタが動いた。

画像は、

01 → 02 → 03

の順番で正常に切り替わっている。

ところが、一つ問題があった。


素材にあるはずの上下動が消えた

3枚の画像素材には、パンタの上下位置そのものに差をつけてある。

つまり、Unity側でPanta GameObjectを上下させなくても、画像を順番に切り替えるだけでパンタが小さく上下して見えるように制作している。

しかし、Unity上では画像は切り替わっているものの、その上下動がほとんど見えない。

なぜなのか。

ここで人間がSprite Editorを開き、原因を調べることもできる。

しかし今回は、それをしなかった。

Unity AI Agentへ、

「アニメーションは正常に動いているが、元画像に含まれている上下動が見えない。原因を調査してほしい。ただし、まだ修正はしないこと」

と指示した。


Unity AI Agentが原因を調査する

Unity AI Agentは、元となった3枚のPNG画像とUnity側のSprite設定を調査した。

その結果、原因が判明した。

3枚の画像は、すべて同じ

200 × 349 pixel

のキャンバスで制作されていた。

そして元画像を調べると、パンタが描画されている位置には実際に差があった。

2枚目では1枚目より約36pixel上へ移動し、3枚目では約13pixel上へ移動している。

つまり、

元画像には確かに上下動が存在していた。

問題はUnity側にあった。

UnityへSpriteとして取り込む際、透明部分を含む共通キャンバス全体ではなく、実際にキャラクターが描画されている領域を基準として扱い、それぞれのSpriteが再び中央へ揃えられていた。

その結果、

画像素材の中に存在していた位置の差が相殺されていた。

Unity AI Agentは、ここまで自ら調査して原因を報告した。


AIに自分の実装を修正させる

原因が分かった。

そこで今度はUnity AI Agentへ修正を指示した。

ただし、

「2枚目を36pixel上げる」

「3枚目を13pixel上げる」

とは指示していない。

人間側から数値を与えるのではなく、

元の200×349pixelの共通キャンバスに含まれている位置情報を維持すること

を要求した。

Unity AI AgentはSpriteの設定を修正した。

再びPlayする。

今度は、

パンタが小さく上下した。

元画像に仕込まれていた動きが、Unity上でも正しく再現された。

さらに驚いたことに、アニメーション速度についても特に調整する必要がなかった。

そのままで自然な動きになっていた。


足元の見え方を調整する

アニメーション自体は完成した。

しかし実際に動いているパンタを見ると、足の動きの一部が下部前景の草に隠れすぎているように感じられた。

そこでUnity AI Agentへ、

着地時には足の一部が草に隠れる。しかし上へ動いたときには足の動きが見える位置

になるよう、パンタ全体のY位置を少しだけ上へ調整するよう指示した。

ここでも具体的なY座標は指定しない。

Unity AI Agentが位置を調整し、人間が実際の画面を見て判断する。

その結果、パンタが森の地面に立っている感じを残しながら、動きもよく見える位置になった。


プレイヤーがパンタを動かす

次に、パンタをプレイヤーが操作できるようにする。

Unity AI Agentへ、

左右矢印キー、またはA・Dキーでパンタを左右へ移動させる

よう指示した。

AIは必要なスクリプトを作成し、Panta GameObjectへ設定した。

Playする。

右へ動く。

左へ動く。

矢印キーでも、A・Dキーでも正常に操作できた。

さらに、パンタが画面外へ出ないようにする制御も実装されていた。

これによって、パンタは単なるアニメーション画像ではなく、

プレイヤーが操作するゲームキャラクター

になった。


キャラクターの速度を考える

パンタ単体で操作すると、最初に設定された移動速度でも問題はなかった。

しかし「森のどんぐり大作戦」では、最終的に5人のキャラクターが登場する。

そこで移動速度について、

高速

標準

低速

の3段階を基本とすることにした。

現時点では、

リン=高速

パンタ=標準

ポン=低速

を予定している。

そのため、パンタの移動速度を最初の状態より少し遅くし、

ゲーム全体の標準速度

として使える操作感へ調整した。

コンタとミミについては、速度だけではなく、それぞれ別の動作特性も含めて今後検討する。


右を向いて動く

ここまでのパンタは、左右へ移動することはできるものの、待機用の正面アニメーションのまま横へ移動していた。

そこで次に、右移動用として制作していた、

Panta_Catch_Right_01.png
Panta_Catch_Right_02.png
Panta_Catch_Right_03.png

を使用する。

待機アニメーションで発生した問題を踏まえ、今回は最初から、

元画像の共通キャンバスに含まれる位置情報を維持すること

をUnity AI Agentへ指示した。

さらに、

停止中 → Panta_Catch_Up

右移動中 → Panta_Catch_Right

となるようAnimatorと移動制御を連携させる。

実装後にPlayすると、

右キーを押した瞬間にパンタが右向きのアクションへ切り替わり、そのまま右へ移動した。

キーを離すと停止し、正面向きの待機アクションへ戻る。

成功である。


左移動に新しい画像は作らない

左移動については、新しい画像素材を用意しなかった。

完成した右移動用アニメーション、

Panta_Catch_Right

をそのまま使用し、左へ移動するときだけSpriteを左右反転させる。

Unity AI Agentへその処理を指示した。

結果、

停止中 → 正面

右入力 → 右を向いて移動

左入力 → 左を向いて移動

キーを離す → 正面へ戻って待機

という一連の動作が完成した。


AIは実装するだけではなかった

今回、最も興味深かったのは、パンタが動いたことだけではない。

途中で、

「元画像に存在する上下動がUnity上では消えてしまう」

という、事前には想定していなかった問題が発生した。

そこで人間がUnityの設定を調べて修正したのではない。

Unity AI Agentへ問題を伝えた。

AIは、

元画像を調査し、
Unity側の設定を調査し、
両者を比較し、
原因を特定し、
その結果を人間へ報告した。

そして修正を指示すると、その問題も解決した。

つまり今回確認されたのは、

AIによる実装

だけではない。

AIによる実装結果の診断と修正

まで含まれている。


人間は何をしていたのか

今回、人間はC#スクリプトを書いていない。

Animator Controllerも作っていない。

SpriteのPivotも修正していない。

Transformへ移動速度の数値を入力したわけでもない。

人間が行ったのは、

動きを見る。

違和感を見つける。

どのような動きにしたいかを判断する。

AIから求められた操作許可を確認する。

完成した結果を採用するか判断する。

ということである。

実装作業のかなりの部分をAIが担当するようになると、人間の役割は、

「作る人」から「見て、判断する人」へ

少しずつ移動していく。

実際、今回の制作中、

「もう人間は観客ではないか」

と思うほど、Unity AI Agentが次々と実装を進めていった。

しかし、その「観客」は何もしない観客ではない。

どの動きがかわいいのか。

どの速度がキャラクターに合っているのか。

足がどの程度草に隠れるべきなのか。

ゲーム全体としてキャラクター間の速度差をどう設計するのか。

そうした判断は、依然として人間が行っている。


今回の到達点

今回の実験によって、パンタには、

待機アニメーション

左右移動

右向き移動アニメーション

左向き移動アニメーション

停止時の待機状態への復帰

矢印キー/A・Dキーによる操作

画面外への移動制限

標準キャラクターとしての移動速度

が実装された。

前回、森の中に立ったパンタが、

今回は自分で動き始めた。

そしてUnity AI Agentは、単に指示された実装を行うだけではなく、途中で発生した問題について、自らプロジェクト内部を調査し、原因を特定するところまで行った。

ここまで来ると、

「AIはUnityを操作できるのか」

という最初の問いから、研究は明らかに次の段階へ進んでいる。

次に試すのは、

ゲームシステムそのものをAIに作らせること

である。

パンタは動けるようになった。

次は――

空から、どんぐりが落ちてくる。

 

「森のどんぐり大作戦」が、いよいよゲームとして動き始める。