(この記事の使用環境: Unity5.5.0f3 Personal、Windows10


今回は教材レビューです。やってみたのはこの本。普通の紙の本もKindle版もあります。自分はKindle版を買いました。


ほんきで学ぶUnityゲーム開発入門 Unity5対応
翔泳社 (2015-11-19)
売り上げランキング: 11,179


■ 感想
たっぷりUnity技術要素を盛り込んだ良書だと思いました。
ほかの親切な入門書をやってみた人への、次のステップとしておすすめ、という感じでしょうか。


※「ほかの親切な入門書」っていうのは、この2冊とか。どちらも自信をもっておすすめできます。

本というのはボリュームに制限のあるメディアなので、ひとつひとつ親切かつ詳細に説明されればその分全体のコンテンツ量が犠牲になるところもあります。実際、入門向けをうたった本の中には、本当に中身の薄い(得られるものの少ない)ものもありました。
その点、これはかなり中身のぎっしり詰まった中身の濃い一冊です。

章構成はこんな感じ。
  • CHAPTER 01 Unityでゲーム開発をはじめる前の準備
  • CHAPTER 02 Unityの基本操作をマスターする
  • CHAPTER 03 3Dシューティングゲームを作る
  • CHAPTER 04 3Dアクションパズルを作る


  • CHAPTER 05 ピンボールゲームを作る


  • CHAPTER 06 ラジコンカーゲームを作る

    ※上の動画は設定および使用アセットを変更しています。
     使用している車のアセットは「Car」(Cactuscreatives Pvt. Ltd.)です

  • CHAPTER 07 プラットフォーマーゲームを作る


CHAPTER01から07までの7章構成ですが、01と02で基本操作を学んだあと、03から07まで5つのゲームを作ります。

最初のCHAPTER03はまあ置いといても、残りの4つは十分遊べるレベルのものが作れます。しかも各章似たようなことの繰り返しではなく、それぞれ異なる技術要素を取り上げて解説してあり、「詰め込められるだけ詰め込んである」印象を持ちました。

やっていて、なんとなくUnity公式チュートリアルに近い雰囲気も感じました(いろいろ技術要素を詰め込んでいたり、進めるスピード感だったり)。

Unity公式チュートリアルは英語で(まあ当然といえば当然・・・)、おそらく各チュートリアルの作成者が異なっているせいもあってコーディングにもクセがあり、初心者が手をつけにくいものもけっこうあると思うんですが、本書は当然日本語で、コードも読みやすく、消化しやすいです。

■ 特長
  • Unity技術要素が数多く詰め込んであり、たくさんのことを学べる。おそらくほかの入門レベルの本にはなかなか登場しないであろうジョイントやエフェクトなども使っている。
  • サンプルがダウンロードできるようになっていて学習しやすい。途中から始めることもしやすいよう配慮されている。

■ 留意事項
  • Amazonのカスタマーレビューにもコメントがあるが、やはり各技術要素やスクリプトの中身などに関して、解説は少なめ。理解を深めるため、知らない項目が出てきたら自分でUnity公式のマニュアルおよびスクリプトリファレンスにあたれるようにしておきたい(それさえできれば問題ないはず)。
  • いちおうスマホ(Android / iOS)向けのUI配置等についても少し説明されているが、基本はPC向けのビルドSettingで進められるので、すぐにスマホアプリを作りたい!という目的には合致しないかも(そういう人には上で紹介した「和尚本」を薦めます)。
  • obsoluteな関数・変数(Unityのバージョンアップに伴い廃止されたもの)が複数個所で使用されている。ただしエラーで実行不能ということにはならなかったので致命的ではない。Visual Studioにワーニングメッセージとして「代わりに××を使え」という案内が出るので、気になる場合はそれに従えばよい。

■ バージョン違い等により設定を変える必要のあった項目(または誤記と思われる箇所や、変えたほうが望ましい動作をしそうな箇所)
(自分の使用環境: Unity5.5.0f3 Personal、Windows10)
  • LESSON11の 「9 環境光線を調整する」で、Ambient ColorのRGBは0~255の範囲ではなく、(自分の環境では)0~1の範囲で設定するようになっていた。
    → 255で割った値をセットした。
  • LESSON17の「7 タイトルロゴを表示する」で、[MenuController]→[OnClickMenuButton(string)]を選択するには、MenuController.csを開いてOnClickMenuButton()にpublic修飾子をつけてやる必要があった。また、引数に指定する文字列が「State01」となっているが、「Stage01」を指定する必要がある。
  • シーン遷移で移った先のシーンでライティングがうまく機能しなかった(この現象はこの教材に限らず発生するので、Unityの既知の不具合かも)。
    → ライティングをBakeすることで解決できる。この記事 参照。
  • LESSON18の「7 FlipperLオブジェクトにFlipperスクリプトを追加する」で、そのまま動かすとFlipperの動きが上下さかさまな感じで、ボールを打ち返せない。Flipper.csの28行目の「js.targetPosition = pressPos」 にマイナスを掛けて、「js.targetPosition = -pressPos」としたところ、正常に動作した。
  • (バージョン差異)LESSON20の「3 BallTrailMatマテリアルの設定を行う」で、Unity5.5ではTrail Rendererに「Start Width」「End Width」という項目はなく、カーブの任意の地点にキーを追加して値と接線の形状を決めることができるようになっている。(始点の)Widthに1.0をセットした後、カーブの横軸1.0の地点(終点)にAdd Keyし、値を0.3にセット、始点・終点それぞれのKeyで「Both Tangent」を「Linear」にセットして対応した。Colorの設定方法も異なっている。
  • LESSON22でインポートする車の3DモデルがすでにAsset Storeに存在しない(他の教材でもよくあること)。代わりの車のモデルとして、Asset Storeから「Car」(Cactuscreatives Pvt. Ltd.)という無料アセットをダウンロードしインポートした。
    モデルが異なると設定する座標情報も変わるので少し苦労した。設定する座標情報だけでなく、「車のどこの部分にあわせて設定する」などの説明があれば助かったかも。
    また、各ホイールコライダーの値は適当に変更したほうがよさそう。そのままでは走行が安定しない。自分はMass(ホイールの重さ)の値や、Sideway Friction(横方向の摩擦)のStiffness等の値を大きく設定してみた。
  • LESSON24の「7 モバイル機器向けに前進・後退のボタンを作成する」で、Buttonの座標の設定はアンカー座標の設定を先に行う必要がある。また、「BackButton」のEvent TriggerのPointer DownとPointer Upにはそれぞれ「OnBackButtonPressed()」「OnBackButtonReleased()」を指定する必要がある(LESSON27でそのように指示があるが)。
  • LESSON27では、Directional Light > Light の影のStrengthをデフォルトの1ではなく、0.5以下に下げておくのがよい。この設定を変えておかないと、すぐに山の影の真っ暗なゾーンに入り、実質操作不可能になる。

今回は以上です。