Menu
CoddyTech

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

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

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: значение charge увеличивается на 1 каждую секунду удержания Space и не увеличивается, когда клавиша не удерживается. Когда Space отпущена, выведи в журнал Charge: , а затем значение заряда (например, Charge: 1.5), после чего снова установи charge в 0 для следующего выстрела.

Нажми Играть, удерживай и отпусти Space, затем посмотри на Console. После этого нажми Проверить.

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

using UnityEngine;

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

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

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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