BLOGブログ

2018.01.19UE4UE/ VR

[UE4]VR内で、スライドドアを手動で開け閉めする方法

こんにちは。

以前、VR内で、回転式のドアを開け閉めする方法をご紹介したのですが、

[UE4] VR中にドアを手動で開け閉めする方法

今回は、同様の仕組みを用いて、スライドドアを開け閉めする方法をご紹介したいと思います。

スライドドアのBP以外の、基本的な構成は全て上記の記事内容と同じなので、

スライドドアのBPの作成部分のみの解説となりますので、

それ以外の部分については、以前の記事を参考にしていただけると幸いです。

 

(1)BP_Door_Slide

BP_Door_Slideの基本的な構成は、以前作成したBP_Doorのものを引き継ぐことになるので、

BP_Doorの子クラスとして、作成します。

1.BP_DoorのChildBlueprintClassの作成

BP_Doorを右クリックして、「Create Child Blueprint Class」を選択し、

BP_Door_Slideという名称にします。

これで、以前BP_Doorに設定した変数やInterfaceは、

新たに追加せずに、そのまま利用することができます。

 

2.スライドドア用スタティックメッシュコンポーネント

BP_Door_Slideを開いたら、ドアフレームと、ドアプレート用のスタティックメッシュを、

それぞれセットします。

 

3.ボックスコリジョン

ドアハンドル位置を取得するための、ボックスコリジョンの位置を、

セットしたドアプレートに合わせて、調整します。

コリジョンプリセットは、今回はすでにDoorHandleとなっているため、

設定はそのままで問題ありません。

 

4.変数

BP_Door_Slideで、新たに追加する変数は下記の3つとなります。

  • HandleStartLocation・・・手が、取っ手を握った時点での位置を保存します。型はVectorとなります。
  • MoveMaxValue・・・スライドドアの移動の最大値を保存します。型はFloatとなります。
  • LastMoveValue・・・ドアから手を離した時点で、ドアが動いた値を保存します。型はFloatとなります。

 

5.関数

①MakeMaxMoveValue

内容としては、DoorPlateのバウンズのサイズから、

スライドドアの最大移動値を取得します。

 

②MakeVectorMoveValue

内容としては、ドアのY方向に対しての、

取っ手を握った手の移動量を取得します。

中身の説明は、下記画像のようになります。

 

③MoveSlideDoor

内容としては、②で取得した移動量を利用して、

ドアプレートを移動させるものとなります。

中身の説明は、下記画像のようになります。

 

6.イベントグラフ

最後にこれまで作成した変数、関数を用いて、イベントグラフに、ノードを配置していきます。

イベントは、下記の4つから成っています。

  • Event BeginPlay
  • Event Tick
  • Event Open
  • Event Close

①Event BeginPlay

Event BeginPlayでは、MakeMaxMoveValue関数をつないで、

ドアの最大移動値を取得します。

②Event Tick

Event Tickでは、Gateノードをはさんで、MakeVectorMoveValue関数と、MoveSlideDoor関数へつなげます。

③Event Open

Event Openでは、取っ手を掴んだ時の手の位置を保存します。

そして、GateノードのOpenへつなぎ、取っ手を握った時に、

Gateが開くようにします。

④Event Close

Event Closeでは、取っ手を離した時のDoorPlateの位置を、

LastMoveValueへ保存します。

そして、Gateを閉じます。

これで、BP_Door_Slideの完成です。

(2)マップへBP_Door_Slideの配置

マップへ、BP_Door_Slideを配置します。

プレイを開始し、ドアの取っ手の位置で、コントローラーのトリガーを引くと、

スライドドアの開け閉めができるようになりました!

ぜひ建築用VR等で、試してみてください!