Skrypt do tworzenia włącznika światła w Unity

Możliwość włączania i wyłączania światła w środowisku gry może znacznie zwiększyć immersję gracza. Niezależnie od tego, czy jest to prosta czynność polegająca na eksploracji ciemnego pokoju, czy też zasygnalizowanie graczowi, że miało miejsce jakieś wydarzenie, skromny włącznik światła może odegrać kluczową rolę. Ten skrypt zapewnia łatwy sposób przełączania źródła światła w Unity.

Dlaczego warto używać skryptu włącznika światła?

  • Środowiska interaktywne: Przełączane źródło światła może sprawić, że Twoje otoczenie stanie się bardziej interaktywne i dynamiczne.
  • Puzzle: Można je zintegrować z mechanizmami puzzle.
  • Mechanizm sprzężenia zwrotnego: Światła mogą działać jako informacja zwrotna, pokazując graczowi, że akcja została potwierdzona.

Kiedy go używać?

  • Horrory: Do przypadków, w których zarządzanie ciemnością i światłem ma kluczowe znaczenie dla stworzenia napięcia.
  • Gry przygodowe: Gdzie gracze muszą wchodzić w interakcję ze swoim otoczeniem.
  • Pokoje zagadek: Tam, gdzie rozwiązanie zagadki może wymagać włączenia lub wyłączenia światła.

Konfiguracja i sposób użycia

  • Utwórz światło: W Unity utwórz światło punktowe, reflektor punktowy lub dowolne inne źródło światła.
  • Dołącz skrypt: Utwórz nowy skrypt C# o nazwie 'LightSwitch' i attach go do żądanego GameObject.
  • Podłącz Światło: Przeciągnij źródło światło do pola Komponent Światła skryptu w inspektorze.

'LightSwitch.cs'

using UnityEngine;

public class LightSwitch : MonoBehaviour
{
    public Light lightSource; // Drag your light source here
    public bool isOn = true; // If you want the light to start as ON

    private void Start()
    {
        if (lightSource)
        {
            lightSource.enabled = isOn;
        }
    }

    public void ToggleLight()
    {
        if (lightSource)
        {
            isOn = !isOn;
            lightSource.enabled = isOn;
        }
    }
}
  • Upewnij się, że masz gracza, po którym można chodzić, oznaczonego jako "Player". Jeśli postępowałeś zgodnie z naszym samouczkiem dotyczącym Unity Kontrolera FPS, odtwarzacz powinien być już na miejscu, po prostu zmień jego znacznik na "Player".
  • Utwórz nowy pusty GameObject w pobliżu zasięgu gracza i nazwij go "LightSwitchTrigger". Będzie to działać jako strefa interakcji dla włącznika światła.
  • Dodaj komponent 'Box Collider' do obiektu "LightSwitchTrigger" GameObject. Dostosuj jego rozmiar i położenie, aby pokryć obszar, w którym chcesz, aby gracz mógł wchodzić w interakcję z włącznikiem światła. Pamiętaj, aby zaznaczyć pole wyboru "Is Trigger" w polu 'Box Collider'.

Skrypt interakcji:

  • Utwórz nowy skrypt C# o nazwie 'LightSwitchInteraction'. Ten skrypt sprawdzi, czy gracz wszedł do strefy interakcji i nasłuchuje sygnału wejściowego, aby włączyć światło.

'LightSwitchInteraction.cs'

using UnityEngine;

public class LightSwitchInteraction : MonoBehaviour
{
    public LightSwitch lightSwitch; // Reference to our LightSwitch script
    private bool playerInZone = false;

    private void Update()
    {
        if (playerInZone && Input.GetKeyDown(KeyCode.E)) // E key is used for interaction in this example
        {
            lightSwitch.ToggleLight();
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            playerInZone = true;
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            playerInZone = false;
        }
    }
}

Konfiguracja:

  • Dołącz skrypt 'LightSwitchInteraction' do obiektu GameObject "LightSwitchTrigger".
  • W Inspektorze przeciągnij obiekt GameObject ze skryptem 'LightSwitch' do pola "Light Switch" komponentu 'LightSwitchInteraction'.

Grać w gre

Teraz, gdy Twój gracz (z tagiem "Player") zbliży się do strefy interakcji, naciśnięcie klawisza "E" spowoduje włączenie lub wyłączenie światła. Możesz także dostosować klucz interakcji w skrypcie LightSwitchInteraction, zmieniając 'KeyCode.E' na dowolny inny żądany klucz.

Często zadawane pytania związane z tematem:

  • Czy ten skrypt obsługuje wiele źródeł światła?: Tak jak napisano, nie, ale możesz go łatwo zmodyfikować, aby zaakceptował listę obiektów Light i przeglądał je w pętli metodą 'ToggleLight', aby przełączać je wszystkie na raz.
  • Jak mogę dodać dźwięk przy włączaniu i wyłączaniu światła?: Możesz dodać komponent 'AudioSource' do obiektu GameObject i odtwarzać klip sound metodą 'ToggleLight', gdy zmienia się stan światła.

Wniosek

Implementacja włącznika światła w Unity służy nie tylko jako dynamiczne narzędzie do zmiany atmosfery i nastroju środowiska gry, ale także zwiększa interakcję gracza i immersję. Używając prostych skryptów i wbudowanych funkcji Unity, możemy stworzyć interaktywny mechanizm przełączania światła, który reaguje na bliskość gracza i input. Takie elementy, choć pozornie drobne, mogą znacznie usprawnić rozgrywkę, czyniąc środowiska bardziej wciągającymi i reagującymi na działania gracza.

Sugerowane artykuły
Skrypt wyglądu myszy dla Unity
Skrypt C# do tworzenia efektu śladu kursora w Unity
Jak korzystać z kontrolera Xbox w Unity
Skrypt strzelania z broni palnej opartej na promieniach i pociskach dla Unity
Jak skonfigurować kontroler joysticka do poruszania się w jedności
Samouczek ataku wręcz 2D dla Unity
Zone Controller Pro — pakiet Unity Asset Store