タイムラインを使ってアクタの状態を変化させる

タイムラインは簡単なアニメーションを作る際に役立つ機能です。

今回はこのタイムラインを用いてドアの開閉のアニメーションを作成してみたいと思います。

はじめに注意点ですが、このタイムライン操作では、時間経過によって値を変化させる動作しか行わないので、複雑なアニメーションはCGツールやsfmを使って作成するようにしてください。

UE4を立ち上げてコンテンツブラウザを開くと、StarterContents>Props内にSM_DoorとSM_DoorFrameがあるのでこれをいい感じに配置します。

ドアフレームとドアが被ってしまう際は、詳細タブからトランスフォームで手入力を行うか、ビュー右上から一グリッドスナップ値を細かくして設置してみてください。

f:id:inzery2:20161109003634p:plain

ドアフレームは(置いておいてなんですが)ドアの開閉には全く関係がないので、SM_Doorのブループリントのみをいじります。SM_Doorを選択して詳細タブからブループリントを開きます。この際、ブループリントの保存先は各自指定するようにしてください。

イベントグラフのBeginPlayの近くに「タイムラインを追加する」を置き、名前をOpenDoorにでもしておきます。

OpenDoorをダブルクリックすると、タイムラインエディタが開かれます。

f:id:inzery2:20161109004544p:plain

まだ、トラックがないのでトラックを追加します。長さを1(秒)にして、左上にあるf+からFloatトラックを追加します。

名前が新規Trackになってるので、新規Trackと書かれている箇所をクリックして、RotateDoorとでも名前を変更しておきます。

タイムラインでは横軸が秒で縦軸が変化の値になっています。(0,0),(1,1)付近にキーを追加します。キーの追加方法はキーを付けたい箇所でShift+左クリックか、右クリックからAdd keyでつけられます。

f:id:inzery2:20161109005334p:plain

キーの位置が気になるので、キーをクリックして時間、値をそれぞれ(0,0),(1,1)と入力しておきます。

このままでは角速度が一定でドアが開いてしまい少し不自然なので、(0,0)キーを右クリックし、自動を選択します。

f:id:inzery2:20161109005702p:plain

これでタイムラインの編集は終わりです。

イベントグラフに戻り、BeginPlayとOpenDoorのPlayピンをつなぎます。

後はSetRelativeRotationとLerp(Rotator)のノードを用意しておきます。

このとき、SetRelativeRotationにStatic Mesh componentがターゲットとしてついていることを確認します。ついていなければコンポーネントタブからドラッグして繋いでおきます。
また、LeapのReturn ValueピンSetRelativeRotationのNew Rotationピンをつなぎます。

SetRelativeRotationは相対的角度を入力する箇所で、最終何度回転させるかを決めるものだと思っておいてください。
LerpノードはAlphaが0の時はA,1の時はBの値を返し、0から1の間ではAとBの割合から算術します。

今回、始めを0としたとき、ゴール(ドアが開くとき)はzが90度回転した時となるので、LeapのBのzに90を入力しておきます。

最後に、OpenDoorのUpdateピンとSetRelativeRotationの実行ピンを、RotateDoorピンとLeapのAlphaピンをつなげば完成となります。

コンパイルし実行した時、ドアが開くようなアニメーションになると成功です。

 

f:id:inzery2:20161109013508p:plain

お疲れさまでした。

f:id:inzery2:20161109013841g:plain