Тримминг Input оси для джойстика.

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

Тримминг Input оси для джойстика.

Сообщение Sandirk 09 ноя 2019, 19:31

Здравствуйте.
Я использую джойстик, у которого стик не центруется по середине, а остаётся в том же положении в котором его оставили по вертикали. Есть скрипт, (Прикреплен фрагмент) который при движении джойстика вверх или вниз создаёт силу, действующую на объект (Поднимаю стик вверх - силиа действует в одном направлении, опускаю вниз - сила действует в другом направлении). Мне нужно сделать так, чтобы в опущенном вниз состоянии стика, действующая на объект сила была равна нулю, а не отрицательному её значению, ну и максимальному значению в поднятом состоянии.

Как вариант к значению сигнала оси можно добавлять значение, которое бы компенсировало значение оси при опущенном джойстике. (Ну типо при опущенном джойстике значение сигнала -500, а мы к значению всё время прибавляем +500, чтобы компенсировать значение и приводить его к нулю. Надеюсь так понятнее). Однако я не знаю как такое реализовать и будет ли это рабочим решением.

Синтаксис:
Используется csharp
RigBody.AddForce(Input.GetAxis("Engine") * transform.up * EngineThrottle);


Заранее спасибо за помощь.
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48

Re: Тримминг Input оси для джойстика.

Сообщение 1max1 09 ноя 2019, 19:46

var v = Input.GetAxis("Engine");
if (v < 0.0f) v = 0.0f;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Тримминг Input оси для джойстика.

Сообщение Sandirk 09 ноя 2019, 21:03

1max1 писал(а):var v = Input.GetAxis("Engine");
if (v < 0.0f) v = 0.0f;


Что-то не работает. Возможно я просто не правильно использовал эту часть кода.
Последний раз редактировалось Sandirk 09 ноя 2019, 22:04, всего редактировалось 1 раз.
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48

Re: Тримминг Input оси для джойстика.

Сообщение Sandirk 09 ноя 2019, 21:16

1max1 писал(а):var v = Input.GetAxis("Engine");
if (v < 0.0f) v = 0.0f;

+ Мне кажется, что если я использую ваш код, то в тот момент, пока джойстик ниже центра значение силы будет всегда нулевым. Мне же нужно чтобы ноль был внизу, максимальное значение наверху, а между ними были бы средние значения.
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48

Re: Тримминг Input оси для джойстика.

Сообщение Sandirk 09 ноя 2019, 21:43

Можно задать вопрос иначе: Как определить для оси нулевое положение?
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48

Re: Тримминг Input оси для джойстика.

Сообщение 1max1 09 ноя 2019, 21:48

Сначала узнай максимальное минимальное значение, ну а потом добавь его, это же элементарно...
var v = Input.GetAxis("Engine") + maxValue;
RigBody.AddForce(v * transform.up * EngineThrottle);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Тримминг Input оси для джойстика.

Сообщение Sandirk 09 ноя 2019, 22:03

1max1 писал(а):Сначала узнай максимальное минимальное значение, ну а потом добавь его, это же элементарно...
var v = Input.GetAxis("Engine") + maxValue;
RigBody.AddForce(v * transform.up * EngineThrottle);


То, что надо, спасибо.
(3A4OT)
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48


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

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

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