Нажатие, удержание, отпускание
Часть раздела Основы скриптинга в 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() запускается один раз и пропустит почти все нажатия.
Задание
ЛегкоРогатка накапливает заряд, пока удерживается клавиша Space, и сообщает о выстреле после её отпускания.
- В
Update(), покаInput.GetKey(KeyCode.Space)возвращает true, прибавляйTime.deltaTimeкcharge. - При
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
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity