株式会社ヒストリアさん主催の第13回UE4ぷちコンの作業進捗。
前回に引き続き、敵となるドラゴンを作っている。
今日は空から飛んできて、目的地に着地するような挙動を作成した。
- 影がよぎってから画面に登場
- 画面奥で旋回してから、着地。
…という演出込みでやりたかった。
残念ながら、飛行パスは固定(スプライン)。毎回同じ挙動をする。
せいぜい、左右反転を作った程度。
例によって、本プロジェクトを汚さないように、実験用の新しいプロジェクトで試している。
スプライン+物理?
最初はスプラインを参照しながら、物理で飛ぶような動きを作ってみた。
(スプライン上を一定速度で動く点を、物理で追いかけるような挙動)
だが、パラメータによっては追い越してしまったり、旋回しきれなくなってしまったりで、難航。
うまくいかないまま1日使った時点で捨てることにした。
で、今回のやり方は:
- 空気抵抗付きの加速度運動するスカラ値を作成。
- 空気抵抗があると、際限なく加速し続けず、最終的に一定の速度に落ち着くので。
- 参考リンク:抵抗力のある落下運動 - 物理のかぎしっぽ
- このスカラ値をスプラインの始点からの距離として、スプライン上の点を求める。
- Spline Component の Get Location at Distance Along Spline を使用(Blueprint)
…という方法で、速度感だけが物理に沿う動きを作った。だが、スプラインに沿って動く都合上、移動パスは全然物理っぽくない。これが顕著なのは、旋回時だった。なんというか、カクンと曲がるというか、プログラムっぽいというか。
で、誤魔化しとして、スプラインの曲がり具合に応じてロールするようにしてみたのだが、急に予定外にええ感じになってしまった。これで良しとする。
着地は物理
ドラゴンが着地体制に入るアニメーションに切り替わったときから、スプラインから切り離して、ぽいっと放り投げている。まっすぐ着地点に向かう向きに放り投げているので、それまでのスプラインの向きとの差異で、少々カクついているが、今回はこれで良しとする。
どうやって狙った位置に落としているか …は、もうただ単純にパラメータ調整。種も仕掛けもなく、ちょうどいい位置に落ちる放り投げ速度とか、空気抵抗とか、そういうのを試行錯誤で見つけただけ。
とはいえ、地形などでズレは生じるだろうから、目的地から半径 5m 程度内に入れば、そこにこっそり吸い寄せるようなズルはやっている。
ピンチ!?
後は、逃げ回る地竜(=2足歩行の恐竜)をええ感じにホーミングして食べなきゃいけないんだが、どう考えても難易度が高い。どうしよう…
ていうか、もう残り1週間+αしかない。ドラゴン作っている場合なのだろうか。
ここまで作ってなんだが、最悪ドラゴンは無しになるかもしれない…
ともかく頑張る。でも、今日はもう寝る。