[Unity]エフェクトの発動・移動をタイムラインで制御する方法

2024/05/07に公開

◯概要

みなさんUnityで魔法弾のような「チャージ」「発動」「ヒット」のような一連のエフェクトを作ったら、実際のゲームのように「発動して → 敵まで飛んでいって → ヒットエフェクトを表示」してみたくならないでしょうか?

ただプログラムで実装は大変…

ということで、今回は Unityのタイムライン機能を使って実際のゲームのように順番にエフェクトを再生、移動する方法 の紹介です!
実際に魔法弾を飛ばしながら解説します(※エフェクト自体の作り方は省略)

◯手順

今回はシンプルに以下手順を行っていきます
1.「魔法弾」を任意の位置に発生、移動
2.「ヒット」を任意の位置に発生
(本当はチャージや発射エフェクトもあるといいですが今回は省略)

▼1.エフェクトプレハブを準備

魔法弾の 「魔法弾」「ヒット」 のエフェクト2種類を作成してプレハブ化しておきました
(プレハブのやり方については後述の【参考】参照)

[補足]

  • 進行方向 「Z+」

  • プレハブのTransform:(Position, Rotation = 0)(Scale = 1)

  • 空間に残したい一部粒などはSimulation Space = 「World」

  • Assets/Users/個人フォルダ/Test/Prefabsなどフォルダを作って入れておくとわかりやすいです

  • 「魔法弾」の方はループエフェクトにしておきました
     (Timelineで再生制御)

【参考】
プレハブ化については以下が動画でわかりやすいです
・エフェクトプレハブの作り方(「ルートオブジェクトを作成する」のところ)
https://youtu.be/WweuTCeAByc?list=PLhzCDkTROE9tye8JUfjKq6MnnIiFHTBF7&t=13

▼2.タイムライン準備

  • Create Emptyで空のオブジェクトを用意して、「TL_MagicOrb」 とリネームしておきました

  • Windowメニュー > Sequencing > Timeline を表示

  • 「TL_MagicOrb」を選択した状態で、Timelineウィンドウの「Create」をクリックします

  • Assets/Users/個人フォルダ/Test/TimelineなどフォルダにTL_MagicOrb_001などで保存しておきます

▼3.タイムラインでエフェクトの発生タイミングを制御する

  • Timelineの右欄に エフェクトプレハブをドラッグ&ドロップ して、トラック名をFX_MagicOrbBullet_001とリネーム しておきます
    これで任意のタイミングでエフェクト発生できるようになりました

▼4.タイムラインでエフェクトの位置(回転)を制御する

  • Timeline左上の+アイコン(or 空欄右クリック) > Animation Trackをクリックします

  • 移動(回転)したい任意のエフェクトプレハブをNone(Animator)となっている欄にドラッグ&ドロップします
    「Create Animator on 〇〇」をクリック

  • 赤の録画アイコン(Start recording)をクリックして、エフェクトプレハブのTransform(位置や回転)を変更してみてください
    Transformにキーが打たれます

  • 別のタイミングでも位置や回転を変更するとキーが打たれます

  • 編集が終わったら、録画アイコンを再度クリックして記録完了です
    Timelineの再生ボタンで動きを確認できます

▼5.任意のタイミングでヒットも配置して完成

  • 同様に魔法弾が消えるタイミングでヒットエフェクトもタイムラインで「発生タイミング」「位置」を制御してあげれば完成です!

◯応用編、その他Tips

  • プレイヤー、敵 想定のオブジェクトを配置するとよりわかりやすくなります

  • タイムラインを 「Track Group」 で「Effect」などとしてまとめるとよりわかりやすくなります

  • 動きがリニア(直線的な速度)で緩急をつけたい場合には、録画アイコン左のアイコンからカーブ制御可能です
    (ここからキーの移動や削除も可能)

  • タイムラインは開始の先頭に2秒程度間を空けておくと、動画キャプチャや編集が楽かと思います

◯さいごに

仕事の場合の実装は案件によるのでこれが絶対とは言えませんが
自主制作の場合はタイムライン制御を覚えておくのが無難で楽なんじゃないかなと思います!

ぜひ自分のエフェクトにも動きをつけて遊んでみてください!

Discussion