Пример: спортивная мишень
Серия из 10 выстрелов, кольца 1–10, один видимый маркер последнего попадания и общий результат из 100.
Структура сцены
Canvas
├── TargetPlayfield
│ ├── Rings
│ └── LastHitMarker
├── ScorePanel
├── ShotCounter
└── ResultPanel
VORIVOX SDK
GameController
Логика попадания
private void OnHit(VorivoxHit hit)
{
if (!roundActive || shotCount >= 10)
return;
Vector2 point = hit.ToCanvasLocal(playfield);
float radius = point.magnitude / targetRadius;
int ring = CalculateRing(radius);
shotCount++;
totalScore += ring;
ShowOnlyLastMarker(point, ring);
RefreshHud();
if (shotCount == 10)
FinishRound();
}
Расчёт кольца
private static int CalculateRing(float normalizedRadius)
{
if (normalizedRadius > 1f) return 0;
return Mathf.Clamp(10 - Mathf.FloorToInt(normalizedRadius * 10f), 1, 10);
}
Для реального спортивного шаблона радиусы колец следует хранить в конфигурации, а не предполагать одинаковую ширину каждого кольца.