Menu
CoddyTech

Управляй клавишами

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

Input.GetKey(KeyCode.Space) возвращает true в каждом кадре, пока клавиша пробела нажата, и false в противном случае. Проверяй это в Update() и перемещай объект, только когда условие выполняется, — так игрок будет управлять объектом.

Этот ящик поднимается со скоростью lift единиц в секунду, пока нажата клавиша пробела. Time.deltaTime обеспечивает скорость в единицах в секунду, как и в предыдущем уроке:

public float lift = 2f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        transform.position += new Vector3(0, lift * Time.deltaTime, 0);
    }
}

У каждой клавиши есть соответствующий код KeyCode: KeyCode.UpArrow, KeyCode.W, KeyCode.Return и так далее. Сначала щёлкни по окну игры, чтобы оно получало нажатия клавиш. Примечание для Unity 6: в новых проектах используется новая Input System, и Input.GetKey вызывает ошибку, пока для параметра Active Input Handling (Project Settings, Player) не задано значение Both.

challenge icon

Задание

Легко

Позволь игроку управлять кубом с помощью клавиш со стрелками.

  1. В Update(), пока Input.GetKey(KeyCode.RightArrow) имеет значение true, прибавляй new Vector3(speed * Time.deltaTime, 0, 0) к transform.position.
  2. Пока удерживается KeyCode.LeftArrow, вычитай тот же Vector3 с помощью -=.

Нажми «Играть», щёлкни по игровому окну и удерживай клавиши со стрелками: куб скользит вправо и влево. Затем нажми «Проверить».

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

using UnityEngine;

public class Steering : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Стрелка вправо: движение вправо. Стрелка влево: движение влево.
    }
}

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

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