2015年3月17日火曜日

UE4 Tappy Chickenのチキンちゃんの動きについて

UE4でフラッピーバードコピーを作ってみようと、
公式のTappy Chickenを参考にした結果Time Lineというノードが出てきた。

非プログラマのデザイナーが数日で作ったというTappy Chicken BP全体図(見切れてる)

初心者には萎縮するほど大きく見えるBPだが、それぞれの処理はスコアやUI、実績など、このゲームにおける全ての機能が一枚に書いてあるため、分割してみると結構わかりやすい。

で、結局大事なのはこれ

Flapとコメントが書かれたチキンの動きに関する処理

イベントはTickとFlapで、Flapの大本はクリック処理となっている。
簡単にいうとTickで毎フレーム間の処理時間Delta Timeを取得設定し、TimeLineから与えられるfloat値との計算によりChickenの位置を決めている。

Time Lineの中身を見てみる。

上のタイムラインが縦軸の動き、下がChickenの回転描くに値するfloat値

0秒地点の1.7から始まり2秒地点の-5まで揺るやかなカーブを描いている。
これがChickenの動きになる。

ではいったんBPにもどり、Time Lineノードをみる。

一つ前の画像にある、float値が返される値として表示されている

上記画像からPlay from Startにノードが繫がっているのがわかる。
これはイベントが発生するとこのタイムラインの0秒から時間を進め始めるというもの。
つまりイベントが起きなければ0秒のままであり、Chickenは静止している。
また、Play from Start以外にも停止や巻き戻し、指定秒数からの開始もあることがわかる。実際便利。

ここから返された値により、上昇率や処理時間との計算で出された数値を現在値に足すことでLocationを設定している。

Vertical Movementから繫がっている緑(float値)の線が現在値の計算

つまり、落下の処理もPhysicsではなくTime Lineから拾ってきた数値になっている。

Simulate Physicsにはチェックが入っていない

ここまでの一部分を見るだけでも、限定的な処理だが確実で効率のいい書き方になっている。
Time Lineも使い方によってはかなり面白いものが出来そう。

0 件のコメント:

コメントを投稿

人気の投稿