UE4+VR:画面の中心とオブジェクト(アクター)が重なった時にイベントを発生させるブループリントについて
題名これであってるのかな・・・
ぶっさんです。
随分前ですが、OculusRift DK2を使ってこんなものを作りまして、
[UE4+Oculus] change the furniture of Materials ...
これをまとめておこうかなと思います。
全部まとめるとちょっと複雑になってて無理(めんどくさい)ので大本の部分を。
これは一つのアクターにコリジョンを複数設置しそれをキャラクターから出てくるTraceLineを認識してブループリント内で判別しイベントを開始します。
この画像凄いわかりずらい・・・
画面の中心とアクターが重なった時にイベントを発生させるブループリントの実装!!
上のを簡易的に実装したのが以下の動画です
仕様:オブジェクトを見るとライトの色が変わる
使用するもの:
FirstPersonCharacterテンプレート
スターターコンテンツ
FirstPersonCharacter側のBluePrint
まずLineTracebyChannelを接地します。以下のノード構成は、カメラの位置から前方(前方から2000掛けた位置)のオブジェクトを判別します。
デバッグモードをオンにするとこんなかんじです。
Return Valueからブランチを出し、OutHitからBreak Hit Resultを出します。Hit Componentから変数を宣言し名前をPrimitiveにします。(画像だとスペルミスしてる・・・)
テーブル側のブループリント
ブループリントを作成し、以下のようにコンポーネントを接地します。
StaticMeshでテーブルを設置します。上によくわからない置物を設置します。その周りにコリジョンを設置します。コリジョンはAll Blockに設定します。
ポイントライトも設置します。
Visiableにチェックを付けます
(Defaultだと多分チェックがついてる状態になってると思います。今回は画像をスクショする上で目障りだったので消しました。)
テーブルのブループリントのエディタ側
まずイベントTick、Get Player Characterを出しFirstPersonCharacterにキャストします。
次にシーケンスを設置し、コンポーネントからWater Object Collisiton(左のオブジェクトのコリジョン)を置きます。
FirstPersonCharacterから作成した変数「Primitive」を出し、Equalノードを出しWater Object CollitionとPrimitiveを繋げます。そしてブランチノードを出します。
そして、Trueになったら光の色を変えるので、コンポーネントからPointLightを出し[Set Light Color]を出します。このノードは名前の通りライトの色を変えます。
これを各コリジョン分作成します。
これで完成です。
後ろのゲージは、
をいじれば出来るはずはず・・・・
個人的にはVRコンテンツではなるべく外部ディバイスを使いたくない、首を酷使したい側の人間なのですが今のVR的にそれはナンセンスなのでしょうか。(GreaVR的に・・・)
まあそんなことはどうでもよくて明日のOcuBen楽しみですね。
以上。
(ちょっと寝不足感出てるので間違ってる部分があればTwitterでお願いします。)