donner une couleur du material comme valeur à une variable

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
kickthemharder
Messages : 8
Inscription : 12 Déc 2015 18:07

donner une couleur du material comme valeur à une variable

Message par kickthemharder » 23 Déc 2015 19:14

Bonjour
j'ai un gameobject qui a un material avec une couleur donné par exemple
j'aimerais vérifier si la couleur du gameobject qui rentre en colision avec celui est la même
mais je ne vois pas comment faire
je sais changer la couleur du gameobject en faisant ça :

Code : Tout sélectionner

this.GetComponent<MeshRenderer>().material.color =new Color (244/255f,48/255f,27/255f);
mais pas moyen de faire prendre la variable la valeur suivante ça ne fonctionne pas :

Code : Tout sélectionner

Color objectcolor=this.GetComponent<MeshRenderer>().material.color;
et pour l'object other je n'ai pas d'idée de comment faire non plus
soyez indulgeant je débute
et merci pour vos réponses

HedgehogTeam
Messages : 15
Inscription : 10 Août 2015 12:06

Re: donner une couleur du material comme valeur à une variable

Message par HedgehogTeam » 23 Déc 2015 19:29

Etrange ce que tu dis la. Il serait possible de voir ton code en entier, et le shader que tu utilises sur tes objets

Nicolas

kickthemharder
Messages : 8
Inscription : 12 Déc 2015 18:07

Re: donner une couleur du material comme valeur à une variable

Message par kickthemharder » 23 Déc 2015 19:43

merci de répondre si rapidement
voilà le code est ce qu'affiche la console

Code : Tout sélectionner

using UnityEngine;
using System.Collections;




public class Cube : MonoBehaviour {
	Color cubeColor=this.GetComponent<Renderer>().renderer.material.color ;
		void OnTriggerEnter (Collider other) {
		Color otherColor=other.GetComponent<Renderer>().material.color;

		if ( cubeColor==otherColor){
			Debug.Log ("ok");
		}
		Debug.Log (cubeColor);
	}

}
console :Assets/C# scripts/Cube.cs(8,25) : error CS0027 : Keyword 'this' is not available in the current context

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: donner une couleur du material comme valeur à une variable

Message par Max » 23 Déc 2015 22:01

Bonsoir,

Déjà, tu ne peux pas écrire cela:

Code : Tout sélectionner

public class Cube : MonoBehaviour {

	Color cubeColor=this.GetComponent<Renderer>().renderer.material.color ;
	...
}
pour faire simple, tu ne peux pas initialiser une variable globale, lors de sa déclaration, avec un élément non statique.

Tu peux par contre écrire un truc du genre:

Code : Tout sélectionner

public class Cube : MonoBehaviour {
	Color cubeColor;
	
	void Start()
	{
	    cubeColor = this.GetComponent<Renderer>().material.color ;
	}
	....
}
En suite, pour revenir à l'origine de ton problème, commence par vérifier que ta collision est bien détectée, et donc que ton callback OnTriggerEnter soit bien appelé (par exemple tu peux placer un Debug.Log( other.name) au début de cette fonction)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

kickthemharder
Messages : 8
Inscription : 12 Déc 2015 18:07

Re: donner une couleur du material comme valeur à une variable

Message par kickthemharder » 23 Déc 2015 23:07

merci beaucoup pour la correction et niveau collision je pense pas qu'il y ai de soucis mais je vais test tout de suite

kickthemharder
Messages : 8
Inscription : 12 Déc 2015 18:07

Re: donner une couleur du material comme valeur à une variable

Message par kickthemharder » 24 Déc 2015 01:09

tout marche nickel merci beaucoup :)

Répondre

Revenir vers « (C#) CSharp »