前回の記事では、ホーミング弾の挙動と被弾時エフェクトを中心に設計手法を紹介しました。今回は、ドローン側のビジュアル演出強化について、3つの観点から技術的に深掘りしていきます:
- 回転するギアUIによるHP表現
- 残像を活かしたスピード感の演出
- シールドによる視覚的防御手段
回転ギアでHPを可視化する:視覚的フィードバックの工夫
EVADRONEでは、ドローンのHP残量を数字ではなく回転するギアの数で可視化しています。これにより、被弾時の視覚的インパクトが強まり、没入感のある戦闘演出が可能になります。
// DroneController.cs - CreateGears()
float angle = i * Mathf.PI * 2 / (int)maxHP;
Vector3 offset1 = new Vector3(Mathf.Cos(angle), Mathf.Sin(angle), 0) * gearRadius;
GameObject gear1 = Instantiate(gearIconPrefab, transform.position + offset1, Quaternion.identity, transform);
実装上の工夫点:
- 白系(外周)と赤系(内周)の2層構造でHPアイコンを配置。
Time.time * 回転速度 + 角度ステップ
によりギアが等速回転。
// DroneController.cs - RotateGears()
float angle1 = (Time.time * gearRotateSpeed + angleStep * i) * Mathf.Deg2Rad;
gearIcons[i].transform.localPosition = offset1;
残像エフェクトによるスピード演出:Ghostパターンの管理
残像(ゴースト)を定期的に生成し、古いものから順に削除することでスピード感ある軌跡を演出します。
// DroneController.cs - SpawnGhost()
GameObject ghost = Instantiate(ghostPrefab, transform.position, transform.rotation);
ghostQueue.Enqueue(ghost);
if (ghostQueue.Count > ghostCount)
{
GameObject oldGhost = ghostQueue.Dequeue();
Destroy(oldGhost);
}
- ゴーストは
GhostFade.cs
で徐々に透明度が減少 - 最大表示数をQueueで制御 → メモリ負荷を抑える工夫
回転シールド:ドローン周囲を守るビジュアル
DroneShield.cs
では、ドローンの周囲を一定速度で回転するシールドオブジェクトを制御しています。
// DroneShield.cs - Update()
currentAngle += rotateSpeed * Time.deltaTime;
Vector3 offset = new Vector3(Mathf.Cos(rad), Mathf.Sin(rad), 0f) * radius;
transform.position = target.position + offset;
- 弾がシールドに接触すると、
ShieldHitEffect
が発生し演出強化 - シールド画像の角度に合わせた回転補正も
rotationOffset
で対応
transform.rotation = Quaternion.Euler(0f, 0f, currentAngle + rotationOffset);
💡 技術的まとめ
機能 | 使用スクリプト | 特徴 |
---|---|---|
ギア型HP表示 | DroneController.cs | 2層・等速回転・被弾で非表示 |
残像 | DroneController.cs , GhostFade.cs | Queue管理・アルファフェード |
回転シールド | DroneShield.cs | 自動追従・360度カバー |
次回は、攻撃側の設計に戻り、弾の種類とその処理・バリエーションについて詳しく解説します。
コメント