第07回 軌跡
前回: 第06回 爆発 / 次回: 第08回 数字の表示とアニメーション
今回の授業内容
- 移動経路を残すTrailと、指定した点を結ぶLineの役割を区別する
- 同じ移動で残る時間・太さ・頂点間隔を一つずつ比較する
- 動きの方向が読める軌跡を作り、調整理由を説明する
開始状態
授業用URPプロジェクトにLesson07.unityを作り、第01回と同じカメラを使います。基本課題では、同じ経路を繰り返し動くオブジェクトへTrail Rendererを付けます。移動を固定すると、軌跡の設定だけを比べられます。
| 表現 | 残す情報 | 機能 |
|---|---|---|
| 物体の尾 | 物体が通った過去の位置 | Trail Renderer |
| 火花の尾 | 各粒子の移動履歴 | Particle SystemのTrails |
| ビーム | 指定した始点と終点 | Line Renderer |
同じ経路で動く対象の準備
空のGameObjectを原点に作り、TrailSourceと名付けます。Assets/UNSLOW/EffectPractice/Scripts/TrailMotion.csを作成し、次の全文へ置き換えて保存してください。移動は比較のための補助処理で、基本課題ではコードを変更せず使います。
using UnityEngine;
public class TrailMotion : MonoBehaviour
{
[SerializeField] private float radius = 1.5f;
[SerializeField] private float angularSpeed = 1f;
private Vector3 startPosition;
private float elapsed;
private void Awake()
{
startPosition = transform.localPosition;
}
private void Update()
{
elapsed += Time.deltaTime;
float angle = elapsed * angularSpeed;
transform.localPosition = startPosition + new Vector3(
Mathf.Sin(angle), 1f - Mathf.Cos(angle), 0f) * radius;
}
}TrailSourceへTrailMotionとTrail Rendererを追加します。TrailMotionは毎フレームの経過秒数を積み上げ、同じ円形の経路へ位置を設定します。比較中はRadiusを1.5、Angular Speedを1に固定します。
Trail Rendererの表示
- 第03回のParticleAlphaを複製して
TrailMaterialとし、Trail RendererのMaterialsの先頭へ割り当てます。 - Trail RendererのEmittingを有効にし、Timeを0.5秒、Min Vertex Distanceを0.05にします。
- Widthのカーブを両端とも0.15、Colorを白・Alpha 1にします。
- Play Modeで、動く発生源の後ろへ帯が残ることを確認します。
Timeは各点を残す時間です。移動速度が同じなら、長く残すほど長い経路が見えます。Min Vertex Distanceは、新しい頂点を追加する移動距離の目安です。点の間隔と、帯そのものの太さは別の設定です。
長さ・なめらかさ・消え方の比較
各比較はPlay Modeを終了して値を変え、再生開始から3秒後を同じカメラで見ます。
| 変更項目 | 比較する値 | 観察すること | 比較後 |
|---|---|---|---|
| Time | 0.5→1 | 同じ速度で残る経路の長さ | 0.5へ戻す |
| Min Vertex Distance | 0.05→0.5 | 曲線の角ばり | 0.05へ戻す |
| Width | 0.15→0.3 | 太さと画面の読みやすさ | 0.15へ戻す |
次にColorのGradientで先頭のAlphaを1、末尾を0にし、Widthも先頭0.15、末尾0へ変えます。これは帯に沿った位置を基準にした変化です。古い末尾が細く薄くなり、移動の向きを読み取れるか確認します。
曲線が角ばるときはWidthを増やす前にMin Vertex Distanceを確認します。色を変えても、点が足りない形状の問題は直りません。
選択課題:粒子のTrails
第04回のSparksを複製して使うか、同回の基本設定で短い火花を作ります。TrailSourceは無効にして別々に比べます。
- Particle SystemのTrailsを有効にし、ModeをParticles、Ratioを1にします。
- RendererのTrail Materialへ、この回で作ったTrailMaterialを割り当てます。粒子本体のMaterialとは別の欄です。
- TrailsのLifetimeを短い値から調整します。このLifetimeは粒子の寿命に対する割合なので、秒のTimeを使うTrail Rendererと区別します。
- 幅と透明度を調整し、粒子本体と尾が両方読めるか確かめます。
表示されなければTrail MaterialとRatioを先に確認します。基本のTrailRendererへ戻る場合は、火花を無効にしてTrailSourceを有効へ戻します。
選択課題:Line Rendererのビーム
- 空のGameObject
Beamを原点に作り、Line Rendererを追加します。 - Use World SpaceをOn、LoopをOff、PositionsのSizeを2にします。
- Element 0を
(-2, 0, 0)、Element 1を(2, 0, 0)にします。 - この回のTrailMaterialをMaterialへ割り当て、Widthを0.1、Colorを青白い色にして表示を確認します。
- Element 1のYだけを1へ変え、終点を動かした結果を予想して比べます。比較後は0へ戻します。
Lineは移動履歴を自動では残しません。始点と終点を指定する方式なので、移動する弾の尾と、二点を結ぶレーザーのどちらに適するかを説明してください。
授業内課題と完成条件
基本のTrailを調整するか、選択課題の粒子の尾・ビームの一つを使います。剣や魔法など表したい対象を決め、輪郭と動きの方向を読み取れる表現へ整えます。
- 軌跡の種類を選んだ理由を説明できる
- 長さ・太さ・透明度のうち二つ以上を調整している
- 同じ条件で一項目を変えた比較を説明できる
- 必要なScene・Material・補助スクリプトを保存し、再生し直せる
Play Mode終了後に採用設定を保存します。SceneをLesson07.unity、必要なオブジェクトをPrefabとして残し、短い動画と比較結果を提出してください。メッシュを動的生成する剣閃は、この回の基本課題には含めません。