Unreal Engine - ドアの実装(両面開き自動ドア)

前回に引き続き両面開きの自動ドアを実装する。www.youtube.com
以下動作条件。

  • 開閉はプレイヤーの接近に応じ自動で行う(プレイヤーのキー操作に拠らない)
  • プレイヤーがドアの前に立つことで自動的にドアが開く。
  • プレイヤーがドアの前にいる限り開いた状態であり続ける。
  • プレイヤーがドアの前から離れると閉じる。

Viewport図

f:id:DYMN:20150515021506p:plain
両面それぞれを親子の関係にはしない。

Blueprint図

f:id:DYMN:20150515021521p:plain
※OCBO・OCEO=OnComponentBeginOverlap・OnComponentEndOverlap

OCBO(TriggerBox)->SlidingDoorTimeline(Play)
OCBO(TriggerBox)->Delay->SlidingDoorTimeline(Reverse)
プレイヤーが自動ドアに近づいた時、SlidingDoorTimelineノードを呼び出す。
Timelineノードは値を0から100程度まで一定時間で変化させている。
※プレイヤーが離れた時に閉まる処理は1テンポ送らせるため、Delayノードを噛ませている。

Timeline->(*-1)->Make Vector
Timeline->MakeVector
Timelineノードで生成した値から移動量を作成する。MakeVectorノードのY値に入れることでVectorへと変換する。
片方は反対方向へ移動するため、2つの出力の内片方は-1をかけて符合を反転する。

MakeVector+InitialLocationDoorA/B->Set Relative Location
あらかじめ取得してあったドアの初期位置に生成した移動量ベクトルを足しこみ、対象アクターの新位置ベクトルへとセットする。

EventBeginPlay->Sequence->SET:InitialLocationDoorA/B<-RelativeLocation<-SMGlassWindowA/B
イベントが始まると同時に実行される。ドア両面アクタの初期位置を取得しておく。

※Sequenceノードを使用することで同時に別個の処理を呼び出すことが可能となる。