[Résolu][DB-RS] Destroy qui marche pas tip top

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
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
Avatar de l’utilisateur
Kazzad
Messages : 50
Inscription : 17 Août 2016 19:51
Localisation : France
Contact :

[Résolu][DB-RS] Destroy qui marche pas tip top

Message par Kazzad » 19 Août 2016 23:07

Bonsoir,
je tente depuis quelques temps de créer un petit FPS pour le fun, mais la je suis un peu bloqué: j'ai un pistolet, qui, quand on clique gauche, tire.
Quand il tire, il instantie une balle et lui assigne un velocity, puis la détruit au bout d'un certain temps. Le problème, c'est que si plusieurs balles co-existent, le Destroy n'en détruit qu'une. Ce que je voudrai, c'est qu'elle soit toute traitées individuellement.

Merci d'avance a mon éventuel futur bienfaiteur !


Le code (avec précisé en commentaire les trucs que j'ai déjà tentés):

Code : Tout sélectionner

#pragma strict

var Vitesse:float;
private var speed:float;
var balle:GameObject;

function Start () {

}

function Update () {

	speed = Vitesse * Time.deltaTime * 100; //défini la vitesse réelle de la balle a partir de Vitesse, réglé depuis l'inspecteur

	if(Input.GetKey(KeyCode.Mouse0) && !GetComponent.<AudioSource>().isPlaying){
		GetComponent.<AudioSource>().Play(); //joue le seul son que j'ai dans le composant: un tir

		var bullet : GameObject = Instantiate(balle,transform.position,transform.rotation); //instantie la balle

    		bullet.transform.velocity = transform.TransformDirection(Vector3 (-speed, 0, 0)); //donne un velocity a la balle

    		//Destroy(GameObject.Find("Bullet(Clone)"),5); ne détruit qu'une seule balle
    		//Destroy(bullet,5); aucune erreur, mais ne fonctionne pas
	}

	/*if(GameObject.Find("Bullet(Clone)")){
		Destroy(GameObject.Find("Bullet(Clone)"), 5);
	}*/ ne détruit qu'une seule balle

}
Dernière édition par Kazzad le 07 Sep 2016 15:55, édité 2 fois.
Ne disons pas que ça fonctionne, disons que nous n'avons pas trouvé de dysfonctionnement.

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: [DB-RS] Destroy qui marche pas tip top

Message par zugsoft » 20 Août 2016 06:31

Salut,

1er / pour un FPS tout ce qui est balle, utilise plutot un raycast, car une balle est tres rapide et normalement impossible de la voir avec nos yeux.

2em/ Si tu veux reellement voir une balle qui se deplace, utilise plutot un script sur ta balle, qui fait le destroy apres x secondes ou quand l'objet rentre en collision avec un autre.
Le mieux serait de creer un tableau contenant 20 balles dans ton start, et d'utiliser ces balles sans devoir les recreer.Faire du pooling.
Moon RTS

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB-RS] Destroy qui marche pas tip top

Message par Moi 1971 » 20 Août 2016 11:16

Bonjour,
La technique du tableau et du pool d'objet c'est une bonne chose, mais compliqué pour quelqu'un qui débute.
Le problème du Destroy() a été traité ici et ailleurs plein de fois.
Le plus simple, c'est d'instancier une balle (ton objet bullet) comme tu le fais déjà, de lui donner une direction et une vitesse comme tu le fais déjà et ... c'est tout. La fonction Destroy() doit être implémentée dans l'objet bullet lui même. Dans la fonction start() de l'objet bullet,tu y places :

Code : Tout sélectionner

Destroy (gameObject, 5);
Comme ça, quand la balle est créée, elle sait par elle même quand elle doit mourir.

Avatar de l’utilisateur
Kazzad
Messages : 50
Inscription : 17 Août 2016 19:51
Localisation : France
Contact :

Re: [DB-RS] Destroy qui marche pas tip top

Message par Kazzad » 20 Août 2016 11:27

Ca peut paraître bizarre mais je préfère un gameobject qu'un raycast ^^
J'ai testé le script sur la balle: ça marche nickel, merci !

Mais par contre je comprend pas trop l'histoire du tableau... ça m'a l'air plus complexe a faire pour le même résultat... Le seul plus que ça a l'air d'apporter c'est une limite de balle, mais qui est facilement faisable avec une variable : /
Ne disons pas que ça fonctionne, disons que nous n'avons pas trouvé de dysfonctionnement.

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: [DB-RS] Destroy qui marche pas tip top

Message par F@B » 20 Août 2016 12:08

si tu préfère les balles au raycast pour d'obscures raisons, il te faut faire de l'object pulling et non du Instantiate Destroy à tire la Rigaud, niveau perfs c'est très mauvais.

un raycast ne coute rien, surtout si tu tire a la mitrailleuse 100 balles a la minute.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
Kazzad
Messages : 50
Inscription : 17 Août 2016 19:51
Localisation : France
Contact :

Re: [DB-RS] Destroy qui marche pas tip top

Message par Kazzad » 20 Août 2016 12:38

Ce qui me dérange avec les Raycasts c'est l'effet "rayon laser"...
Par exemple: un sniper vise une cible en mouvement au loin, avec le raycast, juste besoin de braquer le viseur sur la cible, car la balle arrive instantanément, mais avec un gameobject, il faut viser un peu avant, le temps que la balle arrive (comme dans la réalité en somme).

Mais par contre, cette histoire d'object pulling, on peut me faire un résumé? J'ai pas trouvé de trucs trop clairs sur internet ^^
Ne disons pas que ça fonctionne, disons que nous n'avons pas trouvé de dysfonctionnement.

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: [DB-RS] Destroy qui marche pas tip top

Message par F@B » 20 Août 2016 12:41

tu peux différer dans le temps fonction de la distance ton raycast ? peu importe.

l'object pooling, excuse moi de l'orthographe
https://unity3d.com/learn/tutorials/top ... ct-pooling
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
Kazzad
Messages : 50
Inscription : 17 Août 2016 19:51
Localisation : France
Contact :

Re: [DB-RS] Destroy qui marche pas tip top

Message par Kazzad » 20 Août 2016 12:43

Merci, je vais regarder ça : )
Ne disons pas que ça fonctionne, disons que nous n'avons pas trouvé de dysfonctionnement.

Verrouillé

Revenir vers « (Js) Javascript »