38. タイムラインによるアクタの大きさ・回転の制御

目的

前回はタイムラインを使用してアクタの位置をブループリントから制御する方法を学んだ.今回はタイムラインを使用してアクタの大きさと回転を制御する方法を学ぶ.

説明

大きさの制御

ここでは,ゲームをプレイすると立方体がだんだん大きくなるという例を通し,タイムラインによるアクタの大きさの制御方法を説明する.

タイムラインを作る

x, y, z軸それぞれに拡大率が異なる場合はベクタートラックのタイムラインを作成することになるが,ここでは各軸に対する拡大率は同じとし,最初の大きさ(1倍)から2倍になるようにすることにする.そのためフロートトラックのタイムラインを作成し,値が1から2に変化するようにする.

  • 「TimelineScale」という名前のタイムラインノードを作る.
  • タイムラインエディタを開く.
  • 「f+」ボタン(フロートトラックを追加)をクリックする.
  • 「新規Track_0」という名前を「Scale」に変更する.
  • グラフが表示される.
  • 1から2に値が変化するグラフを作成する.

イベントグラフを作る

ここではCubeという名前の立方体がだんだん大きくなるイベントグラフを説明する.

  • Cubeの大きさが変わるように,SetMobilityノードを使用して「Movable」にする.
  • InitialScaleという名前のVector型の変数を作る.
  • Cubeの(初期)拡大率をGetActorScale3Dノードにより取得し,変数InitialScaleにセットする.
  • Cubeの初期拡大率InitialScaleとTimelineScaleノードの変数出力ピンScaleとの積を「Vector*Vector」ノードにより求め,SetActor3DScaleノードでCubeの大きさを変更する.

回転の制御

ここでは,ゲームをプレイすると立方体が水平方向に回転するという例を通し,タイムラインによるアクタの方向の制御方法を説明する.

タイムラインを作る

ここでは立方体を水平方向に180回転させることとし,z軸中心の回転角度をフロートトラックのタイムラインで表現することにする.

  • 「TimelineRotation」という名前のタイムラインノードを作る.
  • タイムラインエディタを開く.
  • 「f+」ボタン(フロートトラックを追加)をクリックする.
  • 「新規Track_0」という名前を「RotationZ」に変更する.
  • グラフが表示される.
  • 0から180に値が変化するグラフを作成する.

イベントグラフを作る

ここではCubeという名前の立方体が水平方向に180度回転するイベントグラフを説明する.

  • Cubeが回転するように,SetMobilityノードを使用して「Movable」にする.
  • InitialRotationという名前のRotator型の変数を作る.
  • Cubeの(初期の)回転情報をGetActorRotationノードにより取得し,変数InitialRotationにセットする.
  • Cubeの初期の回転情報InitiaRotaionをBreakRotatorノードによりX, Y, Z軸中心の回転角度に分解する.
  • 初期のZ軸中心の回転角度とTimelineRotationノードの変数出力ピンRotationZとの和を「float+float」ノードにより求める.
  • MakeRotatorノードでX, Y, Z軸中心の回転角度からRotator(回転情報)を作成する.
  • SetActorRotationノードでCubeの回転情報を変更する.

課題

以下の新規ブループリントプロジェクトを作り,課題を行え.

  • ファーストパーソン
  • デスクトップ/コンソール
  • ハイエンド
  • スターターコンテンツ有り

設計図

課題0

設計図の通りに壁と床と部屋を作れ.

課題1

全ての部屋にテーブルと椅子とポイントライトを配置せよ.

課題2

部屋Aに入るとテーブルの上に炎が現れ,だんだん大きくなるようにせよ.

課題3

部屋Bに入るとテーブルの上に炎が現れ,だんだん大きくなり,だんだん小さくなり,消えるようにせよ.

課題4

部屋Cに入るとテーブルの上に炎が現れ,だんだん大きくなり,部屋から出るとだんだん小さくなり,消えるようにせよ.

課題5

部屋Dに入るとテーブルの上に煙が現れ,テーブルに近づくと炎が現れ,急に大きくなるようにせよ.

課題6

部屋Eに入るとテーブルが左右に傾くようにせよ.

課題7

部屋Fに入るとテーブルが前後左右に傾くようにせよ.

課題8

部屋Gに出入りしようとするとドアが開くようにせよ.

課題9

部屋Hに出入りしようとするとドアが開き,部屋に出入りすると閉まるようにせよ.