Попадания и координаты
Контроллер передаёт физическую точку на полотне. SDK помогает преобразовать её в координаты вашей сцены.
Поля VorivoxHit
| Поле | Описание |
|---|---|
ShotId | Уникальный идентификатор выстрела в рамках сеанса. |
XMm, YMm | Координаты в миллиметрах. |
NormalizedX, NormalizedY | Значение 0…1, начало снизу слева. |
Source | controller, mock или диагностический источник. |
Canvas UI
private void OnHit(VorivoxHit hit)
{
Vector2 localPoint = hit.ToCanvasLocal(playfield);
impactMarker.anchoredPosition = localPoint;
}
3D-сцена
Для рельсового шутера используйте нормализованную координату как viewport point камеры:
Vector3 viewport = new(hit.NormalizedX, hit.NormalizedY, 0f);
Ray ray = gameplayCamera.ViewportPointToRay(viewport);
if (Physics.Raycast(ray, out RaycastHit info, 200f, hitMask))
{
info.collider.GetComponent()?.ApplyHit(info.point);
}
Letterbox и активная область
Если проектор показывает игру с полями, координаты нужно сопоставлять с реальной активной областью. Не рассчитывайте координату по Screen.width вручную — используйте RectTransform игровой зоны или функцию SDK.
Уточнение преобразований 1.8
Старый ToScreenPixels возвращает пиксели с началом сверху слева. Для ясности добавлен ToTopLeftPixels; для Unity Screen используется ToUnityScreenPixels без инверсии Y. Для камеры предпочтителен ViewportPointToRay. Letterbox сначала требует нормализации относительно физической активной области; один RectTransform не решает эту задачу автоматически.