Все значения для оси находятся в интервале [-1, 1]
, поэтому, если вы хотите изменить чувствительность ручки, вы можете (например) разделить зону на 10 или более частей и изменить используемое возвращаемое значение:
например, чтобы добавить меньшую чувствительность для оси: вы можете сделать это:
float x = Input.GetAxis("what you want") ;
if ( x > -0.1 && x < 0.1) // less sensivity at deadzone
x = 0;
else if (x > -0.3 && x < -0.2)
x = -0.1;
else if
and so on
then you use the value x to inject in your program and not the value of Input.GetAxis
, чтобы вы могли калибровать каждую зону с желаемым значением
у вас может быть линейная функция, отличающаяся в каждой зоне
, или применить новую функцию к оси.
например, у вас много кривой джойстика ЗДЕСЬ
и если вы выберете первую кривую
f (x) = x * (s / 9) + (x ^ 5) * (9-s) / 9 с s = 0, вы иметь:
f (x) = x ^ 5
для х в [0, 1] у вас есть f (x) в [0,1]
для х в [-1, 0] у вас есть f (x) в [-1,0],
, поэтому в программе вы можете написать:
float x = Input.GetAxis("what you want");
x = Mathf.Pow( x, 5);