Page 1 sur 1

[RESOLU] [MY-AL] Problème avec Destroy sur enfants

Publié : 21 Nov 2019 09:11
par freepl
Bonjour

J'ai un empty ( Elizabeth pieton2), parent d'un personnage( corps elizabeth) , de 2 cameras et d'une sphère.

empty Elizabeth pieton2 tag PIETON
enfant corps elizabeth tag PIETON
enfants les 2 caméras et la sphère untagged.

Quand l'empty touche un objet avec ce script

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class TimerDestruction : MonoBehaviour {
	/* timer  pour que le personnage arrive , attende quelque secondes puis disparaisse 
	 * utilisé pour le pmr qui se déplace
	 * arrive à sa zone d'atente du bus
	 * animation d'attente lancée
	 * puis à l'arrivée du bus disparait
	 * */


	public IEnumerator OnTriggerEnter (Collider other) {  

		 // destruction du vl
		yield return new WaitForSeconds(5); // attente 5sec puis destruction du personnage
		if (other.transform.FindChild("Camera   PRINCIPALE")) {
			other.transform.FindChild("Camera   PRINCIPALE").GetComponent<CameraScript>().enabled = true;
			GameObject.Find ("GestionCamera").GetComponent<GestionSelectionVl>().retroviseur.SetActive (false);
			GameObject.Find ("GestionCamera").GetComponent<GestionSelectionVl>().vl = null;
			other.transform.FindChild("Camera   PRINCIPALE").SetParent(GameObject.Find ("GestionCamera").transform);
			
		}
			Destroy(other.gameObject);
		
	}
}


tout devrait disparaître.
Mais il reste quand même les 2 caméras ainsi que la sphère.
J'ai essayé de trouver sur le guide des exemple de destroy mais le site précise qu'il n'y a pas d'exemple pour Destroy en C#.
D'où vient mon erreur ?
Merci

Re: Problème avec Destroy sur enfants

Publié : 21 Nov 2019 09:37
par boubouk50
Je ne sais pas où tu cherches ni comment tu le cherches, mais en tapant: Unity + Destroy + children, tu tombes directement sur cette page: https://answers.unity.com/questions/611 ... bject.html.
Allez, pour le fun, je l'ai tapé en français: Unity + Destroy + enfant: https://upln.fr/detruire-un-gameobject-avec-unity3d/
D'après le second lien, il est précisé que les enfants sont également détruits lors du Destroy du parent.
Moi, ce qui me turlupine, c'est l'utilisation d'un IEnumerator pour la fonction OnTriggerEnter (). Et pourquoi t'embêtes-tu à faire des modifications à cette hiérarchie d'objets si c'est pour la détruire ensuite?
La fonction Destroy () intègre un timer pour repousser la destruction.

Code : Tout sélectionner

private void OnTriggerEnter (Collider other) {  
	 // destruction du vl dans 5 secondes
	Destroy(other.gameObject, 5f);
}
Par contre, je considère que le other est forcément l'empty d'Elisabeth, sinon il faut le tester d'abord.

Re: Problème avec Destroy sur enfants

Publié : 21 Nov 2019 10:02
par Alesk
Détruire des enfants, c'est mal ! :nonon:

Re: Problème avec Destroy sur enfants

Publié : 21 Nov 2019 10:04
par freepl
Résolu en mettant le capsule collider directement sur l'empty et non le perso

Re: Problème avec Destroy sur enfants

Publié : 21 Nov 2019 10:31
par boubouk50
Alesk a écrit :
21 Nov 2019 10:02
Détruire des enfants, c'est mal ! :nonon:
Les envoyer à l'église, c'est mieux! Wait... :?

Le code détruit l'objet other 5 secondes après la collision. Mais je ne sais pas qui est other. Il pourrait être autre chose que le Empty Elizabeth. Si c'est une possibilité, il faut donc tester other pour déterminer qui il est, pour ne pas détruire autre chose.

Par curiosité, sur quel objet est appliqué ce script? Le collider est bien sur l'objet parent et pas sur un enfant?

Re: [RESOLU] [MY-AL] Problème avec Destroy sur enfants

Publié : 21 Nov 2019 11:06
par freepl
Oups!

J'avais le post ouvert en double quand je l'ai noté résolu :roll:
Le capsule collider était sur le corps en enfant.
Je l'ai mis sur l'empty et cela fonctionne.
Merci aussi pour le délai sur le Destroy :)