Menu
CoddyTech

Падающие бонусы

Урок 13 из 16 курса Игра в Unity: арканоид на Coddy.

Разрушенный кирпич иногда роняет бонус, который падает в сторону ракетки. Выпадет ли он, решает случайный выбор: Random.value — это случайное число с плавающей точкой от 0 до 1, поэтому условие Random.value < 0.15f выполняется примерно 15 раз из 100. Если хранить шанс в поле, его можно настроить, а в тесте установить значение 1, чтобы бонус выпадал каждый раз, или 0, чтобы он не выпадал вовсе.

Какой именно бонус выпадет, решает второй случайный выбор: случайный индекс массива префабов. При использовании целых чисел Random.Range не включает максимальное значение, поэтому Random.Range(0, array.Length) может выбрать любой элемент. Добыча врага:

public GameObject[] loot;
public float lootChance = 0.25f;

void DropLoot()
{
    if (Random.value >= lootChance) return;
    int pick = Random.Range(0, loot.Length);
    Instantiate(loot[pick], transform.position, Quaternion.identity);
}

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

challenge icon

Задание

Сложно
  1. В PowerUp добавь public float fallSpeed = 3f и public float bottomY = -9f. В Update() перемещай объект вниз со скоростью fallSpeed единиц в секунду и уничтожай бонус, когда его координата y становится меньше bottomY.
  2. В GameManager добавь public GameObject[] powerUps (сцена связывает префабы WidePowerUp и MultiPowerUp) и public float dropChance = 0.15f.
  3. В BrickBroken с вероятностью dropChance создай случайный объект из powerUps там, где находился кирпич.

Пока что бонусы проходят сквозь платформу: ловить их будем дальше.

Нажми Play, разбивай кирпичи, пока один из них не уронит бонус, затем нажми Check.

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

using UnityEngine;

public class PowerUp : MonoBehaviour
{
    // Последняя глава: бонусы, выпадающие из разбитых кирпичей.
}
quiz iconПроверьте себя

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

Все уроки раздела Игра в Unity: арканоид