Страница 1 из 1

Вопрос по GetAxis

СообщениеДобавлено: 24 авг 2020, 21:53
Pegacy
Возможно ли перехватить только одну из клавиш от Input.GetAxis("Horizontal");?
В самой Юнити оно же указывается как Horizontal (+) и Horizontal (-). Как получить доступ отдельно к этим компонентам?

Re: Вопрос по GetAxis

СообщениеДобавлено: 24 авг 2020, 22:09
erora
Вы хотите двигаться в одну сторону (или + или -)? Задайте ограничения через Clamp, в зависимости в какую сторону надо.

Синтаксис:
Используется csharp
float speedHor = Input.GetAxis("Horizontal");
speedHor = Mathf.Clamp(speedHor, -1, 0) //если нужно в минус.
speedHor = Mathf.Clamp(speedHor, 0, 1) //если нужно в плюс.


или делайте через if проверку

Синтаксис:
Используется csharp
float speedHor = Input.GetAxis("Horizontal");
if(speedHor > 0){ //если нужно в минус.
speedHor = 0;
}

if(speedHor < 0){ //если нужно в плюс.
speedHor = 0;
}


Писал от руки, но должно работать!

Re: Вопрос по GetAxis

СообщениеДобавлено: 24 авг 2020, 22:21
Pegacy
Нет, мне нужно проверить нажатие каждой из клавиш из Horizontal через GetKeyDown и GetKeyUp.

Re: Вопрос по GetAxis

СообщениеДобавлено: 24 авг 2020, 22:46
erora
Синтаксис:
Используется csharp
if(Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow)){
// вы нажали влево
}
if(Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow)){
// вы нажали вправо
}

Re: Вопрос по GetAxis

СообщениеДобавлено: 25 авг 2020, 00:16
Pegacy
Да я использую пока именно такой метод, но в таком случае оно не обращается к Horizontal меню настроек самой Юнити, здесь мы просто хардкодим конкретную клавишу.

Re: Вопрос по GetAxis

СообщениеДобавлено: 25 авг 2020, 06:39
MrDmitry
Синтаксис:
Используется csharp
if(Input.GetAxis("Horizontal") == -1)
{
 //лево
}
if(Input.GetAxis("Horizontal") == 1)
{
 //Право
}




https://docs.unity3d.com/ScriptReferenc ... tAxis.html

Re: Вопрос по GetAxis

СообщениеДобавлено: 25 авг 2020, 08:01
waruiyume
if(Input.GetAxis("Horizontal") == -1)

Так делать нельзя, во-первых потому, что float, во-вторых потому, что если ввод будет с физического стика, у того просто может не быть значение 1, это чисто физически может быть невозможно, даже если бы использовался double, а не float. Т.ч. if(Input.GetAxis("Horizontal") > 0.1f)

Вообще уже есть новая, событийная, система ввода, может там это реализовано из коробки(сам новую систему ещё не пробовал)

Re: Вопрос по GetAxis

СообщениеДобавлено: 27 авг 2020, 06:54
MrDmitry
А что если так?


Синтаксис:
Используется csharp
if(Input.GetAxis("Horizontal") < 0)
{
 //лево
}
if(Input.GetAxis("Horizontal") > 0)
{
 //Право
}