MRが楽しい

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

Meshの環境作成チュートリアルMesh 101を試す その5(ビジュアルスクリプトを使って動画を再生状態を保持する)

本日はMicrosoftMeshの小ネタ枠です。
Meshの環境作成チュートリアルMesh 101を試した内容を記事にします。
今回はビジュアルスクリプトを使って動画を再生するボタンを作成する手順の続きです。

前回記事

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

ボタン押下時にビデオの再生と停止を切り替える

今回作成するボタンはビデオ停止時にボタンを押すとビデオの再生され、ビデオ再生時にボタンを押すとビデオが停止するようにします。

ボタン押下を検出する

ボタン押下時にOn State ChangedからTrueが出力され、ボタン押下が終わるとFalseが出力されます。
初めに押下時のTrueのときのみビデオの操作を行うようにフローを制御します。

On State Changedの出力ポートをクリックドラッグしてNodeメニューを表示します。
IFノードを選択して追加します。

IFノードが追加されたらOn State ChangedのOut 0ノードとIFノードの入力ノードを接続します。
これでIFノードの出力ノードから入力された値を判定できるようになります。

IFノードのTrue出力ポートをクリックドラッグしてNodeメニューを表示します。
Set Object Variableノードを選択して追加します。

再生状態を保持する

次にボタン押下時のビデオ状態に合わせて再生と停止を切り替えるため、再生状態を保持する変数を作成します。
[Blackboard]パネル内の[Object]タブを開き、isPlayingという名前の変数を[+]ボタンで追加します。

ビデオの再生(True)/停止(False)状態を保持するため、作成された変数の[Type]を[Boolean]に設定します。
[Value]にチェックを入れず、初期値がFalseになるようにします。

ノードの編集画面に戻り、先ほど作成したSet Object Variableノードのプルダウンを開きます。
作成したisPalyingの変数を選択します。これでisPlayingの変数を変更する準備ができました。

isPalyingの変数はボタン押下ごとに再生(True)/停止(False)を切り替える必要があります。
その時点のisPlayingの状態を取得するため、グラフ内で右クリックからGet Object Variableノードを選択します。

ボタン押下ごとにisPlayingの状態を反転してisPlayingに反映することで、再生->停止、停止->再生の状態を切り替えます。
Get Object VariableノードにもisPlayingを指定し、その出力ノードにNegateノードを設定します。

最後にNegateノードの出力ポートをSet Object Variableノードの入力ポートに接続します。
これでボタン押下が発生するごとに、isPlayingの再生->停止、停止->再生の状態切り替えが行われるようになりました。

再生状態(isPlaying)の変数の切り替りを検知する

次に再生状態(isPlaying)の変数の切り替りを検知するフローを作成します。
グラフ内で右クリックからGet Object Variableノードを選択します。

Get Object VariableノードにisPlayingを指定し、その出力ノードにOn State Changedノードを設定します。

更に先ほどのボタン押下と同様にIFノードを接続し、その出力を受け渡すようにします。
これで再生状態(isPlaying)の変数の値の切り替わりを検知して状態のTrue/Falseを判定するフローが作成できました。

次回はこのIFノードを使って再生(True)に切り替わったときにビデオを再生し、停止(False)に切り替わったときにビデオを停止する処理を記述します。
bluebirdofoz.hatenablog.com