Menu
CoddyTech

Нажатие, удержание, отпускание

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 19 из 85.

Unity может сообщить вам три разные вещи о клавише, и о каждой из них спрашивают в Update():

  • Input.GetKeyDown(KeyCode.Space): была ли нажата клавиша Space в этом кадре? Возвращает true в одном кадре при каждом нажатии.
  • Input.GetKey(KeyCode.Space): нажата ли клавиша Space прямо сейчас? Возвращает true в каждом кадре, пока клавиша Space удерживается.
  • Input.GetKeyUp(KeyCode.Space): была ли отпущена клавиша Space в этом кадре? Возвращает true в одном кадре, когда клавишу отпускают.

Удерживайте Space полсекунды при частоте 60 кадров в секунду: GetKey вернёт true в 30 кадрах, GetKeyDown — в первом из них, а GetKeyUp — в кадре после последнего. Пушка, которая стреляет один раз при каждом нажатии, использует GetKeyDown; с GetKey одно нажатие вызвало бы 30 выстрелов:

public int shots = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        shots++;
        Debug.Log("Shots fired: " + shots);
    }
}

GetKeyUp используют для обработки того, что происходит, когда игрок отпускает клавишу, например завершения спринта. Все три метода сообщают о состоянии только в текущем кадре, поэтому их вызывают в Update(): этот метод выполняется в каждом кадре, тогда как Start() запускается один раз и пропустит почти все нажатия.

challenge icon

Задание

Легко

Рогатка накапливает заряд, пока удерживается клавиша Space, и сообщает о выстреле после её отпускания.

  1. В Update(), пока Input.GetKey(KeyCode.Space) возвращает true, прибавляй Time.deltaTime к charge.
  2. При Input.GetKeyUp(KeyCode.Space) выведи в журнал "Charge: " + charge, затем установи для charge значение 0.

Нажми «Играть», удерживай Space и отпусти её: в Console появится строка, например Charge: 1.5. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

public class Slingshot : MonoBehaviour
{
    float charge = 0f;

    void Update()
    {
        // Пока клавиша Space удерживается: charge увеличивается на 1 каждую секунду.
        // Когда клавишу Space отпускают: выведи значение charge в журнал, затем сбрось его до 0.
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity