本日はUnityの技術調査枠です。
Unity Learnのビジュアルスクリプティング学習を試した内容を記事にします。
今回はビジュアルスクリプトを使った基本プログラムの続きを試します。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
[コンピュータの表示速度 (秒 / フレーム)]を取得する
実行トリガーとしてOn Updateノードを追加します。
Graphウィンドウの何もないところを右クリックしてOn Updateを検索して追加します。
次に実行トリガーが呼ばれたときの[コンピュータの表示速度 (秒 / フレーム)]を取得するため、Get Delta Timeノードを利用します。
Graphウィンドウの何もないところを右クリックしてTime: Get Delta Timeノードを検索して追加します。
Get Delta Timeノードは前回のUpdateの実行フレームから今回のUpdateの実行フレームまでの秒数を返します。
以下のTime.deltaTimeと同じ機能を持ちます。
docs.unity3d.com
[Update実行時の回転度数 / フレーム]を計算する
以下の計算式に必要な数値を準備できたのでビジュアルスクリプト内で[Update実行時の回転度数 / フレーム]を計算します。
[1秒あたりの回転度数 / 秒]×[コンピュータの表示速度 (秒 / フレーム)]=[Update実行時の回転度数 / フレーム]
乗算を行うためにMultiplyノードを追加します。Multiplyノードにはいくつかのオーバーロードが存在します。
今回はFloatの数値を乗算するMultiply (in Math/Scalar)ノードを検索して追加します。
Time: Get Delta Timeノードの出力ポートをクリックドラッグしてMultiplyノードのAまたはBの入力ポートに接続します。
Get Variableノードの出力ポートをクリックドラッグしてMultiplyノードのもう一方の入力ポートに接続します。
算出した値を回転に適用する
最後に算出した値を回転に適用します。
オブジェクトを回転するTransform:Rotate (X Angle, Y Angle, Z Angle)ノードを検索して追加します。
On Updateノードの出力ポートをクリックドラッグしてRotateノードの実行トリガーに接続します。
Multiplyノードの出力ポートをクリックドラッグしてRotateノードのX Angleの入力ポートに接続します。
これでOn Updateのタイミングで[Update実行時の回転度数 / フレーム]がCubeオブジェクトに適用されるようになりました。
動作を確認する
シーンの再生ボタンを押して動作を確認します。
追加のCubeオブジェクトが回転し始めます。
実行中、追加のCubeオブジェクトのInspectorビューから変数の値を変更して回転のスピードを変更することができます。
ディスプレイ環境にかかわらず、設定した1秒あたりの回転度数で回転します。
次回はビジュアルスクリプトを使って入力に応じた分岐を行うプログラムを試します。
bluebirdofoz.hatenablog.com