Menu
CoddyTech

Именованные кнопки

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

Помимо клавиш, в Unity есть кнопки: имена, перечисленные в Input Manager (Edit, Project Settings, Input Manager), каждое из которых связано с одной или несколькими клавишами. Input.GetButtonDown("Fire1") проверяет имя, а не клавишу. В новом проекте есть такие:

  • "Jump": пробел
  • "Fire1": левый Ctrl или левая кнопка мыши
  • "Fire2": левый Alt или правая кнопка мыши
  • "Submit" и "Cancel": Enter и Escape

Кнопки геймпада связаны с теми же именами, а клавиши можно изменить в Input Manager, не затрагивая код. GetButton, GetButtonDown и GetButtonUp работают так же, как GetKey, GetKeyDown и GetKeyUp. Этот бластер записывает выстрел при каждом нажатии Ctrl или щелчке мышью:

void Update()
{
    if (Input.GetButtonDown("Fire1"))
    {
        Debug.Log("Shot!");
    }
}

Имя представляет собой строку, поэтому опечатка в имени не помешает компиляции. Unity ищет его при выполнении строки, и если кнопки с таким именем нет, на каждом кадре выдаётся ошибка: ArgumentException: Input Button Fier1 is not setup. Увидев это сообщение, сравните имя в коде со списком в Input Manager.

challenge icon

Задание

Легко

Лягушка подпрыгивает, пока удерживается кнопка Jump: при нажатии Jump она один раз поднимается на hop единиц, а при отпускании Jump опускается обратно на ту же высоту. В стартовом коде подъём уже реализован, но при запуске игры возникает ошибка.

Нажми Play и прочитай сообщение об ошибке в Console. Исправь ошибку, добавь приземление при отпускании кнопки, затем нажми Check.

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

using UnityEngine;

public class Hopper : MonoBehaviour
{
    public float hop = 1.5f;

    void Update()
    {
        if (Input.GetButtonDown("Jumpp"))
        {
            transform.position += new Vector3(0, hop, 0);
        }
    }
}
quiz iconПроверьте себя

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

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