Tutorial de linterna para Unity

En muchos videojuegos, una linterna sirve como una herramienta crucial (o elemento de juego) que mejora la experiencia del jugador. Una linterna es una fuente de luz portátil que se puede encender y apagar, normalmente imitando la funcionalidad de las linternas del mundo real. Su importancia en los juegos radica en su capacidad para crear suspenso, agregar realismo y proporcionar iluminación en entornos oscuros o con poca iluminación.

Captura de pantalla de aislamiento alienígena

A continuación se muestra un tutorial rápido sobre cómo configurar una linterna controlable en Unity que se puede encender y apagar con solo presionar una tecla.

Preparando la escena

  • Cree un nuevo proyecto 3D en Unity (o abra un proyecto existente)
  • Importe los recursos necesarios, como un personaje o entorno 3D, si aún no lo ha hecho

Crea el centro de atención

  • Haga clic derecho en el panel Jerarquía y seleccione "Create Empty" para crear un GameObject vacío.
  • Cambie el nombre del nuevo GameObject a "Flashlight."
  • Asegúrate de que el GameObject "Flashlight" esté seleccionado en la Jerarquía.
  • En el panel Inspector, haga clic en el botón "Add Component", busque "Light" y luego haga clic en él para agregar el componente de Luz al "Flashlight" GameObject, y repita el mismo paso para agregar el "AudioSource" componente.
  • Configure el componente Luz con los ajustes deseados, como establecer el Tipo en "Spot" y ajustar los parámetros Rango, Ángulo e Intensidad.
  • Configure el componente AudioSource ajustando el volumen, la distancia, etc.

Efecto de un foco de luz en la escena de Unity

Conecte la linterna al reproductor

  • Arrastre y suelte el GameObject "Flashlight" en el personaje del jugador en el panel Jerarquía para convertirlo en hijo del jugador.
  • Ajuste la posición y la rotación de la linterna para que se alinee con la mano del jugador o la posición deseada.

Implementar controles de linterna

  • Cree un nuevo script C# haciendo clic derecho en el panel Activos y seleccionando 'Create -> C# Script', luego asígnele un nombre "FlashlightController."
  • Haga doble clic en el script para abrirlo en cualquier editor de código preferido.
  • Elimine el código predeterminado y reemplácelo con el siguiente script:

'FlashlightController.cs'

using UnityEngine;

public class FlashlightController : MonoBehaviour
{
    // Public variables
    public AudioClip turnOnSound;
    public AudioClip turnOffSound;

    // Private variables
    private Light flashlight;
    private AudioSource audioSource;

    private void Start()
    {
        // Get Light component in the same GameObject
        flashlight = GetComponent<Light>();

        if (flashlight == null)
        {
            Debug.LogWarning("Light component is not attached. Attach a Light component manually.");
        }
        else
        {
            flashlight.enabled = false;
        }

        // Get or add AudioSource component to the same GameObject
        audioSource = GetComponent<AudioSource>();
        if (audioSource == null)
        {
            audioSource = gameObject.AddComponent<AudioSource>();
            audioSource.playOnAwake = false;
        }
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            if (flashlight != null)
            {
                flashlight.enabled = !flashlight.enabled;

                // Play audio effect based on flashlight state
                if (flashlight.enabled)
                {
                    PlayAudioEffect(turnOnSound);
                }
                else
                {
                    PlayAudioEffect(turnOffSound);
                }
            }
            else
            {
                Debug.LogWarning("Cannot control flashlight as Light component is not attached.");
            }
        }
    }

    private void PlayAudioEffect(AudioClip clip)
    {
        if (clip != null)
        {
            audioSource.clip = clip;
            audioSource.Play();
        }
    }
}
  • Guarde el script y regrese a Unity.
  • Adjunte el script "FlashlightController" al "Flashlight" GameObject.
  • Asegúrese de que los componentes Light y AudioSource estén conectados al mismo objeto del juego que el script "FlashlightController".
  • Asigne sus clips de audio personalizados a las variables de sonido de turno 'On/Off'.

Pruebe la linterna

  • Presione el botón Reproducir para ingresar al modo Reproducir.
  • Mueve al personaje en la escena.
  • Presione la tecla "F" para encender y apagar la linterna.

Conclusión

Con suerte, este tutorial te ha ayudado a aprender cómo crear un efecto de linterna en Unity. Se puede mejorar aún más agregando funciones adicionales como parpadeo de luz o ajustando el ángulo del cono del foco según la entrada del reproductor.

Artículos sugeridos
Tutorial de salto de pared 3D y 2D de Player para Unity
Tutorial del controlador de gusanos 3D para Unity
Tutorial del controlador de jugador de arriba hacia abajo para Unity
Controlador de reproductor RTS y MOBA para Unity
Controlador de helicóptero para Unity
Controlador de coche para Unity
Controlador de avión para Unity