書評『Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ』
概要
大きくPart1基本編とPart2応用編に分かれていて、Part1はロボットを操作して敵を倒すTPSゲームを作っていきます。
この書籍はTIPS形式を謳い文句にしていますがPart1はステップバイステップでゲームを作っていくチュートリアル形式としても使えます。実際に書籍通りに進めていくことでゲームが完成します。
Part2はポイントのみを押さえた、まさにTIPS形式になっています。ユニティちゃんを使ったサンプルでUnity5の技を学びます。
サンプルのソースはこちらからダウンロードできます。
かなりでかいです。
- [PART01] PART01_CHAPTER01.zip(0.97 GB)
- [PART01] PART01_CHAPTER02.zip(2.83 GB)
- [PART01] PART01_CHAPTER03.zip(1.42 GB)
- [PART01] PART01_CHAPTER04.zip(1.88 GB)
- [PART01] PART01_CHAPTER05.zip(1.67 GB)
- [PART01] PART01_CHAPTER06.zip(3.77 GB)
- [PART01] PART01_CHAPTER07.zip(1.50 GB)
- [PART01] PART01_CHAPTER08.zip(694 MB)
- [PART01] PART01_CHAPTER09.zip(463 MB)
- [PART01] PART01_CHAPTER10.zip(1.50 GB)
- [PART01] PART01_CHAPTER11.zip(1.55 GB)
- [PART01] PART01_CHAPTER12.zip(8.47 MB)
- [PART02] PART02_CHAPTER01.zip(983 MB)
- [PART02] PART02_CHAPTER02.zip(522 MB)
- [PART02] PART02_CHAPTER03.zip(843 MB)
- [PART02] PART02_CHAPTER04.zip(605 MB)
- [PART02] PART02_CHAPTER05.zip(684 MB)
Part1 基本編
Part1ではロボットを操作して敵を倒すTPSゲームを作成します。
マップを作る
3DオブジェクトのTerrainをベースに地面を作成します。
地面のテクスチャを選択して、ペイントソフトのブラシのようにテクスチャを塗っていきます。
凹凸をつけるブラシで地面を持ち上げて丘や山を作ります。
木や草花を配置します。また無料のアセットを利用して空を設定し、遠くには霧をかけます。
これで戦いの舞台ができました。
プレイヤーを動かす
プレイヤーとなるロボットが登場します。
モデルをインポートして、Sceneに表示させます。
CharacterControllerをセットして当たり判定を設定します。またスクリプトを使用してキーボードやゲームパッドなどでコントロールできるようにします。プレイヤーは前後左右移動と回転、ジャンプができます。
メインカメラがプレイヤーを追随するようにします。またカメラの向きを自分で上下させることができます。
プレイヤーが舞台からはみ出さないように四方に見えない壁を設置します。
Animatorを使ってプレイヤーにはアニメーションをセットします。
弾を撃つ
スクリプトを使って弾を発射できるようになります。弾は3D ObjectのSphereをベースに弾を作ります。最終的にはビームの形になります。
球は地面にぶつかるか一定時間経つと自動的に消えます。何かにぶつかると爆発のパーティクルを表示します。
敵キャラクターを登場させる
敵がでてきました。敵はスクリプトを使って常に自分の方を向くようになります。
敵も弾を撃ちます。敵の弾はプレイヤーにはぶつかると爆発して消えます。
敵は一定の距離に近づくと攻撃してきます。
プレイヤーの弾で敵を攻撃できるように敵にBox Colliderをセットします。敵は体力があり、何発か弾を当てないと破壊できません。
敵をロックオンする
敵をロックオンします。ロックオンするとSlerpを使ってスムーズに敵の方向を向きます。
敵が一定距離に入ったら自動でロックオンするサーチモードも追加されます。スクリプトで制御します。
ユーザーインターフェースを作成する
SceneにCanvasを設置して、敵の位置が表示されるレーダーを作成します。真上からの視点で自分の向きがかわるとくるくる回ります。レーダー上には敵の位置がマーカーで表示されます。
プレイヤーと敵に体力が表示されるようになりました。残りの体力で色が変わります。またロックオン時にカーソルが表示され敵との距離も表示されます。
ブーストを作る
ブーストで高速移動ができます。ブースト中はスクリプトで移動速度を2倍にします。ブースト中のエフェクトやモーションも追加されました。
ジャンプキーを押し続けると垂直に上昇するようになりました。
ブーストするとブーストポイントが減ります。ブーストポイントがなくなるとブーストや上昇はできません。
ブーストや上昇は疑似的な慣性をつけスムーズに移動させます。
サウンドをつける
ゲーム中にBGMが流れるようにします。またショット時や敵の爆発時に効果音がなるようになりました。
レベルデザインをする
敵がいっぱい出るようになります。
時間がたつと敵が出現するようになりました。時間経過によって敵の行動がより攻撃的になります。
シーンを遷移させる
スタート画面とフィニッシュ画面を作成します。
タイトル画面でボタンを押すとゲーム画面に遷移します。
一定の条件でゲームが終了します。勝利か敗北かによってリザルト画面が変わります。
演出を強化する
エフェクトが強化します。
敵が爆発すると画面がゆれて発光します。
体力が減っていくと画面にノイズが入ります。
戦いに勝利するとカメラのアングルが変わります。
覚えておくと便利な基本機能
その他の小技です。オブジェクトの検索方法やズームイン、オブジェクトを中心にカメラを動かすなどUnityエディタの便利な使い方が紹介されています。
Part2 応用編
Part2ではユニティちゃんを使って、便利な技を学びます。
キャラクターを制御する
キャラクターの操作方法について便利な技が紹介されています。
- モーション中にモーションをキャンセルして次のモーションに切り替える
- キャラクターの視界内にターゲットがいるか判定する
- 当たり判定をキャラクターの特定部分に追加する
- ターゲットへの向きを補正する
- 移動している方向に回転する
- スワイプでアクションする
- RigidBodyで物理挙動の影響は受けないが、他のオブジェクトとはぶつかることができる
フィールドとカメラを工夫して利用する
フィールドとカメラを利用するうえで便利な技が紹介されています。
- Navigationを利用して移動できる範囲を制限する
- Navigationを利用して特定の地点を巡回する
- カメラを使用してミニマップを表示する
- マップ用の画像を読み込みスクリプトで自動的にゲームオブジェクトを配置する
- シーンの大まかなサイズを取得する
基本的な動作や設定を制御する
Unity内部のシステムの機能を利用してゲームをコントロールする技が紹介されています。
- 一時的にゲームを停止する
- ユーザーがスライダーで音楽と効果音のバランスを設定できるようにする
- ユーザーが押したキーのコードを取得する
- テキストの多言語化
- イメージの多言語化
- キャラクターが順番に行動するターン制ゲームの仕組み
ユーザーインターフェースを工夫する
ユーザーインターフェースに関する技が紹介されています。
- ゲーム画面の縦横比を固定する
- キャラクターにライフメーターを表示する
- モバイルデバイス用のバーチャルパッドで移動する
- UIをゲームパッドとポインターのどちらでも選択できるようにする
ゲームの演出を工夫する
ゲームの演出に便利な手法が紹介されています。
- UIの表示にマスクをかけて部分的に透明にする
- 跳ねるメッセージを表示する
- モーションに合わせて効果音を再生する
- セリフの再生中にBGMの音量を下げる
感想
Part1はチュートリアル形式で進めることができます。モデルなどの素材以外はすべて書籍上に記載されていることのみで進めていくことができるので実際に手を動かしながら作成できます。私も実際に作成して完成させることができました。
ソースの一部のみが書籍に記載されているタイプだとどうしてもサンプル開いて実行してそれで終わり、になってしまうことが多いです。その点この書籍だと手順通りに従っていくだけとはいえ実際に自分の手で完成できるので自信がつきます。
Part2では実際にゲーム作りをするときにこの機能はこうやればできるんだ、と参考になるでしょう。たださすがにページ数の関係もあるでしょうから、ボリューム不足な感はします。
最初は習うより慣れよでチュートリアル形式で自分の手で完成させることができる、という点でよかったです。