Как отслеживать удержание клавиши в новой системе ввода inputSystem?
Вот рабочий код, который позволяет получать значение клавиш.
// Значения с устройств ввода (клавиатуры, джойстика и т.д.)
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?
Источник: Stack Overflow на русском