【CG】自動ドアを作ろう(UE4)

Pocket
email this

 季節も冬になると展示会場に1つもドアが無いことに違和感を感じざるを得ません。だってこの会場、寒いでしょう! 来場された方がみんな風邪をひいてしまうこと間違いなしですから。これは大変です。
 じゃあ手動ドアを作る? いや、せっかくだから自動ドアを作りましょう。

 自動ドアの作り方自体はUnreal Engine公式ドキュメントにも載っていて、そのやり方でできます。

やってみよう

2枚のガラスパネルを用意します。動かない方『Window1』と、動く方『WindowAuto_1』です。
ひとまず動かない方のガラスを右の方に配置しました。

次に動く方のガラスパネル『WindowAuto_1』を配置します。動かない方よりも大きくしました。外の通路幅に合わせています。
これがドアが閉じている状態だとします。

自動ドアが反応してほしい領域を指定

 Trigger Volumeを配置します。「この領域に入った/出たときに何かアクションをします」ってときに使うものです。ちょっと見えにくいですが、黄色い線分と緑の頂点からなるボックスを、自動ドアが開いて/閉じてほしいなと思う場所に領域指定して配置します。これを『Window_TriggerVolume』と名付けました。

開閉イベントとアニメーションを設定

『Window_TriggerVolume』を選択中に右クリックを押して→[イベントを追加]→[OnActorBeginOverlap]と[OnActorEndOverlap]を選択します。

 下の画像みたいにブループリントを接続します。
SetOwner()の左側のノードは、BeginPlay()から接続されています。(見辛くてすみません。)
Delay()のDuration=2は待ち時間のことです。「プレーヤーがTrigger Volumeから離れてから2秒後にドアが閉まります」という意味です。
 最終形態は最後の方にある『最終的なブループリント』を見て下さい。

 次に[タイムライン_0_Te]タブを選択しますと、アニメーションの動作設定ができます。
 単純にやると、以下のようにリニアになってしまします。ので、いきなりドアが開いてピタッ!!と止まる昔のロボットみたいな動きになってしまいます。吉川晃司のシャッシャッシャ!!みたいな動き。
 この動きは望んでいません、ノソッと動き出してスムーズに止まってほしいわけです。

 そこで、左下の頂点で右クリックをして[自動]にチェックを入れてみましょう。すると、優しい曲線になります。
・横軸は0→1。つまり1秒かけてアニメーションするという意味です。
・縦軸はX軸(赤色)が0→250。つまり1秒かけてX値が0から250に変化していくという意味です。今回は動く方のガラスパネルを+X軸方向に250cm動かしたいので、こういう設定にしています。

最終的なブループリント

 最終的にこんな感じになりました。やったことを以下に書きます。
・変数に『WindowAutoInit』という名のvector型を用意しました。
・動く方のガラスパネル『WindowAuto_1』の座標を GetActorLocation() でゲットして WindowAutoInit にセットします。これで動く方のガラスの座標を覚えておきます。
・SetActorRelativeLocation()ではNew Relative Locationに 新規Track5 と WindowAutoInit の2つのvectorを足し合わせた値を接続します。ターゲットは WindowAuto_1。
 1秒かけて新規Track5の値を徐々に足し合わせていきます。つまりアニメーションします。

完成

 いかがでしょうか。これで寒くないね。とか言っていると今度は暖炉とか作りたくなっちゃうから危ない・・・。

参考サイト

キーとカーブ – Unreal Engine 4 Documentation
ドアを開ける – Unreal Engine 4 Documentation
「Unreal Engine」いろいろ作ってみる – シヴァのブログ

コメントを残す