愛をもってゲームをつくるゴリラのブログ

UE5勉強中のゴリラがいろいろ頑張ります。

UE4のVRテンプレートやってみました。

ごりです。

 

 今更ですが、

UnrealEngine4のVer.4.13からVRテンプレートが追加されたので、

Viveでやってみました。

興味があった物を掴む処理の中身見ていきたいと思います。

 

まず入力のところから

f:id:m-goolee-y:20161029154555p:plain

プロジェクト設定-インプット を見ると、

トリガーを使うみたいです。

 

次にこの入力イベントを呼んでいる

コンテンツ-VirtualRealityBP-Blueprintsの中にある

「MotionControllerPawn」を見てみます。 

f:id:m-goolee-y:20161029154956p:plain

アクションイベントを呼び出すと

コンテンツ-VirtualRealityBP-Blueprintsの中にある

「BP_MotionController」内の「GrabActor」「ReleaseActor」という関数を

呼び出しているみたいです。

 

この2つの関数が物を掴む、離す処理っぽいです。

まず「GrabActor」関数から

f:id:m-goolee-y:20161029160026p:plain

f:id:m-goolee-y:20161029160028p:plain

 「WantstoGrip」という変数は手のアニメーションを握る状態か開く状態かを

使用する変数みたいで、

Trueの時に握って、Falseの時に離すようです。

次に「GetActorNearHand」関数は手に一番近いアクターを取得します。

しかしこの「GetActorNearHand」関数は

コンテンツ-VirtualRealityBP-Blueprints の中にある

「PickupActorInterface」というインターフェースを実装した

アクタークラスのみを取得するみたいです。

インターフェースについてはこちらの記事がすごくわかりやすいです。

 

unrealengine.hatenablog.com

 

アクターが取得出来たらリファレンスを保持して「PickUp」関数を呼び出ています。

この「Pickup」関数はアクター側の掴まれたときにどうするかの

処理になっていますね。

コンテンツ-VirtualRealityBP-Blueprints の中にある

「BP_PickupCube」がこのインターフェースを実装しているみたいなので

中身を見てみると、

f:id:m-goolee-y:20161029162353p:plain

 アクターの物理シミュレーションを止めて、BP_MotionController に取り付けているようです。

「PickupActorInterface」を実装したアクターにこの処理をかけば、物が掴めるようになりそうですね。

 

次は「ReleaseActor」関数の中身です。

 

f:id:m-goolee-y:20161029163709p:plain

f:id:m-goolee-y:20161029163711p:plain

手の情報と掴んでいるものが取り付けられている親の情報が一致したときに

 

インターフェースの「Drop」関数を呼んでいるようです。

f:id:m-goolee-y:20161029163952p:plain

 物理シミュレーションを再開し、親から外す処理のようですね。

 

以上がテンプレートの中の物を掴む処理となっています。

 

物を追加したいときは「BP_PickupCube」を複製してMeshを変えたら手っ取り早くすみます。

ただ「BP_PickupCube」は親クラスがStaticMeshActorになっているので

スケルタルメッシュを使いたい場合は親クラスがSkeltalMeshActorかアクター

にしてください。

 

試しに椅子を追加してみました。

 

 

初投稿なのと、自分で考えてやっているのでおかしなとこあれば

コメントください。

 

次回はVR空間で弓矢を打てるようにしたいと思います。