【UE4】なるべく手軽に壁走りを実装してみる

こちらはUnreal Engine 4 (UE4) Advent Calendar 2017 - Qiita6日目の記事になります。


0.目次


1.はじめに

良い単語が思いつかなかったので「壁走り」としましたが、実現したかったのは某レースゲームの機体がコース上を浮いて走るやつです。 UE4を始めた頃から定期的にチャレンジしていて、現状で一番楽な方法の紹介です。

こんな感じのを作れます

バージョン:4.18.2


2.実装

Pawnに実装しました(Characterではうまくいきませんでした)

まずはBlueprint全体です(移動処理とかPawnの構成とかは割愛します)

f:id:tamfoi:20171129233224p:plain


2.1.落下処理

落下処理は下記のようにしました。

Add Input Vectorとかを使うほうが良いのでしょうが、空中で慣性移動させるのがパパっとできなかったのでこの形にしました。

(ただこれだと下方向の速度をGetVelocityで取得できないですね…) f:id:tamfoi:20171129233543p:plain


2.2.レイキャスト

地形の法線を取得するために下記のようにPawn真下にレイキャストするようにしました。

f:id:tamfoi:20171129233956p:plain


2.3.地形に合わせて姿勢変更

レイキャストが成功したら取得した法線に合わせて姿勢を変更します。

Make Rot From ZXノードで姿勢を作るというのにたどり着くのにだいぶかかりました...

f:id:tamfoi:20171129234143p:plain


2.3.姿勢を元に戻す

レイキャストに失敗したら姿勢を元に戻す処理です。

ゲームのデザインによってはいらないと思います。 f:id:tamfoi:20171129234434p:plain


3.おわりに

もっといい方法があったら是非共有してもらいたいです。

コース制作周り(Splineとか天地ひっくり変えるようなコース作ろうとすると難しいです)とかカメラ周り(SpringArmのRotation Lagをいれていると一定角度を越える時に変な方向にいってしまったりします…)とかの問題もあるので先は長そうです!