Случайный спавн
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 68 из 85.
Random.Range(min, max) выбирает случайное число, и то, что он может вернуть, зависит от типа переданных ему чисел. Для чисел с плавающей точкой может получиться любое значение от min до max включительно. Для целых чисел само значение max не включается. Поэтому для броска кубика задают диапазон от 1 до 7:
int roll = Random.Range(1, 7); // 1, 2, 3, 4, 5 или 6
Debug.Log("You rolled " + roll);Версия для целых чисел не включает max, поэтому Random.Range(0, names.Length) всегда возвращает допустимый индекс массива. Это также означает, что Random.Range(-5, 5) даёт только целые числа от -5 до 4, даже если сохранить результат в переменную типа float. Для любого значения в этом диапазоне используйте Random.Range(-5f, 5f).
Для точек и направлений в 3D в Unity есть два готовых случайных вектора. Random.insideUnitSphere — это случайная точка внутри шара радиусом 1 с центром в (0, 0, 0). Random.onUnitSphere — случайная точка на поверхности этого шара, то есть случайное направление длиной 1. transform.position + Random.insideUnitSphere * 2f задаёт точку на расстоянии до 2 единиц в любом направлении, в том числе вверх и вниз.
Задание
СреднеКаждый щелчок сбрасывает ящик со случайной точки над полом.
- Внутри блока
ifдля щелчка выбериfloat x = Random.Range(-4f, 4f);и таким же образом задайfloat z. - Вызови
Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);.
Нажми «Играть» и щёлкни несколько раз: ящики будут падать в разных местах. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class CrateDropper : MonoBehaviour
{
public GameObject cratePrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// Сбросить ящик из случайной точки: x и z от -4 до 4, y = 5
}
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель света11Префабы и создание объектов
Префабы и InstantiateСпавн по таймеруСпавн в сеткеСписки объектовУбрать последний созданныйDestroyСлучайный спавнПовторение: фейерверкиПотренируйтесь самостоятельно: Песочница Unity