今月のFX成績をいつもの損益可視化を使って振り返る。
先月まで以下。
Unityでミニマップの作る方法メモ。
凝ろうとしなければ簡単に作れる。
ミニマップ表示を変更したりするにはレイヤーを分けて動きをリンクさせたりする必要がある。
Unityスクリプトで混乱しやすい gameObject と transform の挙動を覚書。
バージョンは5.5.0b8。
シーンはまっさらの状態から Empty の A1, A2 を追加したものを使う。
まず引数にGameObjectが入っているか確認する。thisとか入れるとコンポーネント(スクリプト)が削除されてしまう。
思い通りに動いたり動かなかったりするときはタイミングの問題かもしれない。
Destroyは現在のフレーム終了後、次のフレーム開始前に実行される。
そのためDestroy直後に親オブジェクトから子オブジェクトを数える処理なんかを入れてもDestroy前の結果が返ってくる。これを回避するためにコルーチンを使う。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//Actionに必要 using System; ... //親ノードから子ノードを数える private void CountNode(){ ... } //子ノードを消す public void Delete(){ Destroy(some game object); StartCoroutine(Delay(1,CountNode));//1フレーム後に実行 } //fフレーム後に関数実行 IEnumerator Delay(int f,Action act){ for(var i=0;i<f;i++)yield return null; act(); } |
これはDestroy後の処理を1F遅らせているけど、Destroy自体を遅らせるときは第2引数に秒数を入れる。遅らせたDestroyのさらに後に処理を入れるならオブジェクトに OnDestroy() を定義してタイミングをはかる必要がある。
1 |
Destroy(Object obj, float t = 0.0F); |
メッシュをスクリプトで変更できるようなので円弧と筒を作るスクリプトを作成した。
色はRGBAで指定してるけどアルファ値は反映されない。
シェーダを変えてもうまくいかないので SpriteRender とかの設定をしてないと意味がないのかもしれない。
完全な透明にしたければ MeshRenderer を削除すれば同じことだと思う。
動く床を作ったけど上に載ったボールが微動だにしない。
そもそも物理演算周りもよくわかってないので色々試して解決したので覚書きします。
ググっても情報ないのは調べ方が悪いのか、需要がないのか、当たり前の話だからなのか。