Unity本格入門 実装編:目次(Chapter 5〜9)
このシリーズは、技術評論社刊『作って学べる Unity本格入門[Unity 6対応版]』(賀好 昭仁 著)の Chapter 5〜9 に沿い、いきのこバトル(IkinokoBattle) の実装コードを読み解きながら学ぶ技術ブログです。
本サイトは出版社・著者の公式サイトではありません。 コード掲載は学習上必要な範囲にとどめます。
OOP設計パターン編(別シリーズ) | 機能別解説編
書籍・著作について
- 出典: 技術評論社刊『作って学べる Unity本格入門[Unity 6対応版]』(賀好 昭仁 著)
- 本ブログの位置づけ: 題材プロジェクトのコードを読み解く学習補助の解説です。書籍の代替提供を目的とせず、**コード掲載は学習上必要な範囲(必要最小限)**にとどめます。
- 著作権・サンプルの利用: 書籍に関する権利は出版社・著者に帰属します。サンプル等の利用条件は書籍記載(P.4〜5)および出版社サポート情報に従ってください。
このシリーズについて
- 対象読者: Unity と C# のコードを追いながら読み進められる方
- 記事の構成: 各 Chapter を 1 記事にまとめ、書籍の節(5-1〜)と IkinokoBattle のコードを対応させながら解説します
- いきのこバトル(IkinokoBattle) は Unity 6.0 対応の 3D アクションゲームです。本シリーズでは書籍の学習項目ごとに「IkinokoBattle ではどう実装されているか」を紐付けて読みます
記事一覧
第1回|Chapter 5 ゲームの舞台を作ってみよう
記事ファイル: 05-IkinokoBattle_ゲームの舞台.md
書籍の 5-1〜5-5 に対応。Terrain ツールによる地形作成から Skybox・昼夜サイクルまでを扱います。IkinokoBattle では RoundLight スクリプトが昼夜サイクルの中核を担っています。
書籍の節との対応
| 節 | 書籍タイトル | IkinokoBattle での実装 |
|---|---|---|
| 5-1 | プロジェクトを作成しよう | Asset Store / Asset のインポート |
| 5-2 | 地形を追加しよう | Terrain(MainScene に配置済み) |
| 5-3 | 木や草を配置しよう | Foliage Creator Tools・Low Poly アセット |
| 5-4 | 水や風の演出を追加しよう | Simple Water Shader・Wind Zone |
| 5-5 | 空を追加しよう | Skybox + RoundLight.cs |
学習ポイント
| # | 学習ポイント |
|---|---|
| ① | Terrain の作成と基本設定(Size・Resolution) |
| ② | 起伏ブラシ(Raise/Lower・Smooth・Stamp)の使い方 |
| ③ | Tree Painter と Detail Mesh で木・草を配置する |
| ④ | Water Shader の配置と Wind Zone の設定 |
| ⑤ | Skybox マテリアルの作成と Lighting Settings への適用 |
| ⑥ | RoundLight で Directional Light を回転させ昼夜を表現する |
| ⑦ | Terrain のパフォーマンス上の弱点と Static Mesh との使い分け |
第2回|Chapter 6 キャラクターを作ってみよう
記事ファイル: 06-IkinokoBattle_キャラクター.md
書籍の 6-1〜6-5 に対応。3D モデルのインポートから Input System・CharacterController・Cinemachine・Mecanim まで扱います。IkinokoBattle の PlayerController.cs が学習の中心です。
書籍の節との対応
| 節 | 書籍タイトル | IkinokoBattle での実装 |
|---|---|---|
| 6-1 | キャラクターをインポートしよう | Query-Chan SD の Import と Prefab 配置 |
| 6-2 | キャラクターを操作できるようにしよう | CharacterController + 重力・移動処理 |
| 6-3 | キャラクター操作のためのスクリプトを書こう | PlayerController.cs・Input Action |
| 6-4 | カメラがキャラクターを追いかけるようにしよう | Cinemachine Virtual Camera |
| 6-5 | キャラクターにアニメーションを付けよう | Animator Controller・SetFloat/SetTrigger |
学習ポイント
| # | 学習ポイント |
|---|---|
| ① | FBX インポートと Rig 設定(Humanoid / Generic) |
| ② | PlayerInput と FindAction で入力アクションを取得する |
| ③ | ReadValue<Vector2>() と CharacterController.Move で移動・重力を実装する |
| ④ | WasPressedThisFrame / WasReleasedThisFrame で単発入力を判定する |
| ⑤ | Cinemachine の CinemachineVirtualCamera でキャラクターを追尾する |
| ⑥ | Animator Controller のステートマシンとトランジション条件 |
| ⑦ | [RequireComponent] で依存コンポーネントをコードで明示する |
第3回|Chapter 7 敵キャラクターを作って動きを付けよう
記事ファイル: 07-IkinokoBattle_敵キャラクター.md
書籍の 7-1〜7-6 に対応。NavMesh・Raycast・アニメーションイベント・スポーンを扱います。EnemyMove.cs・MobAttack.cs・CollisionDetector.cs・Spawner.cs が学習の中心です。
書籍の節との対応
| 節 | 書籍タイトル | IkinokoBattle での実装 |
|---|---|---|
| 7-1 | 敵キャラクターがプレイヤーを追いかけるようにしよう | EnemyMove.cs + NavMeshAgent |
| 7-2 | 一定範囲に入ると襲ってくるようにしよう | CollisionDetector.cs(汎用 UnityEvent) |
| 7-3 | 視界に入ると襲ってくるようにしよう | EnemyMove.cs + RaycastNonAlloc |
| 7-4 | 敵キャラクターに攻撃させてみよう | MobAttack.cs + Animation Event |
| 7-5 | 敵を倒せるようにしよう | MobStatus.Damage() + レイヤー設定 |
| 7-6 | 敵キャラクターを出現させよう | Spawner.cs + Coroutine + NavMesh.SamplePosition |
学習ポイント
| # | 学習ポイント |
|---|---|
| ① | NavMesh のベイクと NavMeshAgent のパラメータ |
| ② | NavMeshAgent.destination でプレイヤーを追跡する |
| ③ | CollisionDetector でトリガー判定を汎用 UnityEvent として委譲する |
| ④ | RaycastNonAlloc で視界内かどうかを確認する |
| ⑤ | アニメーションイベントと MobAttack(OnAttackStart・OnHitAttack・OnAttackFinished) |
| ⑥ | NavMesh.SamplePosition でランダム位置に敵を Instantiate する |
| ⑦ | Coroutine(SpawnLoop)でスポーン間隔をコントロールする |
第4回|Chapter 8 ユーザーインタフェースを作ってみよう
記事ファイル: 08-IkinokoBattle_UI.md
書籍の 8-1〜8-5 に対応。Canvas・シーン遷移・アイテムデータ・ゲーム内 UI・スマホ対応を扱います。OwnedItemsData.cs・Menu.cs・ItemsDialog.cs・LifeGauge.cs が学習の中心です。
書籍の節との対応
| 節 | 書籍タイトル | IkinokoBattle での実装 |
|---|---|---|
| 8-1 | タイトル画面を作ろう | TitleScene + StartButton.cs・Exit.cs |
| 8-2 | ゲームオーバー画面を作ろう | GameOverScene + GameOverTextAnimator.cs(DOTween) |
| 8-3 | アイテムを出現させよう | Item.cs・OwnedItemsData.cs・PlayerPrefs + JSON |
| 8-4 | ゲーム画面の UI を作ろう | Menu.cs・ItemsDialog.cs・LifeGauge.cs |
| 8-5 | スマホ向けの UI を作ろう | MobileOnly.cs・バーチャルパッド |
学習ポイント
| # | 学習ポイント |
|---|---|
| ① | Canvas の Render Mode と CanvasScaler で解像度を設定する |
| ② | Button.onClick.AddListener と SceneManager.LoadScene でシーン遷移する |
| ③ | DOTween で GameOver テキストをアニメーションさせる |
| ④ | JsonUtility と PlayerPrefs でアイテムデータを端末に保存する |
| ⑤ | Time.timeScale = 0 でポーズ、= 1 で再開する |
| ⑥ | Instantiate で ItemButton スロットを量産し Toggle と連携する |
| ⑦ | fillAmount と WorldToScreenPoint でライフゲージを 3D キャラに追従させる |
| ⑧ | MobileOnly でスマホ専用 UI を SetActive で切り替える |
第5回|Chapter 9 ゲームが楽しくなる効果を付けよう
記事ファイル: 09-IkinokoBattle_演出.md
書籍の 9-1〜9-3 に対応。BGM・SE・パーティクルエフェクト・ポストプロセスを扱います。AudioManager.cs・SettingManager.cs が学習の中心です。
書籍の節との対応
| 節 | 書籍タイトル | IkinokoBattle での実装 |
|---|---|---|
| 9-1 | BGM や SE を追加しよう | AudioManager.cs・SettingManager.cs |
| 9-2 | パーティクルエフェクトを作成しよう | ヒットエフェクト Prefab + Instantiate |
| 9-3 | ゲーム画面にエフェクトをかけてみよう | Post Processing(Bloom・Color Grading) |
学習ポイント
| # | 学習ポイント |
|---|---|
| ① | AudioSource と AudioClip の基本設定(2D / 3D Sound) |
| ② | AudioMixer のグループと SetFloat で BGM ボリュームを制御する |
| ③ | Resources.LoadAll<AudioClip> で SE を辞書に一括読み込みする |
| ④ | DontDestroyOnLoad でシーンをまたいで AudioManager を存続させる |
| ⑤ | AudioManager.Instance.Play(clipName) で任意の SE を再生する |
| ⑥ | Particle System の Shape・Emission・Lifetime を設定してヒットエフェクトを作る |
| ⑦ | Post Processing Volume の Bloom・Color Grading でゲーム全体の雰囲気を調整する |
各記事と Chapter の対応まとめ
| 記事 | Chapter | 中心スクリプト |
|---|---|---|
| 第1回 | Chapter 5 | RoundLight.cs |
| 第2回 | Chapter 6 | PlayerController.cs |
| 第3回 | Chapter 7 | EnemyMove.cs・MobAttack.cs・Spawner.cs・CollisionDetector.cs |
| 第4回 | Chapter 8 | OwnedItemsData.cs・Menu.cs・ItemsDialog.cs・LifeGauge.cs |
| 第5回 | Chapter 9 | AudioManager.cs・SettingManager.cs |
関連シリーズ
- Unity本格入門 機能別解説編 — 機能(タイトル・昼夜・Input System・NavMesh・UI・オーディオ)ごとに切り分けた解説シリーズ
- IkinokoBattleで学ぶ OOP設計パターン — シングルトン・テンプレートメソッド等の設計パターン解説シリーズ
最終更新:2026年4月