Menu
CoddyTech

Переход через дорогу

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

Прыгун ждёт у края оживлённой дороги. Машины едут слева по трём полосам. Игрок прыгает вперёд или назад на одну полосу за раз с помощью стрелок вверх и вниз и должен правильно рассчитать каждый прыжок, чтобы добраться до другой стороны. Если машина заденет прыгуна, он вернётся туда, откуда начал.

Напиши всю игру в одном скрипте Crossing, прикреплённом к прыгуну.

challenge icon

Задание

Сложно

Напиши скрипт Crossing для Hopper, который начинает движение при z = -4, за дорогой с тремя полосами. В Inspector укажи carPrefab (префаб Car), lanes (позиции полос по z: -2, 0 и 2), spawnEvery (1) и carSpeed (5).

  • При каждом нажатии стрелки вверх Hopper прыгает вперёд на 2 единицы (+z). При каждом нажатии стрелки вниз он прыгает назад на 2 единицы, но не возвращается за исходную позицию.
  • Каждые spawnEvery секунд Car появляется в точке x = -9, y = 0.5, на случайной полосе из lanes. Машины движутся вдоль +x со скоростью carSpeed единиц в секунду, а машина, чья координата x превышает 9, уничтожается.
  • Машина задевает Hopper, когда расстояние между их координатами x меньше 1.5, а между координатами z — меньше 1. При столкновении выводится Hit!, и Hopper возвращается в исходную позицию.
  • Когда Hopper достигает z = 4, дальней стороны дороги, выведи You made it! и отключи скрипт.

Нажми Play и перейди дорогу, затем нажми Check.

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

using System.Collections.Generic;
using UnityEngine;

public class Crossing : MonoBehaviour
{
    [SerializeField] private GameObject carPrefab;
    [SerializeField] private float[] lanes;
    [SerializeField] private float spawnEvery = 1f;
    [SerializeField] private float carSpeed = 5f;

    void Start()
    {
    }

    void Update()
    {
    }
}
quiz iconПроверьте себя

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

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