Как отслеживать удержание клавиши в новой системе ввода inputSystem?

Рейтинг: 0Ответов: 0Опубликовано: 08.04.2023

Вот рабочий код, который позволяет получать значение клавиш.

// Значения с устройств ввода (клавиатуры, джойстика и т.д.)
float XAxisInputValue;
float YAxisInputValue;

private InputSystem inputSystem;
private void OnEnable(){inputSystem.Enable();}
private void OnDisable(){inputSystem.Disable();}
private void Awake()
{
inputSystem = new InputSystem();

// Подписываемся на события.
//YAxis
inputSystem.Main.YAxis.performed+=YAxis_performed; // Нажатие клавиши.
inputSystem.Main.YAxis.started+=YAxis_started; // Удержание клавиши (?? на самом деле нет).
inputSystem.Main.YAxis.canceled+=YAxis_canceled; // Отпустили клавишу.
}


// Метод для нажатия клавиши
private void YAxis_performed(UnityEngine.InputSystem.InputAction.CallbackContext obj){YAxisInputValue = obj.ReadValue<float>(); }
// Метод для удержания клавиши.
private void YAxis_started(UnityEngine.InputSystem.InputAction.CallbackContext obj){YAxisInputValue = obj.ReadValue<float>();}
// Метод для отпускания клавиши.
private void YAxis_canceled(UnityEngine.InputSystem.InputAction.CallbackContext obj){YAxisInputValue = obj.ReadValue<float>();  }

Клавиша пробел

Вот эта клавиша - пробел.

Проблема в том, что и при нажатии и при удержании возвращается значение 1. В результате не ясно что это - однократное нажатие или удержание.

Мне нужно как то отследить удержание клавиши, подобно этому коду

// Если нажали на пробел - значит начали прыжок
if (Input.GetKeyDown(KeyCode.Space)) isJumping=true;

// Если отпустили пробел - значит прыгаем.
if (Input.GetKeyUp(KeyCode.Space)) jumpNow=true;

Причем не привязываясь к конкретным клавишам. Ведь мы их должны привязывать в визуальном редакторе InputSystem. То есть вот этот код

jumpInput = new InputAction("Jump", InputActionType.Button);
jumpInput.AddBinding("<Gamepad>/buttonSouth"); // кнопка A на геймпаде
jumpInput.AddBinding("<Keyboard>/space"); // пробел на клавиатуре

Мягко говоря странный так как дублирует визуальный редактор InputSystem. мы там задаем биндинги, а теперь дублируем/задаем это в коде. Это не нормально.

Как отслеживать удержание клавиши из моего раздела YAxis?

Ответы

Ответов пока нет.