見出し画像

Unity物理演算,シミュレーション中にサクッと値を確認したい!

Unity(ゲームエンジン)の進化はすごいですね.カーレーシングが思い浮かべやすいですが,それ以外でも様々な物理挙動をシミュレーションできます.Unity Japan の方にお会いしたこともありますが,博士号取得者もたくさんいらっしゃってプログラミングだけでなく,数学的素養も非常に高いと感服させられます.

Unity for Industryと銘打って,ゲーム業界だけでなく産業界,特に製造業における活用が展開されている.
UnityやUnreal Engineが大好きな学生さん,ゲーム業界だけでなく産業界での活躍も視野に入れて就職活動励んでみてはいかがでしょう!?

Unityを使って様々なシミュレーションを実行した時,画面での挙動を確認するだけでなく,オブジェクトの動きを数値で把握したい時もありますよね.

1.コンソールログで数値確認

Debug.Log(Time.time.ToString("f2") +"変数名:"+ 変数名.ToString("f2"));
これをvoid Update()の {  } 内に記述することで,実行中にConsoleタブ下に表示される.

2.ファイル出力

①シーン内に空のオブジェクトを作成して,名前をSaveCsvに変更する.そして,Start()関数内に以下を記述する.
SaveCsv = GameObject.Find("SaveCsv");
sw = new StreamWriter(@"SaveData.csv", true, Encoding.GetEncoding("Shift_JIS"));
string[] s1 = { "Time", "変数名" };
string s2 = string.Join(",", s1);
sw.WriteLine(s2);

②Start()関数の下(外)に以下の関数を追記する.
public void SaveData(string time, string 変数名){
string[] s1 = {time, 変数名};
string s2 = string.Join(",", s1);
sw.WriteLine(s2);}

③Update()関数内に以下を記述する.
SaveData(Time.time.ToString("f2"), 変数名.ToString("f2"));

すると実行中の変数のデータがSaveData.csvファイルとして生成される.

3.Grapher

UnityアセットストアにあるGrapherを用いる.$9.9です.
これまじで便利です!
Update()関数内に以下を記述するだけです.
Grapher.Log(変数名1, "変数名1", Color.yellow);
Grapher.Log(変数名2, "変数名2", Color.green);
Grapher.Log(変数名3, "変数名3", Color.red);
あとは,シミュレーション実行中にメニュー>Window>Grapher(ショートカットキー:⌘+G)を押すだけ.

Grapher(⌘+G)

実行中に,任意の変数がグラフ(スクロール)で確認できるのです.しかも,拡大・縮小したり,マウスカーソルを当てると,値がポップアップ表示されます.
2項のファイル出力で示した様な面倒なスクリプトを書くことなく,Grapherからファイル出力できます.

もし,値が0で返ってきている(線が表示されない)時は,以下をチェックしてみてください.
Vector2の場合は,変数.x のように成分を指定する.
doubleの場合は,float 新変数 = (float)変数 として型変換する.

これで物理挙動の正確さが数値で確認しやすくなりました!
ますます楽しい,Unityを用いた物理シミュレーション!


この記事が気に入ったらサポートをしてみませんか?