online faq recherche accueil
 

Il y a 161 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Une unité "attachée" à une autre

 
n°4588128
Revanb
Posté le 21-02-2007 à 01:12:54  profilanswer
 

Bonjour tout le monde  :D  
Je travaille sur une carte, et pour la création d'un sort, je me heurte à un problème: comment "attacher" une unité à une autre ? `C'est à dire qu'une unité soit toujours à la même position que le héros, même s'il se déplace, et tout et tout... J'ai pensé à déplacer l'unité vers le héros genre toutes les 0.05 secondes, mais ça utilise pas mal de ressources >.< Il faut bien que ça ait l'air fluide ! Vous n'avez pas une meilleur solution ? Merci  :)

n°4588130
Bryce de M​ouries
kikou
Posté le 21-02-2007 à 12:37:28  profilanswer
 

L'unité à attacher c'est juste pour le model ou bien pour ses compétences ?
 
Si c'est pour le model, un create effect attaché à l'unité ça passe, si c'est pour les compétences y a pit etre un moyen de faire autrement qu'avec une unité.
 
Sinon un 0.02 ou 0.03 bien foutu en JASS ça passe tranquille.


---------------
"Qu'est ce qu'on fait ce soir Gaurbaque?"
...
n°4588131
Revanb
Posté le 21-02-2007 à 13:28:53  profilanswer
 

Pour les compétences malheureusement :-/
Je connais un peu le JASS, mais je n'ai pas été initié à toutes les subtilitésde l'optimisation, est-ce-que ce code peut être amélioré ?
 
 
 
function Trig_ExplosionManaPeriodique_Actions takes nothing returns nothing
    local integer i
 set i = 1
    loop
        exitwhen i > 8
        call SetUnitPositionLoc( udg_spells_explosionMana_caster[i], GetUnitLoc(udg_spells_explosionMana_heros[i]) )
        set i = i + 1
    endloop
endfunction
 
//===========================================================================
function InitTrig_ExplosionManaPeriodique takes nothing returns nothing
    set gg_trg_ExplosionManaPeriodique = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_ExplosionManaPeriodique, 0.05 )
    call TriggerAddAction( gg_trg_ExplosionManaPeriodique, function Trig_ExplosionManaPeriodique_Actions )
endfunction
 
 
Merci !

n°4588135
legendair
\/ \/ \/ \/ \/
Posté le 21-02-2007 à 17:26:07  profilanswer
 

Si non tu peu surment fair sa  
 
move unit instantly to position of uniter  

n°4588137
gro_shaman
Ah... World edit...
Posté le 21-02-2007 à 18:39:28  profilanswer
 

Oui mais il parlait de l'event...


---------------
http://www.acathla.com/
n°4588138
Revanb
Posté le 21-02-2007 à 19:10:46  profilanswer
 

legendair a écrit :

Si non tu peu surment fair sa  
 
move unit instantly to position of uniter


 
Euh... c'est ce que j'ai fait ! Mais en JASS.

n°4588139
legendair
\/ \/ \/ \/ \/
Posté le 21-02-2007 à 20:24:00  profilanswer
 

mes la c plus facile ^^

n°4588143
Ayane
Posté le 21-02-2007 à 21:09:09  profilanswer
 

A la place de:
call SetUnitPositionLoc( udg_spells_explosionMana_caster[i], GetUnitLoc(udg_spells_explosionMana_heros[i]) )  
 
met:
call SetUnitPosition( udg_spells_explosionMana_caster[i], GetUnitX(udg_spells_explosionMana_heros[i]), GetUnitY(udg_spells_explosionMana_heros[i]) )  
 
Car à chaque GetUnitLoc tu créer un nouveau point que tu ne détruit pas. Et met en temps 0.04 (25 images/sec, qui est le minimum).
Sinon généralement on s'arrange pour éviter les "dummy" (tes unités qui servent juste pour les compétences), car une unité prend beaucoup de ressources.
 
Edit: je m'étais trompé pour le Y j'avais remis GetUnitX au lieu de GetUnitY.


Message édité par Ayane le 22-02-2007 à 17:40:46

---------------
http://acathla.com
http://worldedit.free.fr/
n°4588147
Revanb
Posté le 21-02-2007 à 22:54:56  profilanswer
 

Merci Ayane !
J'utilise un "dummy" pour la compétence Flamme de Mana, que j'ai la flemme de (re)coder moi-même :p

n°4588161
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 23-02-2007 à 21:45:37  profilanswer
 

Utilise plutôt SetUnitX et SetUnitY.
Car leur exécution est plus rapide étant donné que warcraft ne vérifie pas les valeurs contrairement à SetUnitPosition.
Enfin bien sûr si tu utilises des coordonnées non existantes sur la map ca fera planter warcraft  :D

n°4588164
Revanb
Posté le 24-02-2007 à 00:35:35  profilanswer
 

Ok ! Merci Beaucoup :-)

n°4588165
Ayane
Posté le 24-02-2007 à 00:36:05  profilanswer
 

Seulement cela fait plus de script, peu importe ce que fait le code compilé derrière ce sera plus rapide que le script.


---------------
http://acathla.com
http://worldedit.free.fr/
n°4588166
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 24-02-2007 à 11:37:52  profilanswer
 

je ne fais que répéter ce que j'ai lu sur wc3campaigns je ne pondrais jamais une telle chose moi même.
C'est Dieu Vexorian qui l'a dit   :jap:  
De plus je supposes qu'en bon programmeur il a testé avant d'affirmer une telle chose.
N'oublie pas Ayane il ne faut jurer de rien.
Enfin il reste toujours l'hypothèse que j'ai mal compris ce qui avait été dit  :sarcastic:  :D


Message édité par Troll-Brain le 24-02-2007 à 12:45:26
n°4588167
Bryce de M​ouries
kikou
Posté le 24-02-2007 à 13:23:40  profilanswer
 

Les 2 type de positionnement ont un rôle différent.
 
SetUnitX et SetUnitY permette de déplacer l'unité exacetement là où on veut sans tenir compte des autres unités, des falaises, des destructables etc...
Par contre avec SetUnitPosition on respecte toujours les collisions de l'unité pour pas se retrouver avec un gnoll au milieu des arbres en haut d'une falaise  :sweat:  
 
Dans son cas go SetUnitX/Y  :)


---------------
"Qu'est ce qu'on fait ce soir Gaurbaque?"
...
n°4588168
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 24-02-2007 à 14:07:00  profilanswer
 

toujours est t'il que je soutients ce que je dit le setunitX et setunitY est un meilleur choix dans ce cas précis à moins bien sûr qu'il y a risque de colision comme l'a dit Bryce.
Je vais essayer de retrouver le lien


Aller à :
Ajouter une réponse