reckfellENGINE

XRController3D

Контроллер в XR-риге: pose и именованный ввод.

На этой странице
class XRController3DReckfellSharpНаследует XREntity3D

XRController3D связывает Entity с tracker контроллера. Добавьте его непосредственно под XROrigin3D; сначала задайте Tracker=left_hand или right_hand, затем Pose=grip для модели удерживаемого предмета. Числовые ID 1/2 здесь не используются. Модель размещайте дочерним Entity и корректируйте её локальный трансформ, поскольку tracking заменяет трансформ контроллера.

IsButtonPressed, GetFloat и GetVector2 читают действия по внутренним именам карты, не по подписям или путям кнопок. Без tracker значения нейтральны; это не доказательство подключения. Методы не проверяют фокус, tracking и допустимость взаимодействия за вас. GetInput возвращает Variant исходного типа, который нужно освобождать через using.

События ввода передаются от привязанного tracker и отключаются при отвязке. InputFloatChanged передаёт double, хотя GetFloat возвращает float. ProfileChanged передаёт строку профиля, несмотря на имя аргумента role. Удаление устройства не гарантирует событие ButtonReleased для всех удерживаемых действий: очищайте состояние взаимодействий при потере устройства или фокуса.

Проверены искусственный tracker, ввод и преобразования, события, дочерние трансформы и отвязка на установленном runtime. Реальная гарнитура, физическая вибрация и изображение не проверены. Практическая настройка: компоненты XR.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

XRController3DКонструктор
# XRController3D
C#
public XRController3D();

Создаёт отслеживаемый Entity без выбранного tracker. Добавьте непосредственно под XROrigin3D, задайте Tracker, затем Pose. Модель размещайте дочерним Entity.

Методы5

GetFloatfloat
# GetFloat
C#
public float GetFloat(StringName name);

Читает действие: Float возвращается как float, Bool преобразуется в 1 или 0. Для Vector2, отсутствующего значения или tracker возвращает 0. Не нормализует и не ограничивает диапазон.

Параметры
ИмяТипПо умолчанию
nameStringName—
name

Точное внутреннее имя действия из карты; не подпись, не путь кнопки и не обычный InputMap.

Возвращает float

float значения; Bool даёт 0/1, несовместимый тип или отсутствие — 0.

GetInputVariant
# GetInput
C#
public Variant GetInput(StringName name);

Возвращает исходный Variant значения действия. Без tracker или неизвестного имени — Variant.Type.Nil. Проверяйте тип перед преобразованием; полученную C# обёртку Variant освобождайте через using. Это не событие и не подтверждение tracking.

Параметры
ИмяТипПо умолчанию
nameStringName—
name

Точное внутреннее имя действия из карты; не подпись, не путь кнопки и не обычный InputMap.

Возвращает Variant

Variant исходного типа либо Nil. Освободите C# обёртку через using.

GetTrackerHandXRPositionalTracker.TrackerHand
# GetTrackerHand
C#
public XRPositionalTracker.TrackerHand GetTrackerHand();

Читает Hand привязанного tracker; без tracker возвращает Unknown. Значение не выводится из строки Tracker. Принадлежность руке не означает наличие актуальной pose или ввода.

Возвращает XRPositionalTracker.TrackerHand

Hand tracker либо Unknown; не вычисляется из его имени.

GetVector2Vector2
# GetVector2
C#
public Vector2 GetVector2(StringName name);

Читает Vector2 действия без изменения. Float преобразуется в (value, 0), Bool — в (1, 0) или (0, 0); неизвестное значение или отсутствующий tracker дают Vector2.Zero. Не применяет dead zone и не нормализует.

Параметры
ИмяТипПо умолчанию
nameStringName—
name

Точное внутреннее имя действия из карты; не подпись, не путь кнопки и не обычный InputMap.

Возвращает Vector2

Vector2; скаляр помещается в X, отсутствие даёт Vector2.Zero.

IsButtonPressedbool
# IsButtonPressed
C#
public bool IsButtonPressed(StringName name);

Читает текущее булево значение действия по внутреннему имени, не событие одного кадра. Без tracker или значения возвращает false. Метод не проверяет фокус или свежесть pose; выполняйте эти проверки отдельно.

Параметры
ИмяТипПо умолчанию
nameStringName—
name

Точное внутреннее имя действия из карты; не подпись, не путь кнопки и не обычный InputMap.

Возвращает bool

Текущее bool; false также при отсутствии ввода или tracker.

Сигналы и события5

ButtonPressedСобытие
# ButtonPressed
C#
public event XRController3D.ButtonPressedEventHandler ButtonPressed;

Передаёт событие tracker при изменении булевого действия на true с его внутренним именем. Не испускается каждый кадр удержания. Не проверяет фокус и tracking; отсутствие tracker не создаёт синтетическое нажатие.

Параметры обработчика
ИмяТипПо умолчанию
actionNamestring—
actionName

Внутреннее имя действия. Для запроса вибрации нужно настроенное выходное действие.

ButtonReleasedСобытие
# ButtonReleased
C#
public event XRController3D.ButtonReleasedEventHandler ButtonReleased;

Передаёт событие tracker при изменении булевого действия на false. Удаление tracker само по себе не генерирует отпускание всех кнопок: сбрасывайте состояние взаимодействия при потере устройства или фокуса.

Параметры обработчика
ИмяТипПо умолчанию
actionNamestring—
actionName

Внутреннее имя действия. Для запроса вибрации нужно настроенное выходное действие.

InputFloatChangedСобытие
# InputFloatChanged
C#
public event XRController3D.InputFloatChangedEventHandler InputFloatChanged;

Передаёт изменившееся числовое действие и его имя. Параметр value в C# событии имеет тип double; GetFloat возвращает float. Повтор того же значения не создаёт событие в проверенном tracker. Автоматической проверки фокуса нет.

Параметры обработчика
ИмяТипПо умолчанию
actionNamestring—
valuedouble—
actionName

Внутреннее имя действия. Для запроса вибрации нужно настроенное выходное действие.

value

Новое значение double события; не float возвращаемого GetFloat.

InputVector2ChangedСобытие
# InputVector2Changed
C#
public event XRController3D.InputVector2ChangedEventHandler InputVector2Changed;

Передаёт изменившееся действие Vector2 и внутреннее имя. Не нормализует оси и не добавляет dead zone. После отвязки старого tracker его события больше не пересылаются.

Параметры обработчика
ИмяТипПо умолчанию
actionNamestring—
valueVector2—
actionName

Внутреннее имя действия. Для запроса вибрации нужно настроенное выходное действие.

value

Новый Vector2 без dead zone и нормализации.

ProfileChangedСобытие
# ProfileChanged
C#
public event XRController3D.ProfileChangedEventHandler ProfileChanged;

Передаёт изменение профиля привязанного tracker. Несмотря на имя параметра role, его значение — строка профиля, например путь interaction profile, а не left/right. Это не подтверждение поддержки всех привязок runtime.

Параметры обработчика
ИмяТипПо умолчанию
rolestring—
role

Строка профиля tracker; имя параметра историческое, это не принадлежность руке.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.