Genera números aleatorios en Unity3D

Aimen Fatima 15 febrero 2024
Genera números aleatorios en Unity3D

Este tutorial explicará los métodos para generar números aleatorios en unity3d. Implementaremos generadores de números aleatorios con tipos de retorno float e int y veremos sus comportamientos de ejecución con ejemplos.

Generador de números aleatorios en Unity3D

El UnityEngine.Random proporciona un método integrado, Range(), para generar números aleatorios. Desafortunadamente, el método Range() se ha sobrecargado para los tipos de datos int y float en unity3d.

Puede invocar este método pasando los tipos de datos float o int como parámetros. Los parámetros de esta función definen el rango de números aleatorios especificando un límite superior e inferior.

Aquí está la definición de la función UnityEngine.Random.Range para el tipo de retorno flotante:

public static float Range(float minValue, float maxValue);

El método Rango() devuelve un número flotante aleatorio dentro de [minValue to maxValue]. Este método intercambia los valores si maxValue es menor que minValue.

El método float Range() incluye límites inferior y superior. Por ejemplo, Random.Range(1.2f,5.2f) devuelve un número entre 1.2 y 5.2, incluidos los extremos.

Aquí está la definición de la función UnityEngine.Random.Range para el tipo de retorno int:

public static int Range(int minValue, int maxValue);

Este método devuelve un número entero aleatorio dentro del rango [minValue to maxValue]. Los siguientes comportamientos son cómo se ejecutará este método:

  • El límite superior no está incluido en este método. Por ejemplo, Random.Range(-5, 5) devuelve un valor entre -5 y 4.
  • Si tanto minValue como maxValue son iguales, se excluye el límite superior y el método devuelve el límite inferior, es decir, minValue.
  • Si maxValue es menor que minValue, los números se intercambian automáticamente.

Implementaremos ambos métodos en el proyecto Unity3D. A continuación se muestra la demostración completa de la implementación de estas funciones. Pero, primero, sigamos el proceso paso a paso.

  • Crear nuevo proyecto

    Cree un nuevo proyecto de unidad. Se creará una escena de muestra de forma predeterminada.

  • Crear objeto de juego 3D

    Cree cualquier objeto de juego 3D en la escena haciendo clic derecho en la ventana de jerarquía.

    generar números aleatorios en unity3d - objeto de juego 3d

  • Cree un script C# para generar un generador de números aleatorios flotante

    Cree un nuevo script de C# haciendo clic con el botón derecho en la ventana Proyecto. Luego, escriba el siguiente fragmento de código en el script recién creado.

    generar números aleatorios en unity3d - script

    El siguiente fragmento de código muestra un generador de números aleatorios “flotante”. Este fragmento de código mueve el gameObject en la dirección x al agregar un número aleatorio generado dentro del rango de -5.0 y 5.0.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class RandomNumberGenerator : MonoBehaviour {
      public GameObject gameObject;
      float xOffset = 0.0f;
    
      void OnGUI() {
        xOffset = Random.Range(-5.0f, 5.0f);
        if (GUI.Button(new Rect(10, 300, 100, 50), "MOVE")) {
          gameObject.transform.position =
              new Vector3(gameObject.transform.position.x + xOffset, gameObject.transform.position.y,
                          gameObject.transform.position.z);
        }
      }
    }
    
  • Adjuntar secuencia de comandos al objeto del juego

    Adjunte el guión al objeto del juego creado en la escena. Luego, pase el objeto del juego al script arrastrándolo desde la jerarquía.

    generar números aleatorios en unity3d - script flotante

  • Ejecutar juego

    Ejecute el juego y presione el botón Mover en la Vista del juego para cambiar la posición del objeto del juego.

  • Crear objeto de juego vacío

    Cree el objeto de juego vacío en la escena para implementar el generador de números aleatorios de tipo entero.

    generar números aleatorios en unity3d - objeto de juego vacío

  • Cree un nuevo script C# para generar un generador de números aleatorios int

    Vuelva a crear un nuevo script de C# y escriba el siguiente código en el script. Esta valla de código genera un número aleatorio entre 1 y 4 (números enteros) e imprime los valores ordenados de forma descendente, incluido 0.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class IntRNG : MonoBehaviour {
      void Start() {
        int x = Random.Range(1, 5);
        for (int i = x; i >= 0; i--) {
          print(i);
        }
      }
    }
    
  • Adjuntar script a objeto vacío

    Adjunte el script anterior a un objeto de juego vacío creado en la escena.

    generar números aleatorios en unity3d - script int

  • Ejecutar juego

    Ejecute el juego y verifique la ventana de la consola para ver el resultado. Puede ver Generador de números aleatorios de Unity3D para obtener más detalles.