Unity3D
Unity
Unity2017

Unity「Tanks tutorial」メモ

はじめに

これは、Unity公式のチュートリアル「Tanks tutorial」を利用して、Unityの学習を行おうとした際に発生した問題等を書き留めておくメモです。
もっといい方法があるかもしれないです的備忘録。

環境

  • windows 10 Pro
  • Unity 2017.4.0f1

腕前

  • unityの初心者用の本と実践に近い本を一通り呼んだ程度。このチュートリアル完了後、一本簡単なゲームを作る予定だった(すでに作成作業しているので過去形)

サンプルを開く前に

プロジェクトを開く際のLearnのタブでサンプルアセットをダウンロードして開くと、
自分の環境の場合だとwindowsのテンポラリーディレクトリに開いてしまい、
プロジェクトの保存ができなくなってしまったので、
いったん空のプロジェクトを作成し、
そこにアセットストア経由でサンプルアセットをインポートするとうまくいきました。

バージョン違いによる差分吸収メモ

バージョンによっては該当する項目の名称が変わったりする場合があるので、ページごとにメモ

Baked GIの削除(チュートリアル動画 シーン設定 4:40あたり)

Mixed Lightingの「Baked Global Illumination」のチェックを外すことにより、使用しないようにすることが可能のようです。

Precomputed Realtime GIの設定(チュートリアル動画 シーン設定 4:50あたり)

雰囲気、lightmapの設定に統合されている模様。
このチュートリアルでは低ポリゴン向けのために設定しているため、
Lightmapping Settings > LightmapParametors
を、「Default-LowResolution」に変更して様子を見ることで暫定対応しました。

ambient colorの設定(チュートリアル動画 シーン設定 6:20あたり)

ライティング設定でambient colorを設定しようとすると、
HDR Colorのカラーピッカーを使用するようになるようで、
説明通りの値を設定すると別の色になってしまう。
HEXの値(#483E71)で設定。通常のカラーピッカーを使用する設定はどこだろう。

ライティングのbaked実行(チュートリアル動画 シーン設定 7:00あたり)

名前が変わっただけ。「Generate Lighting」をクリック。

Emissionの設定(チュートリアル動画 タンクの作成と制御 17:20あたり)

雰囲気設定方法が変わっただけかと思ったら、直進の時のみパーティクルをださない状態になる。
「Rate over Distance」のみに値を設定し、
RightDustTrail > Emitter Velocity
を、「Rigidbody」から「Transform」に設定することで直進カーブ両方とも動くようになる。
あくまでrigidbodyを使用しているのは親のタンクオブジェクトのみであり、
rigidbody不使用のパーティクルオブジェクトは、親の移動による単なる位置の移動だから動かなかったと思われる。

パーティクル削除(チュートリアル動画 砲弾の作成 22:37あたり)

unityのバージョンアップにより、
m_ExplosionParticles.duration によるパーティクル終了時間の取得が非推奨になりました。
ParticleSystem.main.durationという形で取得することになる。
(_Complete-Assetsディレクトリ以下の完成ソースは修正済み。完成するまで気が付きにくい。)
参考:http://cycling.hateblo.jp/entry/2017/03/17/110939

Sceneの呼び出しが動画と違う点について(チュートリアル動画 ゲームマネージャー 35:36あたり)

unityのバージョンアップにより、
GameManagerクラスで使用しているApplication.LoadLevelでの呼び出しが非推奨になったため、書き換えた模様。
また、それに伴い、UnityEngine.SceneManagementが必要になるため、GameManager.csの三行目のコメントアウトを外さなくてはいけない。
このチュートリアルの下部にある日本語によるソース説明は修正前のソースのため注意。
(_Complete-Assetsディレクトリ以下の完成ソースも修正済み)
参考:http://ninagreen.hatenablog.com/entry/2016/01/13/033413

他、自分用メモ(本で触れなかったようなことについて調べたり、これメモしておこうと思ったことへのメモ)

  • コンポーネント経由でそのコンポーネントが付与されているオブジェクトに対してgetComponentが使用できる。
  • サウンドミキサーコンポーネントの、Duck Volumeおよびsendエフェクトについて。
    • Duck Volume:sendにより指定されているサウンドのグループの音が出ている間、閾値の音量まで下がる
    • send:音がなっている情報をsendにて指定したグループのエフェクトに送信する。今回の場合は、sendが設定されているグループの音が鳴っている間、指定したグループのDuck Volumeにより指定したグループの音量を下げている。

完走してから

初心者向けの本を読んで理解しただけのわりには、中級と指定されているこのチュートリアルも理解できたので、もうちょっと上級のチュートリアルとか進めてもいいのかもしれない。