Instancier depuis un tranfsorm

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Candik13
Messages : 4
Inscription : 07 Mai 2014 14:34

Instancier depuis un tranfsorm

Message par Candik13 » 07 Mai 2014 15:13

bonjour, voilà mon problème :

J'essaye d'instancier un fx au bout du canon de l'arme de mon personnage, malheureusement selon l'orientation de mon personnage, la position d'instanciation ne se trouve plus à niveau du transform.


voilà mon code :

Code : Tout sélectionner

var fxCanon:GameObject;

function InstanciateFire(rotation:Quaternion) // rotation est direction dans laquelle regarde le personnage
{
	// Création d'un FX
	var tempBullet = Instantiate(fxCanon, transform.position, rotation);
	
	// Destruction objets
	Destroy(tempBullet, 0.1);	
}
Ce script est attaché au transform du canon (on peut voir sa position sur l'image)
Pièces jointes
Bug Transform.png
Bug Transform.png (120.5 Kio) Consulté 3534 fois

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Instancier depuis un tranfsorm

Message par boubouk50 » 07 Mai 2014 15:33

je suis pas très fort avec les Quaternions, donc je pense à une alternative:

Place ton Fx au bout du canon et fait un LookAt vers ta caméra (Si j'ai bien compris ton Fx doit être orienté face à ton perso?)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Candik13
Messages : 4
Inscription : 07 Mai 2014 14:34

Re: Instancier depuis un tranfsorm

Message par Candik13 » 07 Mai 2014 15:53

J'aurais dû le dire avant, mon jeu est un tower defense, donc je ne peux pas utiliser cette technique.

Serait-il possible que le problème vienne du fait que canon soit un enfant, de l'enfant, de l'enfant ... d'un objet ?
Pièces jointes
Hérarchie.png
Hérarchie.png (8.75 Kio) Consulté 3525 fois

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Instancier depuis un tranfsorm

Message par boubouk50 » 07 Mai 2014 16:51

J'avais mal compris, j'ai pris ton perso pour la caméra.

Il me semble que les quaternions affecte la position et pas seulement la rotation.

Tu peux essayer d'attacher ton Fx à ton canon et de le positionner et tourner relativement (en plusieurs étapes), ou bien le lier au parent du canon (Je ne suis pas sur du résultat si les repères locaux du Fx et du Canon ne sont pas identiques).
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Franck
Bricoleur
Bricoleur
Messages : 2884
Inscription : 08 Jan 2011 18:43
Localisation : Tours

Re: Instancier depuis un tranfsorm

Message par Franck » 08 Mai 2014 16:15

Salut.

Et si tu essayes cela?

Code : Tout sélectionner

var tempBullet = Instantiate(fxCanon, transform.position, transform.rotation);
Dés fois j'bug, dés fois j'bug pas.

Avatar de l’utilisateur
Candik13
Messages : 4
Inscription : 07 Mai 2014 14:34

Re: Instancier depuis un tranfsorm

Message par Candik13 » 08 Mai 2014 23:00

Non même problème, je comprend pas d'où peut venir le changement de position.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Instancier depuis un tranfsorm

Message par boubouk50 » 12 Mai 2014 09:28

Après avoir instancié le fx, est-ce-que sa position et sa rotation sont identiques à celle de ton canon?
Si ce n'est pas le cas, cela ne pourrait-il pas venir du système de coordonnées?

tu pourrais aussi refaire tout à la main lputôt que d'utiliser Instantiate() pour pouvoir le parenter avant de le bouger:

Code : Tout sélectionner

var tempBullet = Instantiate(fxCanon);
tempBullet.parent = transform.parent;
tempBullet.position = transform.position;
tempBullet.rotation = transform.rotation;
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Scripting »