Destruction d'un objet

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
cendre
Messages : 16
Inscription : 12 Avr 2010 23:39

Destruction d'un objet

Message par cendre » 14 Avr 2010 19:47

Encore un soucis

J'ai un objet (un helico, tag helico) qui doit etre detruit quand il est touché par une catégorie d'objet (tag ennemi). Les deux ont un charactere controler (obligatoire pour l'helico, mais pas pour l'ennemi).

Voici le code que j'ai associé a l'ennemi

Code : Tout sélectionner

function OnCollisionEnter (paf:Collision){
	if (paf.gameObject.tag=="helico"){
		Destroy(paf.gameObject);
	}
}
Et comme vous vous en doutez, bah ca ne marche pas. Et rien ne se detruit. Help ?

Avatar de l’utilisateur
krys64
Fondateur unity3d-france
Fondateur unity3d-france
Messages : 471
Inscription : 26 Nov 2009 00:08

Re: Destruction d'un objet

Message par krys64 » 14 Avr 2010 21:34

le onCollisionEnter ne marche pas pour le character controller. Sur ton projectile, enlève le character controller et place un collider, ou utilise OnControllerColliderHit :
http://unity3d.com/support/documentatio ... erHit.html

cendre
Messages : 16
Inscription : 12 Avr 2010 23:39

Re: Destruction d'un objet

Message par cendre » 14 Avr 2010 22:10

J'ai modifié le character controller du projectile pour un box collider. Mais rien ne se passe

Physiquement, les deux objets se touchent (si l'helico fonce sur l'ennemi, il ne peut plus avancer sans être obligé de le contourner). J'ai tenté de vérifié dans le code si cette collision était détectée

Code : Tout sélectionner

function OnCollisionEnter (paf:Collision){

	if (paf.gameObject.tag=="helico"){
	
		print("PAF with " + paf.name);
		
		Destroy(paf.gameObject);
	}
}
Mais la console m'indique "name is not a member of 'UnityEngine.Collision' ".

Avatar de l’utilisateur
krys64
Fondateur unity3d-france
Fondateur unity3d-france
Messages : 471
Inscription : 26 Nov 2009 00:08

Re: Destruction d'un objet

Message par krys64 » 15 Avr 2010 06:52

tu dois mettre :

Code : Tout sélectionner

print("PAF with " + paf.gameObject.name);
As tu regardé mon tuto sur les projectile ,
http://www.unity3d-france.com/unity/?p=27

cendre
Messages : 16
Inscription : 12 Avr 2010 23:39

Re: Destruction d'un objet

Message par cendre » 15 Avr 2010 14:43

Bon, le code est bon (dans la mesure ou la console ne me renvoie pas d'erreur). Pourtant, je n'ai pas de print (donc pas de collision detecté ?)

Je réexpose tout ce que j'ai, histoire d'etre sur d'avoir bien tout dit

J'ai un helico (tag helico), qui a un script pour le déplacement, un character controller et un rigidbody.

Mon ennemi (tag ennemi) a un script (voir la suite), ainsi qu'un box collider.

Code : Tout sélectionner

function OnCollisionEnter (paf:Collision){

	if (paf.gameObject.tag=="helico"){
	
		print("PAF with " + paf.gameObject.name);
		
		Destroy(paf.gameObject);
	}
}
Lorsque l'helico fonce sur l'ennemi, il est bloqué et ne peut plus avancer. Pourtant, rien n'apparait en print, et pire que tout, rien n'est detruit.

Le code me rend fou

PS : non, je n'avais pas vu ton tuto sur les projectilles, je vais le regarder de ce pas

cendre
Messages : 16
Inscription : 12 Avr 2010 23:39

Re: Destruction d'un objet

Message par cendre » 15 Avr 2010 15:59

J'ai trouvé une solution, grace a ta video. Au lieu d'un onCollisionEnter, j'ai mis un onTriggerEnter.

Bon, deuxieme question : comment faire pour que l'helico ai une vitesse horizontale de base (cad sans que l'on appuie sur une touche, il avance)

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Destruction d'un objet

Message par giyomuSan » 16 Avr 2010 03:03

pour la vitesse de base , met simplement ds la fonction update le code correspondant pour le faire avancer (le meme que si c'etait avec l appui d un touche).

Répondre

Revenir vers « Scripting »