Menu
CoddyTech

Если и иначе

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

bool хранит одно из двух значений: true или false. Дверь открыта? Игрок стоит на земле? Игра окончена?

bool gameOver = false;

if выполняет содержащиеся в нём строки только тогда, когда условие истинно, а else выполняет свои строки, когда условие ложно. Фигурные скобки { } содержат строки, относящиеся к каждой части:

if (gameOver)
{
    transform.position = new Vector3(0, -2, 0);
}
else
{
    transform.position = new Vector3(0, 2, 0);
}

Когда игра окончена, этот код перемещает объект вниз, скрывая его из виду, а пока игра продолжается — оставляет его наверху. Такой код помещают внутрь метода, например Update(), а не после последней } класса.

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

challenge icon

Задание

Легко

Удерживание клавиши Space должно поднимать ворота.

  1. Под двумя комментариями в Update() напиши if (open), а в фигурных скобках — transform.position = new Vector3(0, 3, 0);.
  2. После этого напиши else, а в его фигурных скобках — transform.position = new Vector3(0, 1, 0);.

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

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

using UnityEngine;

public class Gate : MonoBehaviour
{
    void Update()
    {
        bool open = Input.GetKey(KeyCode.Space);

        // Если open равно true, переместите ворота в точку (0, 3, 0).
        // В противном случае переместите их в точку (0, 1, 0).
    }
}

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

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