UE4で箱を回転させる

フリーになってから初の更新です。

今回はこんな感じにきれいに箱を転がしました。

とはいっても数学をあまりきちんと理解できてない人間なので、こちらのブログのスクリプトを参考にさせてもらい作りました。

[Unity] Cubeを転がすスクリプト

Input関数


input_all.png

Input関数はこんな感じです。基本的には二次元的な入力しかないので縦横方向への入力をもらって、回転させたい角度を作り、回転中フラグや入力値、初期位置、初期回転を設定しています。

また、入力を受け取った際に回転中かどうかを確認しているisRotationはこんな感じ。

is_Rotate.png

入力がきちんとあって、なおかつ回転中でなければ転がり始めます。

RotationCubeイベント


Input関数で初期設定後に走らせるイベントです。

RotateCubeEvent.png

タイムラインで線形補間用のアルファ値を作って回転と移動をUpdateRotation関数の中で行っています。

今回は0.5秒間に0から1へと変わるように設定しています。

UpdateRotation関数


今回やりたいことのメインとなる部分の処理になります。

UpdateRotation.png

細かい説明はできないので省きます。いい感じにX、Y、Z軸方向への移動と回転を行ってます。

移動距離を算出する関数はこれらです。

distanceX.png

distanceY.png

distanceZ.png

GetDistanceXとYはVerticalかHorizontalの変数以外は同じ処理を行っているので外部からわたしてやるともっとスッキリすると思います。

sinとかcosとかはこちらになります。

GetSine.png

GetCosine.png

最後に終了処理

EndRotation.png

もうちょっときちんと数学を勉強しようと思いました。