[RESOLU] missile passe partout mais ne meurt pas

Toutes les questions relatives aux tutoriels du site sont à poser à cet endroit.
moihaha
Messages : 25
Inscription : 02 Fév 2012 20:09

[RESOLU] missile passe partout mais ne meurt pas

Message par moihaha » 06 Fév 2012 19:21

encore moi(haha),
et encore les problèmes alors j'ai suivi comment détruire l'objet missile après collision avec le mur... renommé "player"
j'ai quasi le même script qu'il y a une heure ou presque

Code : Tout sélectionner

var boom:GameObject;
var damage=10;
private var player:GameObject;
player=GameObject.Find("player");
var particuleObject:GameObject;

autodestruct();

function Update () {
transform.Translate(Vector3.forward*10*Time.deltaTime);
}

function OnTriggerEnter(other:Collider){
if (other.name==player.collider.name){
	other.Collider.SendMessageUpwards("makedamage",damage,SendMessageOptions.DontRequireReceiver);	
}
Instantiate(boom,transform.position,transform.rotation);
Destroy(gameObject);
}
function autodestruct (){
yield WaitForSeconds(10);
Destroy(gameObject);
}
et il ne créer pas boom et il ne s'autodétruit pas...
et pour une fois mon script ne contient pas d'erreur selon unity...

BREF
je bloque...

merci d'avance
@moihaha
Dernière édition par moihaha le 12 Fév 2012 00:32, édité 1 fois.

Avatar de l’utilisateur
leoufdetou
Messages : 729
Inscription : 16 Oct 2011 21:30
Localisation : Sens

Re: [problème] missile passe partout mais ne meurt pas

Message par leoufdetou » 06 Fév 2012 19:52

Code : Tout sélectionner

autodestruct();
Pourquoi met tu la fonction avec le variables ? La fonction ne s'activera pas si tu la déclare comme une variable.
Met la donc dans ta fonction Update() ou OnTriggerEnter( other : Collider).
De plus

Code : Tout sélectionner

player=GameObject.Find("player");
D'après ce que je sais,tu n'a pas le droit d'appeler la fonction Find() lors des déclarations de variables,mais uniquement dans une fonction.
La encore,met ca dans Update je pense.
Voila,en espérant que ca marche
La Netiquette du forum à lire avant de poster
viewtopic.php?f=7&t=2964

Règle de base du forum "Scripting Javascript, C# et Boo:
viewtopic.php?f=7&t=3307

moihaha
Messages : 25
Inscription : 02 Fév 2012 20:09

Re: [problème] missile passe partout mais ne meurt pas

Message par moihaha » 06 Fév 2012 20:49

Code : Tout sélectionner

var boom:GameObject;
var damage=10;
private var player:GameObject;
player=GameObject.Find("player");
var particuleObject:GameObject;

function Update () {
transform.Translate(Vector3.forward*10*Time.deltaTime);
player=GameObject.Find("player");
autodestruct();
}

function OnTriggerEnter(other:Collider){
if (other.name==player.collider.name){
	other.Collider.SendMessageUpwards("makedamage",damage,SendMessageOptions.DontRequireReceiver);	
}
Instantiate(boom,transform.position,transform.rotation);
Destroy(gameObject);
}
function autodestruct (){
yield WaitForSeconds(10);
Destroy(gameObject);
}
toujours pareil cela ne change rien

Avatar de l’utilisateur
leoufdetou
Messages : 729
Inscription : 16 Oct 2011 21:30
Localisation : Sens

Re: [problème] missile passe partout mais ne meurt pas

Message par leoufdetou » 06 Fév 2012 23:33

Code : Tout sélectionner

player=GameObject.Find("player");
Ca vaut aussi pour le player
La Netiquette du forum à lire avant de poster
viewtopic.php?f=7&t=2964

Règle de base du forum "Scripting Javascript, C# et Boo:
viewtopic.php?f=7&t=3307

moihaha
Messages : 25
Inscription : 02 Fév 2012 20:09

Re: [problème] missile passe partout mais ne meurt pas

Message par moihaha » 07 Fév 2012 17:15

j'ai vu une ligne en double donc je les suprimmer et voila le code

Code : Tout sélectionner

var boom:GameObject;
var damage=10;
var particuleObject:GameObject;

private var player:GameObject;

function Update () {
player=GameObject.Find("player");
transform.Translate(Vector3.forward*10*Time.deltaTime);
autodestruct();
}

function OnTriggerEnter(other:Collider){
if (other.name==player.collider.name){
	other.Collider.SendMessageUpwards("makedamage",damage,SendMessageOptions.DontRequireReceiver);	
}
Instantiate(boom,transform.position,transform.rotation);
Destroy(gameObject);
}
function autodestruct (){
yield WaitForSeconds(10);
Destroy(gameObject);
}
et toujours rien j'ai mis dans update comme tu la dis mais cela marche pas

Aegis
Messages : 233
Inscription : 14 Juin 2010 20:29
Localisation : Wellington, Nouvelle-Zélande

Re: [problème] missile passe partout mais ne meurt pas

Message par Aegis » 08 Fév 2012 08:15

Les coroutines c'est la merde. Y'a un truc du genre qu'a chaque update, ça relance la coroutine et ça n'arrive jamais au bout des 10 secondes. Essaye un truc du genre :

Code : Tout sélectionner

private var birthdate: float;

function Start() {
     birthdate = Time.time;
}

function Update() {
     transform.Translate(Vector3.forward*10*Time.deltaTime);
     if (Time.time - birthdate > 10) {
          Destroy(gameObject);
     }
}
J'espère que je n'ai pas fait de fautes. Pas l'habitude de coder en Javascript..

Edit : Je viens de tester mon code, ça fonctionne bien. Cependant, j'ai également testé le tiens (simplifié parce que j'avais la flemme de crée un système de particules) et ça fonctionne aussi !

Code : Tout sélectionner

function Update () {
	transform.Translate(Vector3.forward*10*Time.deltaTime);
	autodestruct();
}

function autodestruct () {
	yield WaitForSeconds(10);
	Destroy(gameObject);
}
L'objet se détruit bien au bout de 10 secondes.

moihaha
Messages : 25
Inscription : 02 Fév 2012 20:09

Re: [problème] missile passe partout mais ne meurt pas

Message par moihaha » 08 Fév 2012 12:12

j'ai testé mon code et le missile se détruit bien au bout de 10 secondes... mon problème c'est que le missile traverse le mur mais ne se détruit pas.

Aegis
Messages : 233
Inscription : 14 Juin 2010 20:29
Localisation : Wellington, Nouvelle-Zélande

Re: [problème] missile passe partout mais ne meurt pas

Message par Aegis » 08 Fév 2012 13:43

Ah bravo, j'étais à côté de la plaque..

Bon bah check-up de base. Tes deux objets (missile & mur) on bien un Collider ? Le Collider du mur a bien la case IsTrigger de cocher ? Le missile possède bien un Rigidbody ?
Collider.OnTriggerEnter : This message is sent to the trigger collider and the rigidbody (or the collider if there is no rigidbody) that touches the trigger. Note that trigger events are only sent if one of the colliders also has a rigidbody attached.

moihaha
Messages : 25
Inscription : 02 Fév 2012 20:09

Re: [problème] missile passe partout mais ne meurt pas

Message par moihaha » 08 Fév 2012 14:02

oui tout cela c'est fait

Aegis
Messages : 233
Inscription : 14 Juin 2010 20:29
Localisation : Wellington, Nouvelle-Zélande

Re: [problème] missile passe partout mais ne meurt pas

Message par Aegis » 08 Fév 2012 19:54

Um. Je viens de tester le tout & ça fonctionne chez moi. Voici le projet : http://dl.dropbox.com/u/54967457/Unity3 ... itTest.zip

Verrouillé

Revenir vers « Tutoriels du site Unity3D-france »