Menu
CoddyTech

Случайное создание объектов

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

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 единиц в любом направлении, в том числе вверх и вниз.

challenge icon

Задание

Средне

Каждый щелчок должен сбрасывать ящик со случайной точки над полом:

  • x и z: любое значение от -4 до 4, не только целые числа;
  • y: 5, чтобы ящик упал на пол;
  • без вращения.

Нажми Play и щёлкни несколько раз, затем нажми Check.

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

using UnityEngine;

public class CrateDropper : MonoBehaviour
{
    public GameObject cratePrefab;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // Сбросить ящик из случайной точки: x и z от -4 до 4, y = 5
        }
    }
}
quiz iconПроверьте себя

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

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