Unity - обрабатывать 2 ввода для связывания клавиш в моей игре - PullRequest
0 голосов
/ 23 октября 2018

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

Цель для примера - иметь возможностьиметь комбинацию входных данных для заклинания (пример: «ctrl + H» отправляет заклинание)

Я нахожу в магазине «Юнит» плагин под названием «Rewired», который, кажется, делает это, но стоит 40 €и обрабатывать слишком много функций, которые мне не нужны.

Поэтому я пытаюсь создать собственный сценарий для решения своей проблемы, но я не знаю, как создать комбинацию из двух нажатых клавиш.

Это мой сценарий ниже, у вас есть идеи, как я могу создать это?

KeyCode key;
KeyCode curModifiersKey;(alt, ctrl)
KeyCode nonModifierKey;
KeyCode firstModifierKeyInfo;
KeyCode finalKey;

public void DetectedSeveralInput(KeyCode key)
{
    if (key != KeyCode.AltGr)
    {
        if (key == KeyCode.LeftAlt || key == KeyCode.RightAlt || key == KeyCode.LeftControl || key == KeyCode.RightControl)
        {
            if (modifierPressedCount == 0)
            {
                firstModifierKeyInfo = key;
                modifierPressedCount += 1;
            }
            curModifiersKey = key;
        }
        nonModifierKey = key;
        //finalKey = curModifiersKey + nonModifierKey
        LogVariables();
    }
    else
    {
        Debug.Log("AltGR pressed");
        return;
    }
}

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Спасибо Трико за ответ.

Но проблема в том, что я не могу сделать эту систему, когда у вас есть 10 юнитов, у которых есть 4 заклинания.Моя ссылка на это - Starcraft 2, где у вас есть полная панель для вашей собственной привязки клавиш, когда вы можете добавить кнопку мыши или ctrl / shift / alt.

Вот почему я хочу что-то, чтобы сохранить 2 ввода водин (если это возможно) и соотнесите его с заклинанием n ° X для моего юнита Y

0 голосов
/ 23 октября 2018

То, что я делаю, чтобы обнаружить многократное нажатие клавиши, выглядит так:

void Update()
{
    bool shiftPressed = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift);
    bool keyPressed = Input.GetKeyUp( /* other key code here */ );
    if(shiftPressed && keyPressed)
    {
        //Do logic here
    }
}

Я проверяю нажатие клавиши Shift с помощью Input.GetKey, но проверяю, чтобы логика происходила только один раз, заставляя другую проверять вход.GetKeyUp, так что это будет верно только при отпускании ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...