アクター(球)を配置して上下に動かしてみます。
—-
コンテンツブラウザから新規追加→ブループリントクラスを選択し「親クラスを選択」から「アクター」を選択します。
「アクター」はUnityで例えるならGameObjectの様なもので配置するもの全ての規定クラスと考えておいて良いです。
追加したアクター名は分かりやすい様に「SphereBP」に変更しておきます。
この「SphereBP」をダブルクリックすると「ブループリントエディター」が開きます。
Unreal Engine | プログラマ向けクイックスタート を参考にして上下に移動する球を実装してみます。
「マイブループリント」タブの「変数」にRunningTime 変数を追加します。
時間経過で上下に動かしたいので型はfloatにしておきます。
変数左側の、ここでは緑色アイコンを右クリックすると変数を配列に切り替えることができます。
Event Tick ノードから処理を開始します。Event Tickはマイフレーム呼ばれるノードになっています。
まずはActorを動かすらめのノードEvent Tickから呼び出します。
AddActorWorldTransform ノードを追加しました。
これは現在のTransform(姿勢)を相対的に変化させる時に使用するノードです。
さらにAddActorWorldTransform から「Set RunningTime」としてノードを追加します。
ここで、ノードの色が3色あることに気づきます。
色 | 意味 |
---|---|
赤 | 処理の開始 |
青 | 関数 |
緑 | 変数 |
例では「EventTick から始まり、AddActorWorldTransform でアクターを動かし、RunningTimeに時間を設定する」という流れになっています。
さて、このままではAddActorWorldTransformに引数が何も渡されていない状態なためコンパイルエラーが出てしまうので、新しいノードを追加します。
何もないところを右クリックして「Add Math Expression」を検索し選択します。
「Add Math Expression」ノードは数式を扱えるノードです。
C++などに馴染んでいる人は、式がそのままかけるためとても便利です。
図の様に上下にSin運動させるための式を記述します。
Sin(RunningTime)
計算式はできたので、計算結果をAddActorWorldTransformの引数として渡したい所ですが、
float型のパラメータを渡す箇所が見当たりません。
そんな場合はAddActorWorldTransformのTranformを右クリックし「構造体ピンを分割(Split Struct Pin)」します。
同じ要領で分割されたピンをさらに分割することも可能なので、今回の場合分割されたVector型をさらに分割します。
そして、分割されたピンに先ほどの計算結果を渡します。
これで渡せました。
あとは、RunningTimeを更新するための式を書いて、ピンを繋げてあげて完成です。
(RunningTime + DeltaSeconds)