【Unity 6対応】3Dキャラクターに歩行アニメーションを設定する方法を解説!【前編】
© Unity Technologies Japan/UCL
- (今回の記事)【Unity 6対応】3Dキャラクターに歩行アニメーションを設定する方法を解説!【前編】
- (次回の記事)【Unity 6対応】3Dキャラクターをキーボードで移動・回転させる方法を解説!【後編】
Unityを触り始めたら、まず一度は「自分の操作でキャラクターを歩かせてみたい」と思いませんか?
ゲーム画面の中でキャラクターが立ち、歩き、向きを変える。
一見すると難しそうですが、実はこの仕組みの中には、Unityで3Dゲームを作るための基本がたくさん詰まっています。
Unityとは、2Dゲーム・3Dゲームを作ることができるゲームエンジンです。
「プログラミングしてみたいけど、何から始めればいいかわからない」
「Unityの基本的な使い方を覚えたい」
「オリジナルのゲームを作ってみたい」
「自分でキャラクターを操作してみたい」
そんな人におすすめなのが、まずキャラクターを歩かせるところから始めることです。
今回はUnity初心者向けに、キャラクターを実際に動かすための準備として、次の内容を順番に作っていきます。
- 3Dプロジェクトを作る
- キャラクターをSceneに配置する
- 地面を作る
- RigidbodyやColliderを設定する
- Animator Controllerを作る
- IdleとWalkingを切り替えられるようにする
この記事を最後まで進めると、キャラクターが待機状態と歩行状態を切り替えられるところまで完成します。
後編の記事では、ここで作ったAnimatorに新Input Systemを組み合わせて、WASDキーで実際にキャラクターを操作できるようにしていきます。
つまり今回の記事では、キャラクターを動かす前の設定について徹底解説しています。
専門用語も一つずつ説明しながら進めるので、Unityを始めたばかりでも大丈夫です。
手元にUnityを動かせる環境があれば、ぜひ一緒に作ってみましょう!
今回の記事では、Unity 6を使用して解説します。
Unityの導入がまだ終わっていない場合は、先にUnityのインストール・初期設定を済ませておきましょう。
Unityのインストールについては以下の記事で解説しているので参考にしてください。
プロジェクトを作ろう!
まずUnity Hubを開きます。
New projectを選択して、新しいプロジェクトを作成しましょう。

今回は、次の設定で進めます。
Editor Version:6000.3.23f1Template:Universal 3DProject Name:UnityWalking

設定できたら、Create projectをクリックします。
Unity Editorが開けば準備完了です。

キャラクターを用意しよう!
次に、ゲーム内で使用する3Dキャラクターを用意します。
今回はUnityChanのSDモデルを使用します。
UnityChanを利用する場合は、公式サイトの利用規約を確認してからダウンロードしてください。

3Dモデルの中からSDユニティちゃん3Dモデルデータを選択してダウンロードします。

キャラクターをインポートしよう!
ダウンロードしたUnity PackageをUnityへ読み込みます。
Unity上部メニューからAssets → Import Package → Custom Package...を選択します。

ダウンロードした.unitypackageを選択します。

Importウインドウが表示されたら、必要なファイルを確認してImportをクリックします。

UnityChanをSceneに配置しよう!
Importが完了すると、ProjectウインドウにUnityChan関連のフォルダが追加されます。
今回使用するPrefabを探します。
UnityChan → SD_unitychan → Prefabs → SD_unitychan_humanoid
SD_unitychan_humanoidをHierarchyへドラッグ&ドロップしてください。

Sceneにキャラクターが表示されればOKです。
HierarchyでSD_unitychan_humanoidをダブルクリックすると、Sceneビューのカメラをキャラクターの位置へ移動できます。

Consoleを表示しておこう!
ゲーム制作では、エラーが発生したときにConsoleを確認することが非常に重要です。
Unity上部メニューからWindow → General → Consoleを開きます。

開いたConsoleタブは、SceneやGameビューの横など、自分が見やすい場所へ配置しておきましょう。


赤いメッセージは主にError、黄色いメッセージはWarningです。
ゲームが思ったように動かない場合は、まずConsoleを確認する習慣を付けておきましょう。
Consoleに表示されるエラーを解決する
UnityChanを配置したときに、Console画面に次のような表示されることがあります。
Shader warning in 'Toon/Toon 3D as 2D (URP)': implicit truncation of vector type at Packages/com.unity.toonshader/Runtime/Shaders/URP/ToonURP_3Das2D.shader(210) (on metal)
Compiling Subshader: 0, Pass: <Unnamed Pass 0>, Vertex program with <no keywords>
Platform defines: SHADER_API_DESKTOP UNITY_ENABLE_DETAIL_NORMALMAP UNITY_ENABLE_REFLECTION_BUFFERS UNITY_FRAMEBUFFER_FETCH_AVAILABLE UNITY_LIGHTMAP_FULL_HDR UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_NEEDS_RENDERPASS_FBFETCH_FALLBACK UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BLENDING UNITY_SPECCUBE_BOX_PROJECTION UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS
Disabled keywords: DEBUG_DISPLAY INSTANCING_ON SHADER_API_GLES30 SHADER_API_GLES31 SHADER_API_GLES32 UNITY_ASTC_NORMALMAP_ENCODING UNITY_COLORSPACE_GAMMA UNITY_HARDWARE_TIER1 UNITY_HARDWARE_TIER2 UNITY_HARDWARE_TIER3 UNITY_LIGHTMAP_DLDR_ENCODING UNITY_LIGHTMAP_RGBM_ENCODING UNITY_METAL_SHADOWS_USE_POINT_FILTERING UNITY_NO_DXT5nm UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 UNITY_PBS_USE_BRDF3 UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION UNITY_UNIFIED_SHADER_PRECISION_MODEL UNITY_VIRTUAL_TEXTURING USE_SHAPE_LIGHT_TYPE_0 USE_SHAPE_LIGHT_TYPE_1 USE_SHAPE_LIGHT_TYPE_2 USE_SHAPE_LIGHT_TYPE_3
これはUnityChan自体のバグではなく、Materialで使用しているShaderのバージョンが合っていない場合に起こる症状です。
今回のプロジェクトはUniversal 3Dなので、URP(Universal Render Pipeline)を使用しています。
Unity上部メニューからWindow → PackageManagement → Package Managerを開きます。


検索欄に toon と入力し、Unity Toon Shader を探します。
Version History をクリックし、表示されるバージョンから 0.15.1-preview の Update をクリックします。
環境やわずかなバージョンの違いによってエラーになる場合もあるので、開発に大きく影響しないエラーについては気にしなくても大丈夫です。
UnityChanの不要なデモ機能を整理しよう!
UnityChanの配布データには、キャラクターを見せるためのデモ用機能やGUIが含まれている場合があります。
今回作るのはシンプルな歩行ゲームなので、不要なものは無効にしておきます。
SD_unitychan_humanoidを選択し、Inspectorを確認してください。
デモ用のGUIやPreview系コンポーネントが付いている場合は、今回使用しないものを無効化します。
Idle Changer- GUI表示機能
- Face Preview系
Random WindIK Look At


UnityChanのバージョンによって付属するコンポーネントは異なります。
今回は
- Body Animation Previewer
- Face Animation Previewer
- Auto Blink for SD
- Spring Manager
- SD Random Wind
を無効化しています。
名前が見つからない場合は無理に探す必要はありません。
地面を用意しよう!
キャラクターが立つための地面を作ります。
Hierarchyの+から3D Object → Planeを選択します。

作成したPlaneのTransformを設定します。
Position
X:0
Y:0
Z:0
Scale
X:10
Y:1
Z:10

これでキャラクターが歩くための地面ができました。
キャラクターにRigidbodyとColliderを付けよう!
次にキャラクターへ物理処理用のComponentを追加します。
HierarchyからSD_unitychan_humanoidを選択してください。
Inspector下部のAdd Componentから、RigidbodyとCapsule Colliderを追加します。
【画像挿入:RigidbodyとCapsule Colliderを追加する画面】


Rigidbodyは、重力や衝突などの物理演算をキャラクターへ適用するComponentです。
Capsule Colliderは、キャラクターが地面や壁などに当たる範囲を設定します。
Capsule Colliderを調整しよう!
Colliderがキャラクターの身体に合うように調整します。
例えば今回のSDモデルなら、次の値から調整します。
Center Y:0.5
Radius:0.3
【画像挿入:Capsule Colliderの設定】

Sceneビューで緑色のCollider範囲を確認し、キャラクターの身体を大きく外れていないか確認してください。
モデルやバージョンによって適切な値は変わるため、数値そのものより「身体を適切に覆っているか」を優先してください。
ゲームを実行して確認しよう!
※ HierarcyでMain Cameraを選択した状態で、Unity上部メニューからGameObject → Align With Viewをクリックすると、キャラクターの様子がチェックしやすくなります。

Unity上部の再生ボタンをクリックします。
キャラクターが地面に落ち、そのまま立っていればOKです。

この段階ではまだ移動しません。
ここからAnimatorを設定して、IdleとWalkingの2種類のAnimationを用意していきます。
Animatorを設定しよう!
Animatorは、キャラクターのAnimationを管理する仕組みです。
今回作るのは、非常にシンプルなState Machineです。
Animator Controllerでは、StateとStateの間にTransitionを作り、そのTransitionにParameterを条件として設定することでAnimationを切り替えます。
イメージとしては、次のようになります。

Animator Controllerを作ろう!
Projectウインドウで右クリックし、Create → Animator Controllerを選択します。

名前はPlayerAnimatorとします。

作成したPlayerAnimatorを、SD_unitychan_humanoidのInspectorにあるAnimator → Controllerへドラッグ&ドロップします。

Idle Animationを作ろう!
PlayerAnimatorをダブルクリックしてAnimatorウインドウを開きます。
ウインドウが誤って閉じてしまわないように、Animatorウインドウの右上で鍵マークをクリックして固定しておきましょう。

Animator上で右クリックし、Create State → Emptyを選択します。

作成したStateを選択して、次のように設定します。
Name:Idle
Motion:Standing@loop

Stateがオレンジ色になっていれば、そのStateが最初に再生されるDefault Stateです。
必要であればIdleを右クリックしてSet as Layer Default Stateを選択してください。
Standing@loopを確認しよう!
UnityChanのデータ構成によっては、似た名前のAnimation Clipが複数存在する場合があります。
今回使うUnityChanはhumanoidなので、humanoid用のAnimation Clipを選択しましょう。
設定したあと一度ゲームを再生して、キャラクターの姿勢を確認してください。

次のような状態になっていればOKです。
- 地面に立っている
- 身体が大きく崩れていない
- 不自然に地面へ埋まっていない
もし姿勢がおかしい場合は、選択しているAnimation Clipを確認します。
Walking Animationを作ろう!
次に歩行用Stateを作ります。
Animatorウインドウの空いている場所で右クリックし、Create State → Emptyを選択します。
Stateの設定を次のようにします。
Name:Walking
Motion:Walking@loop

これでIdleとWalkingという2つのStateができました。
IdleとWalkingをつなごう!
Animationを切り替えるため、Transitionを作ります。
Idleを右クリックしてMake Transitionを選択し、そのままWalkingをクリックします。

次に、Walking → IdleのTransitionも同じように作ります。

最終的に、次のようになっていればOKです。

isWalking Parameterを作ろう!
次に、「いつIdleからWalkingへ切り替えるのか」という条件を作ります。
AnimatorウインドウのParametersから+ → Boolを選択します。

名前はisWalkingとしてください。
【画像挿入:isWalking Bool Parameter】

ここは非常に重要です。
次の記事のScriptでは、
animator.SetBool("isWalking", isWalking);
を使用します。
そのため、isWalkingの名前で設定するようにしてください。
Animator Parameter名は大文字・小文字まで完全に一致させる必要があります。
Idle → Walkingの条件を設定しよう!
Idle → WalkingのTransition矢印をクリックします。
InspectorのConditionsで、次のように設定します。

これによって、isWalking = trueになるとWalkingへ移行します。
Walking → Idleの条件を設定しよう!
次にWalking → IdleのTransitionを選択します。
Conditionsを次のようにします。

これで、isWalking = falseになるとIdleへ戻ります。
Has Exit TimeをOFFにしよう!
今回のような操作キャラクターでは、キーを押したらすぐ歩き、キーを離したらすぐ止まってほしいですよね。
そこで、両方のTransitionでHas Exit TimeをOFFにします。


Has Exit TimeがONの場合、現在のAnimationが一定位置まで再生されるのを待ってからTransitionするため、入力に対する反応が遅く感じることがあります。
Animatorを手動で確認しよう!
まだScriptは作っていませんが、Animatorが正しく動くか確認できます。
ゲームを再生してください。
AnimatorウインドウのisWalkingを確認します。
isWalkingをONにすると、Idle → Walkingへ変わります。

OFFにすると、Walking → Idleへ戻ります。

ここまで正常なら、Animatorの設定は完成です。
今回作った仕組みを整理しよう!
今回設定したAnimatorは、次のようになっています。

次の記事では、このisWalkingをScriptから変更します。
例えば、animator.SetBool("isWalking", true);とすればWalkingへ、animator.SetBool("isWalking", false);とすればIdleへ切り替えられます。
つまり今回作ったAnimatorと、次回作るPlayerControllerをつなぐと

という仕組みが完成します。
まとめ
今回はUnity 6でキャラクターを動かす準備として、
- UnityChanをSceneへ配置
- 地面を作成
- Rigidbodyを追加
- Capsule Colliderを追加
- Animator Controllerを作成
- Idle Stateを作成
- Walking Stateを作成
- Transitionを設定
isWalkingParameterを作成
しました。
特に覚えておきたいのは、次の関係です。

これを理解しておくと、今後Running、Jump、Attack、DamageなどのAnimationも同じ考え方で追加できます。
次の記事では、新Input Systemを使って、WASDキーで今回作ったキャラクターを実際に歩かせます。
【Unity 6対応】3Dキャラクターをキーボードで移動・回転させる方法を解説!【後編】
テックチャンスでは無料のプログラミング体験を実施しています!
プログラミング教室テックチャンスでは、子どもたちが実際に作品を作りながらプログラミングを学べる授業を行っています。
Scratchを使ったプログラミングから、Minecraft、そして今回紹介したようなUnityを使った本格的なゲーム開発まで、経験に合わせてステップアップできます。
「ゲームを遊ぶだけではなく、自分で作ってみたい」
「プログラミングに興味はあるけれど、何から始めればいいか分からない」
という方は、ぜひ一度無料体験に参加してみてください!