Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=4b6985a35f3b684c6858348eb378c9dfMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Problème de trigonométrie (encore)

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Les sorts
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 jk2pach
Invité








MessagePosté le: 11/03/09 22:58    Sujet du message: Problème de trigonométrie (encore) Citer

Bonsoir,

Je cherche à créer un sort qui permettrait à une unité d'invoquer une série de dummys en forme de projectile quelconques, puis à les projeter chacun en ligne droite dans la direction que regarde le lanceur de sort.

Mon problème vient de la création de ces dummys. Quelle formule de maths utiliser??


J'ai essayé plusieurs trucs mais j'ai vraiment un problème de trigonométrie.

En gros le point bleu c'est le lanceur de sort, le vecteur vert la direction qu'il regarde et le segment rouge celui sur lequel j'aimerais créer X dummys, chacun partant de l'intersection avec la ligne de mire.

Merci d'avance


_________________
Revenir en haut
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 11/03/09 23:37    Sujet du message: Citer

Le principe serait de faire une projection polaire du point de croisement entre la ligne rouge et la verte.

Ensuite la même chose à partir de ce point, en utilisant l'angle de l'unité +- 90° avec différentes distances pour placer tes dummy.
La même chose à partir des positions de tes dummy pour les faire avancer.

Il y a différents moyens d'optimiser mais je te laisse deja faire ça, on verra pour le reste après^^
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 retely
Membre reconnu


Inscrit le: 04 Juil 2008
Messages: 1195
Sujets: 73



MessagePosté le: 11/03/09 23:38    Sujet du message: Citer

Facile avec le tutorial de Gevans

Gui:
Trigger:
Déclencheur sans titre 001
Collapse Evénements
Unité - A unit Initie l'effet d'une compétence
Collapse Conditions
(Unit-type of (Triggering unit)) Egal à  Paladin
Collapse Actions
Set X = (-15x20)/2 soit -150
Collapse For each (Integer A) from 1 to 15, do (Actions)
Collapse Boucle - Actions
Effet spécial - Create a special effect at ((Position of (Triggering unit)) offset by (100, X)) using AbilitiesSpellsHumanMarkOfChaosMarkOfChaosTarget.mdl
Set X = (X + 10.00)
Wait 0.50 seconds


Donc tu fais une variable Réel X, et tu la "Reset" avec un set X=0 (oui car elle a put être utilisé avant)
Ensuite, on se place dans un graphique avec deux Axes X et Y ( 0.00 ; 0.00 ) donc on créé une ligne de projectile devant le héro donc on mais en X 10 pour avoir une distance, et en Y on met X ( vu le vecteur que tu as dessiné, on devrait set X = -( 20 x 15 ) / 2 pour avoir une symetrie entre le haut et le bas du vecteur rouge puis on répéte le projectile 15 fois avec une montée en Y.

Le problème la dedans, c'est que les projectiles se placeront pas devant devant le héro, mais toujours a droite... car on est dans un repère fixé, ne dépendant pas du héro !

Où est la trigo ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 12/03/09 00:21    Sujet du message: Citer

Moi j'avais fait ça (je vous passe l'ensemble du déclencheur)
d1 est la distance entre le caster et le segment rouge.
a1 est le facing du caster.
Jass:
ocal real ox1 = x1 + d1 * Cos(a1+90.00)
local real oy1 = y1 + d1 * Sin(a1+90.00)
local real ox2 = x1 + d1 * Cos(a1-90.00)
local real oy2 = y1 + d1 * Sin(a1-90.00)

        loop
            set i = i + 1
            exitwhen i > 6
            set x2 = (ox1+ox2)/i
            set y2 = (oy1+oy2)/i
            set x3 = x2 + d2 * Cos(a1)
            set y3 = y2 + d2 * Sin(a1)
            set dum = CreateUnit(pl,id,x2,y2,a1)
        endloop
 

_________________
Revenir en haut
 jk2pach
Invité








MessagePosté le: 12/03/09 03:32    Sujet du message: Citer

Oubliez ce que j'ai dit. La première méthode que j'avais utilisé était bonne, à part que j'avais oublié d'utiliser le BJ_Degtorad.

Ca donne quelque chose comme ça :

Jass:
loop
            set i = i + 1
            set n = n + 0.50
            exitwhen i > 6
            set x2[i] = x1 + n*d1 * Cos((a1+90.00)* bj_DEGTORAD)
            set y2[i] = y1 + n*d1 * Sin((a1+90.00)* bj_DEGTORAD)
            set dum[i] = CreateUnit(pl,id,x2[i],y2[i],a1)
            call DestroyEffect(AddSpecialEffect(fx,x2[i],y2[i]))
            set x2[i+6] = x1 + n*d1 * Cos((a1-90.00)* bj_DEGTORAD)
            set y2[i+6] = y1 + n*d1 * Sin((a1-90.00)* bj_DEGTORAD)
            set dum[i+6] = CreateUnit(pl,id,x2[i+6],y2[i+6],a1)
            call DestroyEffect(AddSpecialEffect(fx,x2[i+6],y2[i+6]))
        endloop

_________________
Revenir en haut
 Max
Floodeur prématuré


Inscrit le: 13 Jan 2009
Messages: 550
Sujets: 47
Spécialité en worldedit: La partie déclencheurs sauf le GUI.


MessagePosté le: 12/03/09 18:14    Sujet du message: Citer

Tu devrais plutot utiliser les fonctions CosBJ et SinBJ :
Cos((a1+90.00)* bj_DEGTORAD)
-> CosBJ( a1+90.00 )
Plus pratique d'utilisation, et aussi à lire.

Cependant tu fais les mêmes calculs plusieurs fois :
(a1+90.00)* bj_DEGTORAD deux fois
Tu devrais passer par une variable intermédiaire, par exemple angle :
set angle = (a1+90.00)* bj_DEGTORAD
De même que pour n*d1, que tu calcules 4 fois.
set dist = n*d1

Cela donnerait au final les lignes suivantes :
set x2[i] = x1 + dist * Cos( angle )
set y2[i] = y1 + dist * Sin( angle )
Deux avantages : économiser des calculs et obtenir des lignes de codes plus compréhensibles.
_________________
Maximaxou@northrend

Projet Max Escape Creation (éditeur d'escapes : mazes/slides) : http://max.slid.free.fr/maxEscapeCreation/
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 retely
Membre reconnu


Inscrit le: 04 Juil 2008
Messages: 1195
Sujets: 73



MessagePosté le: 12/03/09 19:03    Sujet du message: Citer

Ah là je vois la trigo ^^
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zril
Membre actif


Inscrit le: 02 Jan 2008
Messages: 175
Sujets: 35



MessagePosté le: 13/03/09 13:21    Sujet du message: Citer

Si j'ai bien compris, le sort crée une ligne droite, alors je comprends pas trop pourquoi t'utilise de la trigo.

Je suis sur une map ou j'ai créé une bonne douzaine de sort à base de dummy dans le même genre que le tien. Je ferai peut-être une video démo un jour pour vous montrer.

edit : ah en fait ça fait une ligne droite au départ mais après ils convergent tous vers un même point, c'est ça ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 13/03/09 13:34    Sujet du message: Citer

Ca créé une ligne perpendiculaire au héro de dummys, et ça les lance en ligne droit en face d'eux mêmes.

Les dummys sont secondaires, ça aurait aussi bien pu être un effet spécial


Mais oui j'ai déjà fait les variantes "ça converge", "ça diverge" etc...^^
_________________
Revenir en haut
 zril
Membre actif


Inscrit le: 02 Jan 2008
Messages: 175
Sujets: 35



MessagePosté le: 14/03/09 01:04    Sujet du message: Citer

Pour les "lancer", tu recrées d'autres dummies ou tu les déplaces ?

Mais de toute façon, pour faire des trajectoires en ligne droite, tu dois t'en sortir sans trigo.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 14/03/09 01:10    Sujet du message: Citer

Pour les lancer, je les déplace instantanément.(En faisant appel à des fonctions de saut+dégât)

Ce que j'appelle trigo, c'est tout simplement tout truc qui comporte des sinus et des cosinus, même les plus basiques: j'ai toujours eu horreur de ça et malgré deux ans de prépa à 12h de maths par semaine,il y a 2 ans, je ne suis plus du tout capable de me rappeler des cours Very Happy

Enfin de toute façon j'ai résolu le problème avec les bj_DEGTORAD.
_________________
Revenir en haut
 zril
Membre actif


Inscrit le: 02 Jan 2008
Messages: 175
Sujets: 35



MessagePosté le: 14/03/09 01:17    Sujet du message: Citer

Et bien t'as pas besoin de sinus ou de cosinus pour faire ça, mais bon si t'as réussi avec je dis rien ^^ Mais c'est compliquer un truc simple. D'ailleurs je comprends pas du tout tes formules.

Sinon moi je préfère recréer d'autres dummies, je suppose que ça doit être plus lourd pour les pc, mais visuellement ça donne bien Very Happy.
Je ferai une petite video démo demain si je trouve un logiciel pour enregistrer l'écran.

PS : je suis en plein dans les maths en ce moment donc je mange plein de trigo xD donc je m'en passe quand je peux m'en passer ^^
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 14/03/09 01:48    Sujet du message: Citer

héhé.

Sinon effectivement créer plusieurs dummys rend bien, mais là ça en ferait beaucoup trop: il y a une dizaine de dummys à l'origine, alors si je dois les cloner toutes les 0.03 secondes sur une distance de 600 ou dans ces eaux là, ça fait trop d'unités en même temps.
Je limite au maximum l'usage de dummys quand ils ne servent qu'à un effet graphique.
_________________
Revenir en haut
 retely
Membre reconnu


Inscrit le: 04 Juil 2008
Messages: 1195
Sujets: 73



MessagePosté le: 14/03/09 12:04    Sujet du message: Citer

Mais, si ces unités n'ont aucun models, elle ne ralentissent pas ! si ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zril
Membre actif


Inscrit le: 02 Jan 2008
Messages: 175
Sujets: 35



MessagePosté le: 14/03/09 12:21    Sujet du message: Citer

Ce sont des dummies avec des modèles, le but étant qu'on ne puisse pas les sélectionner tout en ayant l'effet visuel.

edit : en fait je sais pas si il fait comme ça, mais moi c'est comme ça que je fais.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Les sorts Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1
La question posée dans ce topic a été résolue !

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com