Падающие бонусы
Урок 14 из 19 курса Игра в 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 и триггерный коллайдер, поэтому физическая система знает, что он движется, и он сможет определить, когда достигнет ракетки.
Задание
СложноИз разбитых кирпичей иногда выпадает усиление.
- В
PowerUpдобавьfallSpeed = 3fиbottomY = -9f; вUpdate()заставь объект падать со скоростью fallSpeed в секунду и уничтожай его, когда он опустится ниже bottomY. - В
GameManagerдобавьpublic GameObject[] powerUps;иpublic float dropChance = 0.15f; - В BrickBroken, если
Random.value < dropChance, создай экземплярpowerUps[Random.Range(0, powerUps.Length)]в позиции кирпича.
Нажми «Играть» и разбивай кирпичи: время от времени из них будет выпадать усиление (ловить его будем в следующем задании). Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// Последняя глава: бонусы, выпадающие из разбитых кирпичей.
}
Все уроки раздела Игра в Unity: арканоид
Потренируйтесь самостоятельно: Песочница Unity