reckfellENGINE

VirtualJoystick

Сенсорный экранный джойстик, управляющий действиями Input.

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

VirtualJoystick принимает ScreenTouch/ScreenDrag в области Control, удерживая один индекс касания. Настройте четыре действия Input Map до использования и читайте их в логике движения. Это не драйвер физического геймпада; обычная мышь требует преобразования в сенсорные события.

Размер области Control задаёт зону приёма касания, JoystickSize — размер основания. Задавайте положительный JoystickSize и ClampzoneRatio, а DeadzoneRatio держите от 0 включительно до 1 исключительно. Released/Flicked передают последний обработанный вектор перед сбросом.

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

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

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

Создаёт сенсорный джойстик. Добавьте в UI, задайте область Control и действия до обработки касаний. Создание не создаёт новые действия Input Map.

Свойства11

ActionDownСвойство
# ActionDown
C#
public StringName ActionDown { get; set; }

Имя действия Input Map для положительной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

ActionLeftСвойство
# ActionLeft
C#
public StringName ActionLeft { get; set; }

Имя действия Input Map для отрицательной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

ActionRightСвойство
# ActionRight
C#
public StringName ActionRight { get; set; }

Имя действия Input Map для положительной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

ActionUpСвойство
# ActionUp
C#
public StringName ActionUp { get; set; }

Имя действия Input Map для отрицательной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

ClampzoneRatioСвойство
# ClampzoneRatio
C#
public float ClampzoneRatio { get; set; }

Множитель радиуса JoystickSize / 2, на котором выход достигает полной амплитуды. Требуется значение > 0: ноль приводит к делению на ноль при обработке ввода. Setter не ограничивает диапазон программного значения; настройте до удержания.

DeadzoneRatioСвойство
# DeadzoneRatio
C#
public float DeadzoneRatio { get; set; }

Доля clamp-радиуса без выходного движения. Используйте 0 <= ratio < 1. За мёртвой зоной амплитуда плавно перенормируется от 0 до 1; это не доля ширины экрана. Setter не ограничивает программное значение.

InitialOffsetRatioСвойство
# InitialOffsetRatio
C#
public Vector2 InitialOffsetRatio { get; set; }

Исходный центр как Size элемента × ratio по каждой оси; (0.5, 0.5) — середина. Не смещение в пикселях. Изменение сбрасывает касание/действия; изменение размера Control тоже сбрасывает джойстик.

JoystickModeСвойство
# JoystickMode
C#
public VirtualJoystick.JoystickModeEnum JoystickMode { get; set; }

Fixed использует исходный центр и принимает начало касания в прямоугольнике основания. Dynamic ставит центр в начало касания внутри Control. Following дополнительно сдвигает центр вслед за выходящим за clamp-радиус пальцем, пока тот в области Control. Не задаёт видимость элемента.

JoystickSizeСвойство
# JoystickSize
C#
public float JoystickSize { get; set; }

Размер основания в пикселях, используемый для радиуса управления как Size / 2. Задавайте положительное значение. Изменение сбрасывает текущее касание и действия; не равно полной зоне активации Control.

TipSizeСвойство
# TipSize
C#
public float TipSize { get; set; }

Размер рукоятки в пикселях; не задаёт амплитуду вектора управления. Изменение сбрасывает текущее касание и действия. Используйте положительное значение.

VisibilityModeСвойство
# VisibilityMode
C#
public VirtualJoystick.VisibilityModeEnum VisibilityMode { get; set; }

Always рисует джойстик постоянно; WhenTouched пропускает рисование без активного касания в игре. Это режим отрисовки, не Visible = false: зона ввода остаётся. В редакторе элемент виден для настройки.

Методы22

GetActionDownStringName
# GetActionDown
C#
public StringName GetActionDown();

Имя действия Input Map для положительной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

Возвращает StringName

Имя действия Input Map для положительной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

GetActionLeftStringName
# GetActionLeft
C#
public StringName GetActionLeft();

Имя действия Input Map для отрицательной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

Возвращает StringName

Имя действия Input Map для отрицательной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

GetActionRightStringName
# GetActionRight
C#
public StringName GetActionRight();

Имя действия Input Map для положительной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

Возвращает StringName

Имя действия Input Map для положительной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

GetActionUpStringName
# GetActionUp
C#
public StringName GetActionUp();

Имя действия Input Map для отрицательной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

Возвращает StringName

Имя действия Input Map для отрицательной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

GetClampzoneRatiofloat
# GetClampzoneRatio
C#
public float GetClampzoneRatio();

Множитель радиуса JoystickSize / 2, на котором выход достигает полной амплитуды. Требуется значение > 0: ноль приводит к делению на ноль при обработке ввода. Setter не ограничивает диапазон программного значения; настройте до удержания.

Возвращает float

Множитель радиуса JoystickSize / 2, на котором выход достигает полной амплитуды. Требуется значение > 0: ноль приводит к делению на ноль при обработке ввода. Setter не ограничивает диапазон программного значения; настройте до удержания.

GetDeadzoneRatiofloat
# GetDeadzoneRatio
C#
public float GetDeadzoneRatio();

Доля clamp-радиуса без выходного движения. Используйте 0 <= ratio < 1. За мёртвой зоной амплитуда плавно перенормируется от 0 до 1; это не доля ширины экрана. Setter не ограничивает программное значение.

Возвращает float

Доля clamp-радиуса без выходного движения. Используйте 0 <= ratio < 1. За мёртвой зоной амплитуда плавно перенормируется от 0 до 1; это не доля ширины экрана. Setter не ограничивает программное значение.

GetInitialOffsetRatioVector2
# GetInitialOffsetRatio
C#
public Vector2 GetInitialOffsetRatio();

Исходный центр как Size элемента × ratio по каждой оси; (0.5, 0.5) — середина. Не смещение в пикселях. Изменение сбрасывает касание/действия; изменение размера Control тоже сбрасывает джойстик.

Возвращает Vector2

Исходный центр как Size элемента × ratio по каждой оси; (0.5, 0.5) — середина. Не смещение в пикселях. Изменение сбрасывает касание/действия; изменение размера Control тоже сбрасывает джойстик.

GetJoystickModeVirtualJoystick.JoystickModeEnum
# GetJoystickMode
C#
public VirtualJoystick.JoystickModeEnum GetJoystickMode();

Fixed использует исходный центр и принимает начало касания в прямоугольнике основания. Dynamic ставит центр в начало касания внутри Control. Following дополнительно сдвигает центр вслед за выходящим за clamp-радиус пальцем, пока тот в области Control. Не задаёт видимость элемента.

Возвращает VirtualJoystick.JoystickModeEnum

Fixed использует исходный центр и принимает начало касания в прямоугольнике основания. Dynamic ставит центр в начало касания внутри Control. Following дополнительно сдвигает центр вслед за выходящим за clamp-радиус пальцем, пока тот в области Control. Не задаёт видимость элемента.

GetJoystickSizefloat
# GetJoystickSize
C#
public float GetJoystickSize();

Размер основания в пикселях, используемый для радиуса управления как Size / 2. Задавайте положительное значение. Изменение сбрасывает текущее касание и действия; не равно полной зоне активации Control.

Возвращает float

Размер основания в пикселях, используемый для радиуса управления как Size / 2. Задавайте положительное значение. Изменение сбрасывает текущее касание и действия; не равно полной зоне активации Control.

GetTipSizefloat
# GetTipSize
C#
public float GetTipSize();

Размер рукоятки в пикселях; не задаёт амплитуду вектора управления. Изменение сбрасывает текущее касание и действия. Используйте положительное значение.

Возвращает float

Размер рукоятки в пикселях; не задаёт амплитуду вектора управления. Изменение сбрасывает текущее касание и действия. Используйте положительное значение.

GetVisibilityModeVirtualJoystick.VisibilityModeEnum
# GetVisibilityMode
C#
public VirtualJoystick.VisibilityModeEnum GetVisibilityMode();

Always рисует джойстик постоянно; WhenTouched пропускает рисование без активного касания в игре. Это режим отрисовки, не Visible = false: зона ввода остаётся. В редакторе элемент виден для настройки.

Возвращает VirtualJoystick.VisibilityModeEnum

Always рисует джойстик постоянно; WhenTouched пропускает рисование без активного касания в игре. Это режим отрисовки, не Visible = false: зона ввода остаётся. В редакторе элемент виден для настройки.

SetActionDownvoid
# SetActionDown
C#
public void SetActionDown(StringName action);

Имя действия Input Map для положительной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

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

Имя заранее созданного действия Input Map.

SetActionLeftvoid
# SetActionLeft
C#
public void SetActionLeft(StringName action);

Имя действия Input Map для отрицательной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

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

Имя заранее созданного действия Input Map.

SetActionRightvoid
# SetActionRight
C#
public void SetActionRight(StringName action);

Имя действия Input Map для положительной X компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

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

Имя заранее созданного действия Input Map.

SetActionUpvoid
# SetActionUp
C#
public void SetActionUp(StringName action);

Имя действия Input Map для отрицательной Y компоненты. Сила берётся из обработанного вектора. Действие должно существовать до ввода. Настраивайте до удержания: смена имени не освобождает старое действие автоматически. Несколько виртуальных источников одних действий требуют координации, так как джойстик вызывает action_press/action_release.

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

Имя заранее созданного действия Input Map.

SetClampzoneRatiovoid
# SetClampzoneRatio
C#
public void SetClampzoneRatio(float ratio);

Множитель радиуса JoystickSize / 2, на котором выход достигает полной амплитуды. Требуется значение > 0: ноль приводит к делению на ноль при обработке ввода. Setter не ограничивает диапазон программного значения; настройте до удержания.

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

Коэффициент соответствующей области; допустимые условия см. в описании настройки.

SetDeadzoneRatiovoid
# SetDeadzoneRatio
C#
public void SetDeadzoneRatio(float ratio);

Доля clamp-радиуса без выходного движения. Используйте 0 <= ratio < 1. За мёртвой зоной амплитуда плавно перенормируется от 0 до 1; это не доля ширины экрана. Setter не ограничивает программное значение.

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

Коэффициент соответствующей области; допустимые условия см. в описании настройки.

SetInitialOffsetRatiovoid
# SetInitialOffsetRatio
C#
public void SetInitialOffsetRatio(Vector2 ratio);

Исходный центр как Size элемента × ratio по каждой оси; (0.5, 0.5) — середина. Не смещение в пикселях. Изменение сбрасывает касание/действия; изменение размера Control тоже сбрасывает джойстик.

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

Коэффициент соответствующей области; допустимые условия см. в описании настройки.

SetJoystickModevoid
# SetJoystickMode
C#
public void SetJoystickMode(VirtualJoystick.JoystickModeEnum mode);

Fixed использует исходный центр и принимает начало касания в прямоугольнике основания. Dynamic ставит центр в начало касания внутри Control. Following дополнительно сдвигает центр вслед за выходящим за clamp-радиус пальцем, пока тот в области Control. Не задаёт видимость элемента.

Параметры
ИмяТипПо умолчанию
modeVirtualJoystick.JoystickModeEnum—
mode

Режим расположения или видимости джойстика согласно типу аргумента.

SetJoystickSizevoid
# SetJoystickSize
C#
public void SetJoystickSize(float size);

Размер основания в пикселях, используемый для радиуса управления как Size / 2. Задавайте положительное значение. Изменение сбрасывает текущее касание и действия; не равно полной зоне активации Control.

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

Положительный размер основания или рукоятки в пикселях.

SetTipSizevoid
# SetTipSize
C#
public void SetTipSize(float size);

Размер рукоятки в пикселях; не задаёт амплитуду вектора управления. Изменение сбрасывает текущее касание и действия. Используйте положительное значение.

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

Положительный размер основания или рукоятки в пикселях.

SetVisibilityModevoid
# SetVisibilityMode
C#
public void SetVisibilityMode(VirtualJoystick.VisibilityModeEnum mode);

Always рисует джойстик постоянно; WhenTouched пропускает рисование без активного касания в игре. Это режим отрисовки, не Visible = false: зона ввода остаётся. В редакторе элемент виден для настройки.

Параметры
ИмяТипПо умолчанию
modeVirtualJoystick.VisibilityModeEnum—
mode

Режим расположения или видимости джойстика согласно типу аргумента.

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

FlickCanceledСобытие
# FlickCanceled
C#
public event Action FlickCanceled;

Переход из ненулевого ввода обратно в мёртвую зону помечает flick как отменённый. Это не системное событие отмены касания. Повторный выход из мёртвой зоны может снова разрешить flick.

FlickedСобытие
# Flicked
C#
public event VirtualJoystick.FlickedEventHandler Flicked;

При отпускании после перетаскивания с ненулевым выходом передаёт последний обработанный вектор. Не вычисляет скорость жеста или импульс броска; при необходимости вычисляйте их отдельно.

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

Последний обработанный вектор: X вправо, Y вниз; длина до 1 при корректных настройках.

PressedСобытие
# Pressed
C#
public event Action Pressed;

Начало принятого касания. Джойстик обрабатывает один индекс касания; дополнительные касания не становятся вторым независимым стиком этого элемента.

ReleasedСобытие
# Released
C#
public event VirtualJoystick.ReleasedEventHandler Released;

Передаёт последний вектор после мёртвой зоны при отпускании, до сброса в ноль. Это итог текущего касания, не непрерывное событие движения. Сразу после него могут прийти Tapped или Flicked.

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

Последний обработанный вектор: X вправо, Y вниз; длина до 1 при корректных настройках.

TappedСобытие
# Tapped
C#
public event Action Tapped;

Испускается при отпускании без ScreenDrag и без отмены flick-состояния. Длительность удержания не ограничивается: это не распознавание только короткого тапа.

VirtualJoystick.JoystickModeEnum

ЗначениеОписание
Dynamic = 1

Джойстик перемещается в исходное положение касания, пока находится в пределах его зоны действия. При отпускании он возвращается в исходное положение.

Fixed = 0

Джойстик не двигается.

Following = 2

Джойстик перемещается в исходное положение касания, пока находится в пределах его зоны действия. Он будет следовать за касанием, если оно выйдет за пределы зоны действия джойстика. При отпускании он возвращается в исходное положение.

VirtualJoystick.VisibilityModeEnum

ЗначениеОписание
Always = 0

Джойстик всегда на виду.

WhenTouched = 1

Джойстик виден только при прикосновении.

Свойства темы

Это ключи ресурсов Theme, а не свойства C# класса. Используйте методы GetTheme…() и AddTheme…Override() у Control с соответствующим типом значения.

Ключ и типОписание
normal_joystick
StyleBox

Базовый джойстик StyleBox.

normal_tip
StyleBox

Подсказка для джойстика StyleBox.

pressed_joystick
StyleBox

Базовый джойстик StyleBox при нажатии.

pressed_tip
StyleBox

Стиль StyleBox для наконечника джойстика при нажатии.

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

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

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

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