Вопрос по GetAxis

Программирование на Юнити.

Вопрос по GetAxis

Сообщение Pegacy 24 авг 2020, 21:53

Возможно ли перехватить только одну из клавиш от Input.GetAxis("Horizontal");?
В самой Юнити оно же указывается как Horizontal (+) и Horizontal (-). Как получить доступ отдельно к этим компонентам?
Pegacy
UNец
 
Сообщения: 12
Зарегистрирован: 29 май 2019, 11:40

Re: Вопрос по GetAxis

Сообщение erora 24 авг 2020, 22:09

Вы хотите двигаться в одну сторону (или + или -)? Задайте ограничения через 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;
}


Писал от руки, но должно работать!
Аватара пользователя
erora
UNец
 
Сообщения: 42
Зарегистрирован: 11 июн 2020, 15:15

Re: Вопрос по GetAxis

Сообщение Pegacy 24 авг 2020, 22:21

Нет, мне нужно проверить нажатие каждой из клавиш из Horizontal через GetKeyDown и GetKeyUp.
Pegacy
UNец
 
Сообщения: 12
Зарегистрирован: 29 май 2019, 11:40

Re: Вопрос по GetAxis

Сообщение erora 24 авг 2020, 22:46

Синтаксис:
Используется csharp
if(Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow)){
// вы нажали влево
}
if(Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow)){
// вы нажали вправо
}
Аватара пользователя
erora
UNец
 
Сообщения: 42
Зарегистрирован: 11 июн 2020, 15:15

Re: Вопрос по GetAxis

Сообщение Pegacy 25 авг 2020, 00:16

Да я использую пока именно такой метод, но в таком случае оно не обращается к Horizontal меню настроек самой Юнити, здесь мы просто хардкодим конкретную клавишу.
Pegacy
UNец
 
Сообщения: 12
Зарегистрирован: 29 май 2019, 11:40

Re: Вопрос по GetAxis

Сообщение MrDmitry 25 авг 2020, 06:39

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




https://docs.unity3d.com/ScriptReferenc ... tAxis.html
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Вопрос по GetAxis

Сообщение waruiyume 25 авг 2020, 08:01

if(Input.GetAxis("Horizontal") == -1)

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

Вообще уже есть новая, событийная, система ввода, может там это реализовано из коробки(сам новую систему ещё не пробовал)
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Вопрос по GetAxis

Сообщение MrDmitry 27 авг 2020, 06:54

А что если так?


Синтаксис:
Используется csharp
if(Input.GetAxis("Horizontal") < 0)
{
 //лево
}
if(Input.GetAxis("Horizontal") > 0)
{
 //Право
}
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14