2D Loguelike の続き
03.Creating the Tile Prefabs
単純作業。
先にどういうゲーム作るか考えた時点で、タグとかレイヤーとかを上手く定義しておくといいんだろうな。
何となくで置いていって、後から定義して直すとかやりがちだし。
04.Writing the Board Manager
へぇ、C#ってこういう書き方できるのか。
using Random = UnityEngine.Random;
あと、敵の配置数を (int)Mathf.Log(level, 2f) としてるけど、僕はどうにも数学弱いのでこういう発想がパッと出てこないのが残念。
まぁイディオムとして覚えとく、ぐらいしかできんかな。
しかしなんだな、コード書いてるところはビデオチュートリアルだとかったるいな。
05.Writing the Game Manager
BoardManagerのInspectorで複数のプレハブをセットしていく時に、ちゃんとLockボタン押しておかないと、フォーカスがプレハブの方に移っちゃうよ。
地味にこの機能、うっかり忘れてたりする。
スクリプトの項なんざ見なくてもいいかな、と思ったりしたけど、やっぱりこういう細かなTipsってあるもんだ。
06.Moving Object Script
ちょっと気になったこと。
protected abstract void OnCanMove <T> (T component) where T : Component;
って
protected abstract void OnCanMove (Component component)
と同義なんだろうか?
移動開始位置と終了位置のLinecastで当たり判定取る際に、boxColliderを無効化してるのは何故なんだろう。
と思ったけど、ああ、自分自身と当たっちゃうからか。
07.Creating Destructible Walls
へぇ、複数のプレハブに一括でAddComponentとかできるんだ。
08.Player Animator Controller
AnimatorのTransitionの項目は、4.6と5では違うんだなぁ。
4.6だとTransitionsを追加した際にデフォでConditionsにExitTimeとかいう項目が設定されてるけど、これはどうやら時間経過での遷移みたい。
ちなみに同秒数のExitTimeで遷移する状態が2本あったらどうなるか試したけど、ランダムに遷移したりせず最後に定義したもの(?)にだけ遷移するようになった。
09.Writing the Player Script
適切にレイヤー指定しとくと、当たり判定時に何から優先的に判定するか、とかやるのに都合よさそう。
10.Writing the Enemy Script
0比較じゃなくてflaot.Epsilonと比較するのは何故なんだろう。
float使う場合の流儀なんだろうか。
11.Enemy Animator Controller
特になし。
12.Adding UI & Level Transitions
uGUIをちょっと触った感じでは、NGUIよりレイアウトとかがやりやすそうな気はする。
13.Audio and Sound Manager
C#は params で可変長引数を定義できる。
ピッチをプラマイ5%変動させるのは、同じ効果音を連続して鳴らす時の単調さを軽減させるものらしい。
AudioClipを2つ登録するにあたり、別々のシンボルにするより配列にした方が楽じゃね?とか思ったんだけど
Wallプレハブを8つまとめて選択して、一括でAudioClipを紐付ける操作は配列だとできないんだな。