Unity+UnrealEngine4+Blog.

UnityやUnrealEngine4とかについて学習したことを書いてます

UnrealEngineでVRコンテンツ向けにLeapMotionを使ってみた2

 

 

前回記事

nabesi777.hatenablog.com

 

 

2はオブジェクトを持ったり離したりする内容を書いていきます。

(右手の処理だけ)

 こんな感じです。

f:id:nabesi777:20191008192842g:plain

 

 

作業台をCubeで用意

f:id:nabesi777:20191008180003p:plain

 

 

台の上にもうひとつCubeを用意、Cubeの設定→Scaleを0.3・SimulatePhysicsをオン・SimulationGeneratesHitEventsをオンにする。

f:id:nabesi777:20191008180234p:plain

f:id:nabesi777:20191008180251p:plain

f:id:nabesi777:20191008180315p:plain

 

ここまで来たらLeapHandとCubeのHitEventが取れるか一度確認。

Cubeをブループリント化して当たり判定のテスト。

f:id:nabesi777:20191008180602p:plain

f:id:nabesi777:20191008180907p:plain

 

取れているのを確認

f:id:nabesi777:20191008180845p:plain

 

Playerのブループリントへ移動(前回の記事で作ったカメラのブループリント)

PlayerのブループリントへLeapConpomentを追加

f:id:nabesi777:20191008181156p:plain

 

ClassSetting>Details>InterfaceからLeapEventInterfaceを追加する。

f:id:nabesi777:20191008193041p:plain

f:id:nabesi777:20191008181241p:plain

 

上の設定でLeapMotionのイベントノードを出すことができるようになりました。

とりあえず今回は右手の設定をしていきます。

f:id:nabesi777:20191008181719p:plain

 

EventGraghの中で手を握っている状態かそうでないかを判定する為にノードを組んでいきます。ひつとBool型の変数Grabbingを作成してます。f:id:nabesi777:20191008182112p:plain

 

ちゃんと動くか一応確認

f:id:nabesi777:20191008182410p:plain

ぐっぱーぐっぱーで確認

f:id:nabesi777:20191008182349p:plain

 

ここまでで当たり判定・握り判定が取れるようになりました。

 

次に新しくBluePrintInterfaceを作成

f:id:nabesi777:20191008182811p:plain

f:id:nabesi777:20191008182853p:plain

 

BluePrintInterfaceの中を開いてFunctionNameを変更して

f:id:nabesi777:20191008182922p:plain

 

InputへStaticMeshActorを追加する

f:id:nabesi777:20191008183015p:plain

f:id:nabesi777:20191008183042p:plain

 

BluePrintInterfaceの設定おわり

 

Cubeのブループリントへ移動して、ComponentHitイベントを以下のようにつなぎ直します。Hitイベントを感知したら通知します。

f:id:nabesi777:20191008183632p:plain

 

最後にMyLeapHand(前回の記事参考、デフォルトのHandActorをコピーしたもの)のプループリントへ移動してノードを組んでいきます。

 

まずは自分で作成したBluePrintInterfaceを追加、(ClassSettingから)

f:id:nabesi777:20191008184000p:plain

f:id:nabesi777:20191008184026p:plain

 

次にFunctionを作成(名前 PickupuIfEmpty)

f:id:nabesi777:20191008184322p:plain

 

使用する変数を2つ作成

StaticMeshActor型 PickupItem

Player型(自分で作成したカメラがついたPlayerの型) Player

 

Playerの変数は目を開けてアウトライナから格納する。

f:id:nabesi777:20191008184834p:plain

(これ)

f:id:nabesi777:20191008190321p:plain

 

 PickupIfEmpty関数のInputへStaticMeshActorを追加

f:id:nabesi777:20191008185236p:plain

 

PickupIfEmpty関数の中で下のようにノードをつなぐ

f:id:nabesi777:20191008190419p:plain

 

EventGraghへ移動して下のようにつなぐ

f:id:nabesi777:20191008190013p:plain

 

これでとりあえず下のようにオブジェクトを持てるようになる。

f:id:nabesi777:20191008191108g:plain

 

あとは下のようにノードを組んでオブジェクトを離したときの処理をして、オブジェクトを持ったり離したりできるようになりました。(UnrealまだあんまりわかってないのでTick内で処理してるやつなのでまた改良します。)

f:id:nabesi777:20191008192415p:plain


次は手を振るようなジェスチャーでオブジェクトをコントロールする内容を書いていきます。