Voila, je fais appel à vous car j'ai un petit soucis. En effet, j'ai créer une maison en 3D sur laquelle j'ai mi une porte. La porte s'anime correctement et j'ai donc fait un préfabs de cette maison pour pouvoir créer un petit lotissement rapidement. Le problème étant que quand je suis dans le trigger représentant la proximité avec la porte du préfabs 2, ceci anime la porte du préfabs 1. En fait, qu'importe que je sois dans le trigger de la maison 1, 2, 3, 9999, l'animation se lance toujours sur la première maison posée.
Il faudrait que je puisse différencier chaque trigger tout en gardant la même animation ou peut-être essayer avec un raycast en regardant la porte à ouvrir ... Je ne sais pas trop comment m'y prendre.
J'informe que je suis assez débutant dans le C# alors les lignes que je vais vous donner ne sont peut-être pas très optimisées et pas très simplifiée mais c'est pour mieux me comprendre afin de progresser et de me relire, c'est pourquoi chaque étape est détaillée et commenté.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;
public class GarageOpenDoor : MonoBehaviour {
public GameObject Garage_Door; //L'objet "porte"
public bool isOpenGarageDoor = false; //"Vérification si la porte est ouverte ou non"
public bool GarageDoorTrigger = false; //Trigger à proximité de la porte
void Update()
{
OpenGarageDoor(); //Appel de la fonction "OpenGarageDoor"
}
public void OpenGarageDoor() //Fontion "OpenGarageDoor"
{
if(GarageDoorTrigger == true) //Si le perso est dans le trigger
{
if(Input.GetKeyDown(KeyCode.E)) //Si le joueur appui sur E
{
if(isOpenGarageDoor == false) //Si la porte est fermée
{
Garage_Door.GetComponent<Animation>().Play("Garage_Door_Open"); //Lance animation ouverture de la porte
isOpenGarageDoor = true; //La porte est ouverte
}
else
{
Garage_Door.GetComponent<Animation>().Play("Garage_Door_Close"); //Lance l'animation fermeture de la porte
isOpenGarageDoor = false; //La porte est fermée
}
}
}
}
public void OnTriggerEnter(Collider other)
{
GarageDoorTrigger = true;
}
public void OnTriggerExit(Collider other)
{
GarageDoorTrigger = false;
}
}
Si vous avez des questions ou si vous voulez voir une vidéo pour mieux cerner le problème, dites-le moi.