Skip to content

第04回 火花・ヒット ​

前回: 第03回 色と半透明の操作 / 次回: 第05回 炎・煙

今回の授業内容 ​

  • 火花とフラッシュを役割ごとに作り、命中の瞬間を表現する
  • 発生時刻と寿命を一つずつ変え、見え方の違いを説明する
  • 再生後に親全体が消えるPrefabとして保存する

火花・中心光・リングを組み合わせた構成例。リングは選択課題火花・中心光・リングを組み合わせた構成例。リングは選択課題

命中時には、中心の光が発生位置と瞬間を、外へ飛ぶ火花が勢いを伝えます。最初はこの2要素を作り、リングと煙は必要に応じて足します。短時間でも、何が起きたか読めることが大切です。

開始状態 ​

授業用URPプロジェクトでLesson04.unityを作成し、第01回と同じカメラを使います。前回のSceneを別名保存する場合は、比較用の粒子を無効にしてください。Materialは第03回のParticleAdditiveを使用します。ない場合はMaterialの作成に沿って用意し、Blending ModeをAdditiveへ変更します。

火花の作成 ​

  1. Hierarchyで空のGameObjectを作り、HitEffectと名付けます。PositionとRotationを0、Scaleを1にします。
  2. 子にParticle Systemを作成し、Sparksと名付けます。子のLocal Positionも0にします。
  3. 次の値を設定し、RendererのMaterialへParticleAdditiveを割り当てます。
場所項目開始値
MainDuration / Looping0.5秒 / Off
MainStart Lifetime / Start Speed0.25秒 / 5
MainStart Size / Start Color0.08 / 黄色、Alpha 1
MainPlay On Awake / Stop ActionOn / None
EmissionRate over Time0
EmissionBurstsTime 0、Count 12、Cycles 1、Probability 1
ShapeShape / RadiusSphere / 0.05

Burstは指定時刻にまとめて出す設定です。Play Modeで火花が一度だけ出て、外へ移動して消えるか確認します。色や画像の調整より先に、発生回数と移動を確認してください。

Color over Lifetimeを有効にし、色を黄色からオレンジ、Alphaを発生時1から寿命の終わり0へ変えます。Size over Lifetimeも有効にし、横軸0で1、横軸1で0のカーブを設定します。このサイズはStart Sizeへ掛ける倍率です。再生して、火花が徐々に細く消えるかを確かめます。

中心フラッシュの追加 ​

フラッシュは、火花よりも短い中心の光です。動かさない粒子を一つだけ出し、最初の瞬間を強調します。

  1. HitEffectの子に新しいParticle Systemを追加し、Flashと名付けます。Local Position・Rotationを(0, 0, 0)、Scaleを(1, 1, 1)にします。
  2. LoopingをOff、Durationを0.5、Start Lifetimeを0.1、Start Speedを0、Start Sizeを0.8にします。
  3. Rate over Timeを0、BurstのTimeを0、Countを1、Cyclesを1にし、Shapeを無効にします。
  4. Start Colorを白、Play On AwakeをOn、Stop ActionをNoneにします。RendererにはParticleAdditiveを割り当てます。
  5. Color over LifetimeでAlphaを1から0へ変えます。
  6. まずSparksを無効にしてFlashだけを再生し、その後Sparksを有効へ戻して全体を再生します。

画像が未設定なら四角い粒で確認できます。円形や柔らかな輪郭の画像を使用する場合はMaterialを複製してFlash専用にし、出典と利用条件を記録してください。発生数・寿命・中心位置が確認できてから形を調整します。

同時再生と時間差の比較 ​

親のHitEffectを複製してHitBaselineと名付け、無効にして残します。比較中は有効な親を一つにし、同じカメラで再生します。

  1. FlashとSparksのStart Delayがともに0の状態を記録します。
  2. Play Modeを終了し、SparksのStart Delayだけを0.05秒へ変えます。
  3. 命中の瞬間と、火花が広がる順序がどう見えるか予想し、再生して確認します。
  4. Start Delayを0へ戻し、今度はFlashのStart Lifetimeだけを0.1から0.3へ変えます。
  5. 火花が読みにくくなるか比べ、寿命を0.1へ戻します。最後に採用する値を決めます。

時間差は大きければよいわけではありません。命中とは別の出来事に見えたり、中心の光が長く残って次の動作を隠したりしないか確認します。

親全体の終了とPrefab化 ​

子のParticle SystemにStop Action: Destroyを設定すると、その子は削除できますが、空の親HitEffectは残ります。複合エフェクトでは、すべての要素が終わってから親を削除します。

  1. 終了処理の補助スクリプトを展開します。第06回でも同じスクリプトを使用します。
  2. 展開したAssets/Scripts/DestroyAfterParticles.csと同名の.metaを、プロジェクトのAssets/Scriptsへコピーします。すでに取り込んでいる場合は追加不要です。
  3. 読み込み後、親HitEffectにDestroy After Particlesを追加します。
  4. 子すべてのLoopingをOff、Play On AwakeをOn、Stop ActionをNoneにそろえます。比較で無効にした子も有効へ戻します。
  5. Play Modeで、Flashが消えた後もSparksが最後まで再生され、その後Hierarchyから親も消えることを確認します。
  6. Play Modeを終了し、採用設定を編集モードで保存します。親をProjectのPrefabsへドラッグしてHitEffectを保存します。
  7. Scene上の親を削除してPrefabを配置し直し、同じ再生と終了を確認します。

親が残る場合は、LoopingがOnの子、長いStart DelayやLifetime、親の補助コンポーネントを確認します。編集時のParticle Effectプレビューでは、このスクリプトによる削除は行われません。

選択課題:リングまたは軌跡 ​

基本の2要素ができたら、どちらか一つを追加できます。

  • リングは子のParticle Systemを追加し、Flashと同じ一粒の設定から始めます。リング画像を使い、Size over Lifetimeを0から1へ増やして外へ広げます。Alphaは最後に0へします。
  • 火花の軌跡はSparksのTrailsを有効にし、RendererのTrail Materialを割り当てます。第07回で仕組みを詳しく扱うため、今回は短い尾の有無を比較します。

追加した子も、親全体の終了確認に含めてください。

授業内課題と完成条件 ​

  • 火花とフラッシュの2要素が一度だけ再生される
  • 色またはサイズが寿命に沿って変化する
  • 時間差か寿命を一つ変えた比較から、採用理由を説明できる
  • 最後の粒子が消えてから親全体が削除され、Prefabの再配置でも再生できる

結果の画像または短い動画と、各要素の役割、変更した値、改善したい点を提出します。録画する場合はUnity Recorderなどを使用できます。SceneをLesson04.unityとして保存してください。次回は、出続ける炎と煙の時間変化を扱います。