MRが楽しい

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

Unity Learnのビジュアルスクリプティング学習を試す その9(ビジュアルスクリプトを使ってSwitchを用いた制御を行う)

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

前回記事

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

入力されたキーを取得する

前回作成したスクリプトを改修して、更にSキーが押下されているタイミングではCubeを下降させるようにしていきます。

入力されたキーを文字列で取得し、それをSwitchノードで判定するようにします。
SpaceキーをチェックするGet Keyノードを右クリックから[Delate]で削除します。

Graphウィンドウの何もないところを右クリックしてInput: Get Input Stringノードを検索して追加します。
本ノードは押されたキーをチェックして、そのキーストロークの文字列を出力します。

Switchで分岐を判定する

次のIfノードを右クリックから[Delate]で削除します。

Graphウィンドウの何もないところを右クリックしてSwitch On Stringノードを検索して追加します。
本ノードは入力された文字列に応じてフローを分岐することができます。

On Updateノードのフロー出力をSwitch On Stringノードのフロー入力に接続し、Get Input Stringノードの値出力をSwitch On Stringノードの値入力に接続します。

次に以下の設定を行ってSwitchの分岐を設定します。
・Ignore Caseにチェックを入れる
・Optionsで+アイコンを選択して空白(Space)を入力する
・Optionsで+アイコンを選択してWを入力する
・Optionsで+アイコンを選択してSを入力する

これでSpace, W, S, それ以外のキー入力に応じてフロー分岐を行うSwitchノードが作成できました。

オブジェクトを下降させる

オブジェクトを下降させる処理フローを新たに作成します。
上昇フローのGet Upノードを使っていた箇所をVector 3: Get Downノードに差し替えたフローを作成します。

Translateノードに値を引き渡すためのGet Variableノードを別途作成し、上昇と下降ノードからは実行フローのみを接続しておきます。

今回はキーによる分岐を利用するため、上昇フローのGet KeyノードとIfノードは不要になります。

フローに応じた処理を接続する

SwitchノードのSpaceの出力ポートにRotateノードに接続します。
これでSpaceキー入力時はCubeオブジェクトが回転するようになります。

次にSwitchノードのWの出力ポートにオブジェクトの上昇フローを接続します。
これでWキー入力時はCubeオブジェクトが上昇するようになります。

最後にSwitchノードのSの出力ポートにオブジェクトの下降フローを接続します。
これでSキー入力時はCubeオブジェクトが下降するようになります。

最終的に完成したGraphは以下のようになります。

動作を確認する

シーンの再生ボタンを押して動作を確認します。
何もしない状態ではCubeオブジェクトは移動しません。

Spaceキーを押下するとCubeが回転し、Wキーを押下するとCubeが上昇、Sキーを押下すると下降したら成功です。