MRが楽しい

MRやVRについて学習したことを書き残す

Unity Learnのビジュアルスクリプティング学習を試す その5(ビジュアルスクリプトを使った基本プログラムを試す)

本日はUnityの技術調査枠です。
Unity Learnのビジュアルスクリプティング学習を試した内容を記事にします。
今回はビジュアルスクリプトを使った基本プログラムを試します。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

環境に依存しない回転速度

On Updateノードはディスプレイの更新タイミングで処理が実行されるため、前回作成したスクリプトはディスプレイ環境によって回転速度が変化してしまいます。
今回は以下の計算式を使って、どんなディスプレイ環境でも一定の回転速度になるスクリプトを作成します。

[1秒あたりの回転度数 / 秒]×[コンピュータの表示速度 (秒 / フレーム)]=[Update実行時の回転度数 / フレーム]

新しいCubeを作成する

前回作成したCubeと違いを比較できるように、ビジュアルスクリプトを設定したCubeオブジェクトをもう1つ作成します。
Hierarchy欄で右クリックから[Create -> 3D Object -> Cube]を実行します。

作成したCubeオブジェクトにもInspectorビューのAdd ComponentからScript Machineコンポーネントを追加します。
また、そのままでは前回のCubeと位置が重なってしまうため、PositionのXに 2 を設定して少しズラしました。

これで比較用のCubeオブジェクトができました。
次にGraphを作成します。前回とは少し異なる手順でGraphを作成してみます。

新しいGraphを作成する

作成したVisualScriptフォルダに移動し、Projectウィンドウ上で右クリックから[Create -> Visual Scripting -> Script Graph]を実行します。
これでScript Graphのassetファイルが作成されます。

今回は作成したGraphファイルを「RotateSpeed」と名付けました。

GraphファイルをScript Machineコンポーネントの[Graph]項目にドラッグして設定します。
この手順だとあらかじめ作成しておいたGraphをScript Machineコンポーネントに流用することができます。

[Edit Graph]をクリックして[Script Graph]の編集画面を開きます。

1秒あたりの回転度数のObject変数を作成する

今回のスクリプトでは1秒あたりの回転度数をInspectorビューから設定できるようにObject変数を作成します。
[Blackboard -> Object]パネルから RotationDegreesPerSecond という名前を入力して[+]ボタンで変数を作成します。

[Type]を[Integer(整数)]、[Value]を[45]に設定します。これが1秒で45度回転する設定になります。
Object変数で作成したのでInspectorビューからも値を変更できるようになっています。

変数の定義の左端にある横棒アイコンをGraphにドラッグします。
するとGraphにその変数を参照するGet Variableノードが追加されます。

これで計算式の内の[1秒あたりの回転度数 / 秒]は取得できるようになりました。
次回は[コンピュータの表示速度 (秒 / フレーム)]を計算するフローを作成します。
bluebirdofoz.hatenablog.com