Изменить чувствительность джойстиков контроллера PS3 в Unity - PullRequest
0 голосов
/ 01 апреля 2020

Сейчас я работаю над проектом и тестирую его с моим контроллером PS3, и некоторая механика игры заключается в том, чтобы уклониться от атаки противника, если игрок перемещает левую палку один раз влево или вправо, вверх или вниз. И если игрок двинет палку дважды, персонаж сделает бросок. Но посланник, который имеет палка, слишком высок, чтобы игроку пришлось делать очень быстрое движение, чтобы увернуться, и если он недостаточно быстр, он просто катится и продолжает катиться, если игрок держит палку в одном направлении.

Итак, вот вопрос: как я могу изменить чувствительность флешки?

Я попытался изменить значение в Менеджере ввода, но оно не работает (если я поставлю большее число, проблема останется, и если Я поставил меньшее число, оно не работает).

Диспетчер ввода

Это код, который я сделал для выполнения бросков:

#region Forward
        if (Input.GetAxis("Mouse Y") <= -0.1 && forwardRoll)
        {
            if (timeToRoll > 0)
            {
                animatorController.SetBool("RollForward", true);
                yield return new WaitForSeconds(0.01f);
                animatorController.SetBool("RollForward", false);

                forwardRoll = false;
            }
            else
            {
                forwardRoll = false;
            }
        }

        if (Input.GetAxis("Mouse Y") <= -0.1 && !forwardRoll)
        {
            forwardRoll = true;
            timeToRoll = 1f;
        }
        #endregion

Это для прямого броска, то же самое для других направлений

Примечание: Input.GetAxis("Mouse Y") возвращает 0,1 как более высокое значение или -0,1 как более низкое в Ось Y, то же самое для оси X.

Спасибо всем, хорошего дня!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Попробуйте это: если игрок нажимает на ось ... Запустить куртизанку .... Проверить куртизанку на короткое время, если значение было равно нулю, а затем, если оно снова стало плюсом или минусом, прежде чем истечет время ... Если так что делайте бочку, если значение не было изменено в указанное время, тогда просто уклоняйтесь ... Ваша проблема не чувствительность ... Является ли лог c ... Извините, если я не показываю код :)

0 голосов
/ 01 апреля 2020

Все значения для оси находятся в интервале [-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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...