現在開発中のアプリ「弾律 -Danritsu-」では、弾の流れや強化をプレイヤーが戦略的に構築していくというコアシステムにおいて、**分岐方向の確率を視覚化する仕組み(Heatmap)**が重要な役割を担っています。
この記事では、その中核機能である HeatmapDrawer
を活用したUI演出について、実装コードとともに解説します。
なぜ進行方向の確率を見せるのか?
タイルによっては弾が複数方向に分岐する可能性があり、それぞれの分岐は内部的に確率で制御されています。 この確率分布を視覚的にプレイヤーへ示すことで、以下のようなメリットが生まれます:
- プレイヤーが「どの方向に進みやすいか」を瞬時に判断できる
- ルート構築の直感性が上がり、テンポ感が向上
- 操作しなくても“戦略の手触り”が伝わるUIになる
実装:HeatmapDrawer の中核ロジック
以下は実際の HeatmapDrawer.cs
における色算出処理の抜粋です。
private Color CalculateHeatmapColor(PhaseWeight weight, PhaseType phase)
{
int total = weight.up + weight.down + weight.straight;
if (total == 0) return new Color(0.2f, 0.2f, 0.2f, 0.2f);
float upRatio = weight.up / (float)total;
float downRatio = weight.down / (float)total;
float straightRatio = weight.straight / (float)total;
Color upColor = new Color(1f, 0.2f, 0.2f); // 赤:上方向
Color downColor = new Color(0.2f, 0.5f, 1f); // 青:下方向
Color straightColor = Color.white; // 白:直進
// 混色処理
Color mixUpDown = Color.Lerp(upColor, downColor, downRatio / (upRatio + downRatio + 0.001f));
Color blended = Color.Lerp(mixUpDown, straightColor, straightRatio);
return Color.Lerp(new Color(0.2f, 0.2f, 0.2f), blended, 0.7f);
}
→ 各マスにおける方向選択の確率を色でブレンド表示し、進行予測に深みを与えます。
色の意味とプレイヤーへの伝わり方
- 🔴 赤みが強い=上方向に進む確率が高い
- 🔵 青みが強い=下方向に進む確率が高い
- ⚪ 白に近い=直進の確率が高い
- グレー寄り=分岐未定 or 無効タイル
このように、確率の“傾き”を色彩で感じ取れる設計にしているため、情報量が多くても視認的な理解がしやすくなっています。
今後の拡張予定
- 分岐確率の履歴を残し、戦略の振り返りが可能に
- フェーズごとに色ブレンドを変えてよりコントラストのある表現へ
HeatmapDrawerは“確率で動くロジック”を“感覚的に可視化する”架け橋です。UIによって見えないはずの裏側が伝わることで、プレイ感や戦術性が大きく変わっていきます。
コメント