関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2018.01.19UE4UE/ VR
こんにちは。
以前、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つとなります。
5.関数
①MakeMaxMoveValue
内容としては、DoorPlateのバウンズのサイズから、
スライドドアの最大移動値を取得します。
②MakeVectorMoveValue
内容としては、ドアのY方向に対しての、
取っ手を握った手の移動量を取得します。
中身の説明は、下記画像のようになります。
③MoveSlideDoor
内容としては、②で取得した移動量を利用して、
ドアプレートを移動させるものとなります。
中身の説明は、下記画像のようになります。
6.イベントグラフ
最後にこれまで作成した変数、関数を用いて、イベントグラフに、ノードを配置していきます。
イベントは、下記の4つから成っています。
①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等で、試してみてください!