Клавиша ввода C #, один клик, поэтому он не реагирует на удержание - PullRequest
0 голосов
/ 25 сентября 2018

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

if (Input.GetKeyDown(KeyCode.W) && WButton == true)
{
    transform.Translate(0, 0, 1);
    WButton = false;
}
if (Input.GetKeyUp(KeyCode.W))
{
    WButton = true;
}

, что делает, когда кнопка W нажата, она отключает ее, а когда вы поднимаете палец вверх, затем активирует ее.Это делает то, что я хочу, но это не очень хорошо работает, например, определенно недостаточно хорошо, чтобы быть в игре, поэтому есть ли другие способы, которыми я могу этого добиться.Спасибо за помощь, это высоко ценится

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Input.GetKeyDown вызывается только при первом нажатии кнопки;Поэтому вам не нужно использовать bool WButton.

См. Документация Unity3D - Input.GetKeyDown , "Вам нужно вызывать эту функцию из функции обновления, так каксостояние сбрасывается каждый кадр. Он не будет возвращать истину, пока пользователь не отпустит клавишу и не нажмет ее снова. "

Используйте этот код:

void Update()
{
    if (Input.GetKeyDown(KeyCode.W))
        transform.Translate(0, 0, 1);
}

Надеюсь, это поможетвы.

0 голосов
/ 25 сентября 2018

В вашем примере я предполагаю, что вы используете Unity3D, верно?(если это так, рассмотрите возможность добавления тега unity3d к вашему вопросу, чтобы люди могли лучше понять суть вашей проблемы и найти ваш вопрос в соответствующих разделах StackOverflow).

Ваш пример кода кажется правильным.Проблема, которая может возникнуть, заключается в том, что вы можете только читать входные значения из метода Update(), как указано в Документация по классу ввода .

Если вы вызываете Input.GetKeyDown () и / или Input.GetKeyUp () из любого места, кроме метода Update(), тогда эти методы будут возвращать противоречивые / ошибочные значения.

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