Skip to content

第06回 爆発 ​

前回: 第05回 炎・煙 / 次回: 第07回 軌跡

今回の授業内容 ​

  • 中心の光、外へ飛ぶ火花、最後に残る余韻を組み合わせる
  • 発生時刻と寿命を一つずつ調整し、爆発の時間変化を説明する
  • すべての子の再生後に親全体が消えるPrefabを保存する

爆発の各要素が発生して消えるまでのタイミング爆発の各要素が発生して消えるまでのタイミング

爆発では、最初の光が瞬間を、火花が広がる勢いを、煙が余韻を伝えます。最初はFlash・Sparks・Smokeの3要素で役割を分けます。衝撃波と炎は選択して追加できます。

開始状態と補助スクリプト ​

授業用URPプロジェクトでLesson06.unityを作り、第01回と同じカメラを使います。第04回のHitEffectからFlashとSparks、第05回のSmokeを使います。前の成果物がない場合は、各回の火花とフラッシュ、煙の基本設定を作成してから進めます。既存Prefabを編集する場合は複製を作り、元の作例を残してください。

終了処理には、補助スクリプトのZIPを使います。第04回で取り込み済みなら再取り込みは不要です。未導入の場合は展開したAssets/Scripts/DestroyAfterParticles.csと同名の.metaを、自分のプロジェクトのAssets/Scriptsへコピーします。コードの編集は不要です。

親と子の構成 ​

Explosionの基本構成
  • Explosion
    • Flash
    • Sparks
    • Smoke

空の親Explosionを原点に作り、各要素を子として配置します。親のPositionとRotationを0、Scaleを1にし、子のLocal Positionを0にします。SmokeのRotationは上へ発生する第05回の向きを使います。

各子に終了用のスクリプトは付けず、親だけにDestroy After Particlesを追加します。既存のHitEffectから流用する場合は、子だけをこの親へ移し、終了補助を持つ親を二重に入れないでください。

全ての子に共通する項目設定と理由
LoopingOff。一度の発生にする
Play On AwakeOn。親の生成時に再生する
Duration0.5秒。粒子の寿命とは別の発生区間
Stop ActionNone。親の補助処理に削除を任せる
Rate over Time0。ループ由来の連続発生を止める

第03回の単独Particle SystemはStop Action: Destroyで削除できます。第04回と今回の複合エフェクトでは、各子の削除だけでは空の親が残るため、親で全体の終了を待ちます。

中心の光と火花 ​

まずSmokeを無効にし、FlashとSparksを調整します。

要素BurstのTime / CountStart LifetimeStart SpeedStart SizeStart Delay
Flash0 / 10.1秒01.20秒
Sparks0 / 200.5秒60.080秒

BurstはCyclesを1にします。FlashのShapeは無効、SparksはSphere・Radius 0.05にします。両方ともAdditiveのMaterialを使い、Color over LifetimeのAlphaを1→0へ、SparksのSize over Lifetimeを1→0へ変えます。

編集時はSceneビューのParticle Effectパネルで単独再生できます。Play Modeでは親の終了補助が動くため、最後の要素が終わると親も消えます。再び調整する場合はPlay Modeを終了してください。

最後に残る煙 ​

Smokeを有効にし、FlashとSparksを一時的に無効にして煙だけを確かめます。第05回のLoopingをOffへ、Rate over Timeを0へ変更し、BurstをTime 0、Count 8、Cycles 1にします。Start Delayは0.08秒、Start Lifetimeは2秒、Start Speedは0.5、Start Sizeは0.6を開始値にします。

MaterialはAlpha合成です。Color over LifetimeのAlphaを0→1→0、Size over Lifetimeを1→2にし、上へ広がって消えるようにします。Noiseは第05回で採用した弱い値から使います。

煙が出続ける場合はLoopingとRate over Timeを、すぐ消える場合はStart LifetimeとAlphaのカーブを確認します。煙が単独で成立したらFlashとSparksを有効へ戻し、親を再生してください。

時間差を一つずつ変える比較 ​

基準のExplosionを複製して無効に残し、有効な親を一つにして比較します。

  1. 同じカメラで基準を再生し、Flashが先に消え、煙が最後に残ることを記録します。
  2. Play Modeを終了し、SmokeのStart Delayだけを0.08秒から0.3秒へ変えます。
  3. 光と煙が一つの出来事に見えるか予想して再生し、比較後は0.08秒へ戻します。
  4. 今度はSmokeのStart Lifetimeだけを2秒から3秒へ変え、余韻と画面の読みやすさを比較します。比較後は2秒へ戻します。
  5. 採用する値を選び、役割と理由を記録します。

粒子が一時的に0個になる時間があっても、開始遅延中のSmokeがあるなら親は残る必要があります。補助処理は、現在の粒子に加えてこれから発生する予定も確認します。試験用にSmokeのStart Delayを1秒へ変えて確かめた後は、採用値へ戻してください。

選択課題:衝撃波と炎 ​

衝撃波は、動かない一粒にリング状の画像を使い、Size over Lifetimeで外へ広げます。炎は第05回のループをBurstへ変え、煙より短い寿命にします。どちらも子として追加し、共通のワンショット設定をそろえます。

Flipbook素材を使う場合は、第05回のTexture Sheet Animationでコマ数と寿命を対応させます。素材の再生速度を変えたときは、他の要素を固定して比較してください。

全体の終了と保存 ​

  1. 再生に使う子をすべて有効へ戻し、共通設定を確認します。
  2. Play Modeで、Flash終了後も煙が残り、煙が消えてからHierarchyのExplosionも消えることを確認します。
  3. Play Modeを終了し、採用する設定を編集モードで保存します。
  4. 親をProjectのPrefabsへドラッグし、Explosionとして保存します。
  5. SceneへPrefabを配置し直し、位置を変えて再生・終了が同じように働くか確認します。

親が消えない場合は、子のLooping、遅延・寿命、補助コンポーネントを確認します。途中で消える場合は、補助が親だけに付いているか、必要な子が有効でPlay On AwakeがOnかを確認します。

授業内課題と完成条件 ​

  • 中心の光・外向きの火花・後半の余韻の3役が分かる
  • 全要素が一度だけ再生され、色とサイズが寿命に沿って変化する
  • 一つの時間設定を変えた比較から、採用理由を説明できる
  • 最後の粒子の終了後に親全体が消え、Prefabの再配置でも再生できる

短い動画または時間変化が分かる画像と、各子の役割・変更した時刻や寿命を提出します。SceneをLesson06.unityとして保存してください。

終了補助の仕組み

DestroyAfterParticles.csは有効な子のParticle Systemを調べ、IsAliveがすべてfalseになった後、親を削除します。寿命や遅延を変えるたびに、削除までの秒数を手で指定し直す必要はありません。