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