Unityはじめの第一歩
無限に登場するまるとらをクリックしたら、隣接する同種を巻き込んで消滅するツムツムクローンを製作中。ツムツムやってことないけどルールは多分同じ。クリックしても隣接虎が消えない時があるんだよね、再現性は無くランダム。隣接判定にミス?クリックしたら消える虎たちをマウスオーバー時に半透明処理を施すと…。謎の明滅を開始。わけが分からなくて解決できず困った。
原因はわかった。Unityから呼び出される関数の順番によるエラー。各オブジェクトのUpdateが呼び出される順序は原則ランダム。優先順位が付けられるが、クラス単位での順位。インスタンス同士の順序はどうやるんだろ。相互に依存していて情報をやり取りしているとまずい場合があるね。通常のUpdateと物理エンジンのUpdateは別物だったことも原因。文字で説明すると面倒なので省略。解決したからOK
虎消滅時に小さい虎を多数登場させて分裂消滅させようと思ってパーティクル機能のお勉強を開始。パーティクルにアニメーションを設定できるから、絵の切り替えなしアニメを設定したら想定の動作をするはず、っていうか動作成功。虎の種類によって絵を切り替えようとしたところで絶望。startframeの数値を変えればできるはずだが、設定が反映されない。コードからの変更は出来ないの?まったくわからないから放置。最悪、手間ひまかけて数十個のプレハブに個別設定すれば解決…。うわめどい。
パーティクルは無視して次へ。
虎消滅後即座に他の虎たちが落下するけど、消滅時はすべてを一時停止したいよね。物理エンジン止めると全部止まってあかん。個別に止める方法あるかな?
Time.timescaleを変更せずにRigidbodyの一時停止&再開処理【Unity】【拡張メソッド】 – (:3[kanのメモ帳]
あったわ。速度と回転量を保持して復帰かー。そりゃそうか。ついでにプロパティと拡張メソッドを覚えたぞ!
一時停止と再開が出来るようになった。コレを利用して、消滅時に演出を表示しつつスコア表示してからゲーム再開の処理を組み込んでみよう。switchや関数ポインタでゴリゴリ切り替えても良いが、C#ってコルーチン使えるよね?調べてみるべー
UnityのCoroutine(コルーチン)でできる事のメモ – テラシュールブログ
消えるときに一時停止させることに成功。効果音も鳴らせたし、最低限の機能は把握できたのかしら?シーン遷移時にデータの受け渡しはどうやるのだろう。
フォントが無いらしく、スタード画面でタイトル文字が表示されない。設定どこ?