Alors voila, mon but final est d'arroser une petite parcelle de terre à l'aide d'un arrosoir.
le problème, c'est que cette parcelle est crée directement en jeu (via une pelle) et on peut en créer autant que l'on veut.
je bloque donc sur la modification d'une variable boolean (qui change la texture de la terre lorsqu'elle passe à true et inversement)
j'utilise donc deux script, un sur l'arrosoir et l'autre sur ma parcelle de terre (donc chacun sur un gameObject différent).
donc, au début je pensais simplement faire :
Code : Tout sélectionner
public class PlanteControler : MonoBehaviour
{
public bool water = false;
}
et dans l'autre script
Code : Tout sélectionner
public class ArmAnimations : MonoBehaviour
{
public PlanteControler test;
public void Event_Arroser()
{
RaycastHit hit = Inventory.instance.player.fpsCamera.RaycastHit();
if (hit.collider && hit.collider.sharedMaterial
&& (hit.collider.GetComponent<Interact>()
&& hit.collider.GetComponent<Interact>().canHitObject))
{
Debug.Log("il y a un collider");
test.water = true;
}
else
{
Debug.Log("il n'y a pas de collider");
}
}
du coups, le debug.log m'annonce qu'il détecte bien le collider de la parcelle, mais m'annonce ensuite qu'il manque une référence et me renvoi à la ligne "test.water = true;"
je me suis donc dit que c'est parce qu'il s'agit d'un objet instancié et qu'il fallait que je renseigne autre chose?
ps :j'ai également tenter avec la variante
Code : Tout sélectionner
private PlanteControler test;
private void Start()
{
test = GetComponent<PlanteControler>();
}
Navré encore si la réponse vous semble simple, je ne suis pas vraiment expérimenté ^^'.