UE4

UE4でVR空間にカノジョを錬金 22日目

UE4でVR空間にカノジョを錬金する Advent Calendar 2017 22日目の記事です。

12/1~25日までに一人で、UE4を用いてサ○○レッスンとかVR○○ジョっぽいゲームを作って仮想彼女を生み出すことにチャレンジします。

今回は呼吸処理、吐く処理を実装していきます。

吐くロジック

息を吐くように見せるアニメーションの関数説明に入ります。

image.png

今回は下にあるSet Exhaleメソッドについての説明です。

Set Exhaleメソッド

扱う変数が微妙に違うだけで、大体SetInhaleメソッドと一緒になります。

こちらが関数の全体図です。

image.png

一番下が吐くアニメーションの時間を判定しています。

image.png

呼吸の時間は以下のように計算しています。

exhale * durationRate + 0.5

0.5は今回実装した時に自然に呼吸させるように見せるために必要な調整時間です。
これを吐くモーション開始してからの経過時間を計り、もし過ぎたら待機状態にフェーズを移行するようにセットします。

続いて各ボーンの回転値をセットします。
今回は息を吸って膨らむようにボーンを回転させた値から、ほぼ元の位置に戻すように計算するメソッドを挟んでいます。

image.png

ボーンを回転させるのは縦方向なので、ボーンの向きを見て正しく動くように値をセットします。
今回、ユニティちゃん、グレイちゃん共にX(Roll)が縦方向に回転するので、Xにセットしています。

回転値はGetExhaleTimeという関数を作成して取得しています。

※関数名が色々オカシイのは許してください。20日目に書いた記事と同様の理由になります。
※よい子の皆さんはちゃんと適切な関数名にしましょう。

本日はここまでです。

次回

次は吐くのに必要な回転値を求める計算式を書きます。