Script pour créer un interrupteur d'éclairage dans Unity

La possibilité d'allumer ou d'éteindre une lumière dans un environnement de jeu peut grandement améliorer l'immersion du joueur. Qu'il s'agisse du simple fait d'explorer une pièce sombre ou de signaler à un joueur qu'un événement s'est produit, le simple interrupteur d'éclairage peut jouer un rôle central. Ce script fournit un moyen simple de basculer une source de lumière dans Unity.

Pourquoi utiliser un script d'interrupteur d'éclairage ?

  • Environnements interactifs: Une source de lumière commutable peut rendre vos environnements plus interactifs et dynamiques.
  • Puzzles: Il peut être intégré aux mécanismes puzzle.
  • Mécanisme de retour d'information: les lumières peuvent servir de retour d'information, indiquant au joueur qu'une action a été reconnue.

Quand l’utiliser ?

  • Jeux d'horreur: pour les cas où la gestion de l'obscurité et de la lumière est essentielle pour créer des tensions.
  • Jeux d'aventure: où les joueurs doivent interagir avec leur environnement.
  • Salles d'évasion: où la résolution d'un casse-tête peut nécessiter d'allumer ou d'éteindre les lumières.

Configuration et comment utiliser

  • Créer une lumière: Dans Unity, créez une lumière ponctuelle, un projecteur ou toute autre source de lumière de votre choix.
  • Attachez le script: Créez un nouveau script C# nommé 'LightSwitch' et attachez au GameObject souhaité.
  • Connectez la lumière: faites glisser votre source light vers le champ du composant Lumière du script dans l'inspecteur.

'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;
        }
    }
}
  • Assurez-vous d'avoir un lecteur accessible à pied étiqueté "Player". Si vous avez suivi notre tutoriel Unity FPS Controller, vous devriez déjà avoir le lecteur en place, changez simplement son tag en "Player".
  • Créez un nouveau GameObject vide à proximité du joueur et nommez-le "LightSwitchTrigger". Cela servira de zone d’interaction pour l’interrupteur d’éclairage.
  • Ajoutez un composant 'Box Collider' au GameObject "LightSwitchTrigger". Ajustez sa taille et sa position pour couvrir la zone où vous souhaitez que le joueur puisse interagir avec l'interrupteur d'éclairage. Assurez-vous de cocher la case "Is Trigger" sur le 'Box Collider'.

Script d'interaction:

  • Créez un nouveau script C# nommé 'LightSwitchInteraction'. Ce script vérifiera si le joueur est entré dans la zone d'interaction et écoutera les entrées pour activer la lumière.

'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;
        }
    }
}

Configuration:

  • Attachez le script 'LightSwitchInteraction' au "LightSwitchTrigger" GameObject.
  • Dans l'inspecteur, faites glisser le GameObject avec le script 'LightSwitch' dans le champ "Light Switch" du composant 'LightSwitchInteraction'.

Jouer au jeu

Désormais, lorsque votre joueur (avec la balise "Player") s'approche de la zone d'interaction, appuyer sur la touche "E" allumera ou éteindra la lumière. Vous pouvez également ajuster la clé d'interaction dans le script LightSwitchInteraction en remplaçant le 'KeyCode.E' par n'importe quelle autre clé souhaitée.

FAQ liées au sujet:

  • Ce script peut-il gérer plusieurs sources de lumière ?: Tel qu'écrit, non, mais vous pouvez facilement le modifier pour accepter une liste d'objets Light et les parcourir dans la méthode 'ToggleLight' pour les basculer tous en même temps.
  • Comment puis-je ajouter du son lorsque la lumière s'allume ou s'éteint ?: Vous pouvez ajouter un composant 'AudioSource' au GameObject et lire un clip son dans la méthode 'ToggleLight' lorsque l'état de la lumière change.

Conclusion

L'implémentation d'un interrupteur d'éclairage dans Unity sert non seulement d'outil dynamique pour modifier l'ambiance et l'ambiance d'un environnement de jeu, mais augmente également l'interaction et l'immersion du joueur. En utilisant des scripts simples et les fonctionnalités intégrées Unity, nous pouvons créer un mécanisme interactif de basculement de la lumière qui répond à la proximité du joueur et à input. De tels éléments, bien qu'apparemment mineurs, peuvent améliorer considérablement le gameplay, rendant les environnements plus attrayants et plus réactifs aux actions des joueurs.

Articles suggérés
Script de recherche de souris pour Unity
Script C# pour créer un effet de trace de curseur dans Unity
FPC Swimmer - Un atout Unity complet pour les environnements aquatiques immersifs
Comment configurer le contrôleur de joystick pour le mouvement dans Unity
Tutoriel d'attaque de mêlée 2D pour Unity
Principaux actifs Unity de l'Asset Store
Collecte de pièces 2D dans Unity