Poradnik dotyczący latarki dla Unity

W wielu grach wideo latarka służy jako kluczowe narzędzie (lub element rozgrywki), które poprawia wrażenia gracza. Latarka to przenośne źródło światła, które można włączać i wyłączać. Zwykle naśladuje funkcjonalność rzeczywistych latarek. Jego znaczenie w grach polega na jego zdolności do tworzenia napięcia, dodawania realizmu i zapewniania oświetlenia w ciemnych lub słabo oświetlonych środowiskach.

Zrzut ekranu z izolacji obcych

Poniżej znajduje się krótki tutorial jak skonfigurować sterowaną latarkę w Unity, którą można włączać i wyłączać naciśnięciem klawisza.

Konfiguracja sceny

  • Utwórz nowy projekt 3D w Unity (lub otwórz istniejący projekt)
  • Zaimportuj wszystkie niezbędne zasoby, takie jak postać 3D lub środowisko, jeśli jeszcze tego nie zrobiłeś

Stwórz światło reflektorów

  • Kliknij prawym przyciskiem myszy panel Hierarchia i wybierz "Create Empty", aby utworzyć pusty obiekt GameObject.
  • Zmień nazwę nowego obiektu GameObject na "Flashlight."
  • Upewnij się, że w hierarchii wybrany jest obiekt "Flashlight" GameObject.
  • W panelu Inspektora kliknij przycisk "Add Component", wyszukaj "Light", a następnie kliknij go, aby dodać komponent Światła do "Flashlight" GameObject i powtórz ten sam krok, aby dodać "AudioSource" część.
  • Skonfiguruj komponent Światło do żądanych ustawień, takich jak ustawienie Typu na "Spot" i dostosowanie parametrów Zasięg, Kąt i Intensywność.
  • Skonfiguruj komponent AudioSource, dostosowując głośność, odległość itp.

Efekt światła punktowego na scenie Unity

Przymocuj latarkę do odtwarzacza

  • Przeciągnij i upuść "Flashlight" GameObject na postać gracza w panelu Hierarchia, aby uczynić ją dzieckiem gracza.
  • Dostosuj położenie i obrót latarki tak, aby była dopasowana do dłoni gracza lub wybranej pozycji.

Zaimplementuj sterowanie latarką

  • Utwórz nowy skrypt C#, klikając prawym przyciskiem myszy panel Zasoby i wybierając 'Create -> C# Script', a następnie nadaj mu nazwę "FlashlightController."
  • Kliknij dwukrotnie skrypt, aby otworzyć go w dowolnym preferowanym edytorze kodu.
  • Usuń domyślny kod i zastąp go następującym skryptem:

'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();
        }
    }
}
  • Zapisz skrypt i wróć do Unity.
  • Dołącz skrypt "FlashlightController" do obiektu GameObject "Flashlight".
  • Upewnij się, że komponenty Light i AudioSource są podłączone do tego samego obiektu gry, co skrypt "FlashlightController".
  • Przypisz własne klipy audio do zmiennych dźwiękowych 'On/Off'.

Przetestuj latarkę

  • Naciśnij przycisk Play, aby przejść do trybu odtwarzania.
  • Poruszaj postacią po scenie.
  • Naciśnij klawisz "F", aby włączyć lub wyłączyć latarkę.

Wniosek

Mamy nadzieję, że ten samouczek pomógł ci dowiedzieć się, jak stworzyć efekt latarki punktowej w Unity. Można go dodatkowo ulepszyć, dodając dodatkowe funkcje, takie jak migotanie światła lub regulacja kąta stożka reflektora w oparciu o dane wejściowe gracza.

Sugerowane artykuły
Samouczek dotyczący kontrolera robaków 3D dla Unity
Kontroler helikoptera dla Unity
Kontroler samochodowy dla Unity
Samouczek skakania po ścianie w 3D i 2D dla odtwarzacza Unity
Tworzenie ruchu gracza w jedności
Planetarny kontroler odtwarzacza oparty na Rigidbody dla Unity
Samouczek dotyczący kontrolera odtwarzacza z góry na dół dla Unity