Menu
CoddyTech

Три полосы

Урок 1 из 20 курса Игра на Unity: Небесные трассы на Coddy.

В этом курсе ты создашь целую игру — по одной функции за урок. Бегун мчится по дороге высоко в небе. На его пути встречаются барьеры, перекладины и стены, вдоль полос лежат монеты, а дорога становится быстрее, чем дольше ты продержишься.

В проекте уже есть четыре скрипта: Runner у игрока, Road, GameManager и Coin. Пока что большинство из них пусты и будут заполняться от урока к уроку. Пятый скрипт, CameraFit на камере, уже готов: он расширяет обзор на высоком экране телефона, чтобы в кадре поместились все три полосы, и тебе не нужно будет его менять.

Бегун никогда не движется вперёд. Он перемещается только между тремя полосами: левой, средней и правой. Храни номер полосы как целое число: -1, 0 или 1, и вычисли её положение по оси x:

float targetX = lane * laneWidth;

У бегуна есть CharacterController, поэтому он перемещается с помощью controller.Move(motion): Move принимает расстояние перемещения за этот кадр, а не конечную точку. Чтобы оказаться на targetX, переместись на разницу между этим значением и текущим положением бегуна:

float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);

Mathf.Max(-1, lane - 1) — это lane - 1, но значение никогда не будет меньше -1, поэтому полосы левее крайней левой не будет.

challenge icon

Задание

Легко
  1. В Runner.Update, когда нажата клавиша A или стрелка влево (Input.GetKeyDown), установи lane = Mathf.Max(-1, lane - 1).
  2. Когда нажата клавиша D или стрелка вправо, установи lane = Mathf.Min(1, lane + 1).
  3. Затем вычисли targetX и перемести туда бегуна с помощью controller.Move, как описано выше.
  4. Нажми «Играть» и попробуй нажимать A и D.

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

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;

    public int lane;

    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // здесь меняйте полосы
    }
}

Все уроки раздела Игра на Unity: Небесные трассы

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