Нажатие, удержание, отпускание
Часть раздела Основы скриптинга в 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() запускается один раз и пропустил бы почти каждое нажатие.
Задание
ЛегкоРогатка заряжается, пока удерживается клавиша 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.
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света