C# et UNITY problème de séléction

Fermé
borg80 - 21 août 2017 à 18:05
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 - 22 août 2017 à 12:48
Bonjour,

Je viens à vous pour un bête problème dont je n'arrive pas à comprendre le principe (Je débute sur Unity et C#).

Je cherche à effectuer deux actions lorsque le player rentre dans une zone :

- Afficher dans la console de debug : "La lampe est éteinte" (Ça marche bien)
- Éteindre la lampe de mon personnage (une SpotLight), qui est fixée sur une arme. La lampe reste allumée !

Je pense (C'est même sûr) que je cible mal la Light, de ce fait, rien ne se passe et j'ai même droit à une erreur que je ne comprend pas ...

Voici le code :

public class DeadPlayer : MonoBehaviour {

    private float ShutDown = 0f;

    void Start() {

    }
	
//Extinction de la lampe au contact du player. Notez que les Tags sont bien attribués.
	void OnTriggerEnter (Collider EnterPlayer) {
		if(EnterPlayer.gameObject.tag == "Player"){
            Debug.Log("La lampe est éteinte now"); //Ca, ca fonctionne
            GameObject.Find("lighttorch").GetComponent<Light>();
            Light.intensity = ShutDown;

        }
}
}


Voiçi le message d'erreur dont je n'ai pas compris les tenants et les aboutissants (Console de Degug):

Assets/Scripts/DeadPlayer.cs(18,19): error CS0120: An object reference is required to access non-static member `UnityEngine.Light.intensity'


Merci d'avoir pris le temps de me lire ! :) D'ailleurs, si vous aviez un bon tuto sur les balades dans le DOM sur C# & Unity, je suis preneur.

5 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 931
21 août 2017 à 20:13
Bonsoir

c'est à quelle ligne l'erreur?
0
L’erreur se trouve ligne 13 !
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 931
22 août 2017 à 09:45
La ligne 13 c'est
Debug.Log("La lampe est éteinte now"); //Ca, ca fonctionne

Un peu contradictoire non?

0
En ligne 13 j'ai :

GameObject.Find("lighttorch").GetComponent<Light>();


Est-ce que tu ne serai pas en train de suivre le sujet sur un petit écran d'ordinateur ou un smartphone/tablette ? :p En réduisant ma fenêtre, je me suis rendu compte que le content du code était responsive. Du coup on ne doit pas avoir la même chose ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 931
22 août 2017 à 12:48
Ha oui c'est vrai qu'il y a un bug avec les balises de codes sur ccm.

L'erreur veut dire qu'un objet ou une propriété d'un objet de cette ligne ne contient rien, n'a pas été initialisé, ne contient pas la référence vers l'espace mémoire d'un objet.

Plus haut tu utilises EnterPlayer.gameObject ou gameObject est une propriété de EnterPlayer et en plus commence par un entier minuscule (c# est sensible à la casse). Ne serait ce pas cet objet dont tu as besoin.
0