RSSWordPress.org今回からは、前回の最後に登場した『function_pickup』ユニットのユニットフローを見ていきます。『function_pickup』ユニットには『物を持ち上げる』という処理が実装されています。function_pickupユニットを見ていきましょう。アセットブラウザから『vr_steam』->『models』->『functionality_pickup』の中にあるユニットを開きましょう。画像の赤四角のようなアイコンはユニットフロー単体を表しています。こちらのアイコンをダブルクリックして開くとユニットエディタとは異なるユニットフローを編集するための『FlowEditor』が開かれます。ユニットフロー以外の要素がなく、ユニットエディタを開く必要がない場合はこちらを開いてもいいかもしれません。して開かれた『functionality_pickup』のユニットフローが以下の画像です。非常に膨大な処理ではありますが、少しずつ進めていきます。今回、説明していく箇所は、以下の画像で赤・青・緑の枠の部分です。Spawned』から始まっていることからわかるかもしれませんが、ここでは一番最初に行うべき『変数の設定』を行っています。Update』にて常に行うべき処理が実装されています。Position』を使用して自分のワールド座標を取得し、その結果を変数『wand_current_frame_pos』に設定しています。変数『wand_current_frame_pos』は現在位置を表しています。Time』で取得した時間を除算、その結果をユニットが持つスクリプトデータの『wand_velocity』と変数の『wand_velocity』に代入しています。この値はコントローラの加速度を表しています。変数『wand_last_frame_pos』は直前のコントローラの位置をセットしています。Time』は前回の更新から今回の更新までの間に経過した秒数を返します。ここの計算は直前と現在のコントローラ位置を比較し、その差の分を経過秒数で割り、1秒あたりの加速度を計算しています。最後に、現在のコントローラ位置を変数『wand_last_frame_pos』にセットしています。『コントローラが特定のユニットに触れている間の処理』が実装されています。Trigger』というノードです。Trigger』ノードは『引数に指定したメッシュが特定の対象に触れた時』に呼ばれます。その際に触れているユニットなどを返します。これは、触れているユニットが目で見てわかるようにするための処理となっています。触れている状態かどうかのフラグもここで立てているため、ここまで実装できてようやく『物を掴む』処理の準備が整ったことになります。次回はいよいよ本題となる『物を掴む処理』について見ていきます。