[RESOLU] - [DB - AL] Une animation sur des préfabs

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
MadeByMax
Messages : 4
Inscription : 28 Mai 2019 19:56

[RESOLU] - [DB - AL] Une animation sur des préfabs

Message par MadeByMax » 28 Mai 2019 20:20

Bonjour,

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;
	}
}
Merci d'avance pour vos réponses futur. Bon dev à vous.
Si vous avez des questions ou si vous voulez voir une vidéo pour mieux cerner le problème, dites-le moi.
Dernière édition par MadeByMax le 29 Mai 2019 22:14, édité 1 fois.

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

Re: [DB - AL] Une animation sur des préfabs

Message par Max » 28 Mai 2019 20:47

Bonsoir,

Au niveau de ton prefab "Maison", dans l'inspector, le champ Garage_Door contient quoi ?
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

MadeByMax
Messages : 4
Inscription : 28 Mai 2019 19:56

Re: [DB - AL] Une animation sur des préfabs

Message par MadeByMax » 28 Mai 2019 21:18

Salut Max.

Le Garage_Door est en fait le 3D de la porte de garage.

Voici l'inspector lorsque je selectionne le 3D de la porte :
Image

MadeByMax
Messages : 4
Inscription : 28 Mai 2019 19:56

Re: [DB - AL] Une animation sur des préfabs

Message par MadeByMax » 28 Mai 2019 21:32

Je pense avoir compris quelque chose. En fait, j'ai mi le nom de l'objet qui doit être animé (la porte de garage) dans le script permettant au joueur de lancer l'animation. Je pense qu'il faudrait que ce soit appliqué sur la porte en elle même et non sur le joueur car du coup, la variable Garage_Door correspondant à la porte reste la même et donc, forcément celle de la première maison posée.

Image

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

Re: [DB - AL] Une animation sur des préfabs

Message par Max » 29 Mai 2019 07:40

Bonjour,

C'est ton approche qui ne va pas dans le bon sens.
Ton garage, avec en child ta porte, doit avoir le collider (mode trigger). Il doit posséder aussi le script que tu listes dans ton premier message (GarageOpenDoor). Au niveau de l'inspector du même garage, dans le champ Garage_Door, tu dois y placer le GameObject de ta porte.

Ce n'est pas au player d'avoir en référence les éventuels objets qu'il pourrait rencontrer sur son passage.
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

MadeByMax
Messages : 4
Inscription : 28 Mai 2019 19:56

Re: [DB - AL] Une animation sur des préfabs

Message par MadeByMax » 29 Mai 2019 07:54

Hello.

Daccord. Merci pour ta réponse. Je vais éssayer de changer d’approche et d’appliquer tes conseil. Merci encore.

Bonne journée.

Répondre

Revenir vers « (C#) CSharp »