Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Le vagabond Membre récent
Inscrit le: 06 Nov 2007 Messages: 71 Sujets: 6
|
Posté le: 19/01/08 14:12 Sujet du message: Question de collision |
|
|
Bonjour,
Voilà, j'ai fais un système pour que les unités glissent dans une région (les unités avance à chaque intervalle de temps devant elle avec une certaine vitesse.
Le problème c'est que je voudrais que quand 2 unités se rencontrent elles changent de direction (qu'elles rebondissent entre-elle). Donc j'ai fais 8 déclos (il y a 8 unités qui sont "sur la banquise", chacune assignée à une variable), pour faire tourner les unités je crée la même unité en changeant son "facing angle" car si j'utilise l'action "make unit face..etc" l'unité prend 1 seconde à tourner et l'effet est très mauvais, car l'unité doit tourner directement c'est pourquoi je crée une autre unité et je détruit l'ancienne.
Donc au début de la map je rajoute à mes 8 déclencheurs l'événement respectif "a unit comes within 100 of son unité respective".
Les actions de chaque déclencheurs échangent les "facing angle" de chaque unité :
ex: unit1(facing angle = 0) se cogne à unit2(fc = 90) => unit1 (fc = 90) et unit2 (fc = 0).
Sauf que à chaque fois que je fais se tourner une unité j en crée une nouvelle comme expliqué plus haut et donc je change la variable assignée à l'unité donc je dois rajouter l'événement "a unit comes within 100 of son unité respective" à chaque fois qu'une unité tourne ce qui arrive très souvent.
Ce système ne marche pas et crée un leak. C'est pourquoi je sollicite votre aide pour trouver une solution à se problème.
J'espère que vous m'avez compris.
Merci. _________________
Dernière édition par Le vagabond le 19/01/08 15:27; édité 1 fois |
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 19/01/08 14:56 Sujet du message: |
|
|
Citation: | Sauf que à chaque fois que je fais se tourner une unité j en crée une nouvelle |
Oho j'en vois vraiment pas l'intérêt, même le pire escape jamais créé n'utilise pas cette méthode.
Si tu veux que l'unité tourne instantément aprés en avoir reçu l'ordre y'a une action pour cela.
(Move unit instantly face angle/point) _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Le vagabond Membre récent
Inscrit le: 06 Nov 2007 Messages: 71 Sujets: 6
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 19/01/08 15:47 Sujet du message: |
|
|
fais voir ce que tu faisais _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Le vagabond Membre récent
Inscrit le: 06 Nov 2007 Messages: 71 Sujets: 6
|
Posté le: 19/01/08 16:02 Sujet du message: |
|
|
Pour tourner ou pour le reste? Parce que pour tourner j'ai esseyer avec les 2 actions :
Gui: | Trigger:  Unité - Move (Triggering unit) instantly to (Center of (Playable map area)), facing Orientation bâtiment par défaut degrees  Unité - Make (Triggering unit) face Orientation bâtiment par défaut over 0.00 seconds |
_________________
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 19/01/08 16:16 Sujet du message: |
|
|
c'est quoi ton déclencheur au complet ? _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Le vagabond Membre récent
Inscrit le: 06 Nov 2007 Messages: 71 Sujets: 6
|
Posté le: 19/01/08 17:01 Sujet du message: |
|
|
J'ai tout mis dans un seul déclo finalement il a tous les événements de 1 à 8 :"a unit comes within 120 of skater[1]. Skater est la variable unité.
Voilà c'est vraiment le bordel je sais pas si tu vas comprendre quelquechose. Mais je cherche pas tellement que vous me corrigiez ce que j'ai fais mais plutôt que vous trouviez une autre méthode si possible. _________________
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 19/01/08 17:40 Sujet du message: |
|
|
si tu veut leur faire faire un demi tour suffit d'ajouter 180 à l'angle d'orientation de l'unité _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Gevans Back

Inscrit le: 21 Aoû 2007 Messages: 1930 Sujets: 85
Médailles: 2 (En savoir plus...)
|
Posté le: 19/01/08 19:05 Sujet du message: |
|
|
Mais si 2 unités se touchent elles ne vont pas dévier forcément de 180° chacune!
Cela dit je vois pas du tout comment faire autrement, normalement il faudrait voir la distance entre les 2 centres des unités, le risque c'est que ça fasse très faux si deux unités se frolent à peine et font quand même un demi tour (à moins que ça ne soit l'effet recherché ^^) _________________
Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil.
Topic indispensable |
|
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...)
|
Posté le: 19/01/08 19:56 Sujet du message: |
|
|
Pour faire rebondir deux choses l'unes sur l'autre sans parler d'élasticité et autre, il faut penser à la règle valable pour la réflexion de la lumière.
angle rayon incident = angle rayon réfléchi
Après est ce que tu veux un rebond comme une balle, ou alors, plus comme deux humains qui se rentrent dedans (j'ai dans la tête qu'il iraient ensuite dans la meme direction^^) _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
 |
Le vagabond Membre récent
Inscrit le: 06 Nov 2007 Messages: 71 Sujets: 6
|
Posté le: 19/01/08 22:15 Sujet du message: |
|
|
C'est ce que j'esseye de faire:
échanger les 2 facing angles comme je l'ai dit unit1(facing angle = 0) se cogne à unit2(fc = 90) => unit1 (fc = 90) et unit2 (fc = 0). En fait c'est 2 humains qui se rentrent dedans mais j aurais aimer qu'ils rebondissent entre-eux comme des balles. _________________
|
|
Revenir en haut |
|
 |
Darkfeyt Floodeur prématuré
Inscrit le: 22 Nov 2007 Messages: 677 Sujets: 27 Spécialité en worldedit: Jamais sortir ses projets ?
|
Posté le: 20/01/08 01:06 Sujet du message: |
|
|
Sa metone que personne n'est fait cette remarque (apart si j'ai mal lu),
alors c'est que cette evenement doit être spécial.
Les evenement qui utilise des variable prennent les valeur des variable a l'initialisation et donc quand tu change la valeur de la variable l'evenement ne change pas.
Ceci ne generai pas si les valeur y sont deja a l'initialisation (deja en valeur par défaut de la variable) (note: impossible avec une array de choisir independament non ?) mais puisque tu crée une nouvelle unité a chaque choc la valeur change.
Voila j'ai peut être dit ma connerie du jour merci de m'avoir lu. :p _________________
|
|
Revenir en haut |
|
 |
Le vagabond Membre récent
Inscrit le: 06 Nov 2007 Messages: 71 Sujets: 6
|
Posté le: 20/01/08 11:21 Sujet du message: |
|
|
Bah le problème si je ne rajoute pas l'événement à chaque fois que la valeur change et bien le déclo ne se lance plus. Quand je change la valeur de la variable il faut absolument que je rajoute l'événement. _________________
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 20/01/08 11:27 Sujet du message: |
|
|
Le vagabond a écrit: | Bah le problème si je ne rajoute pas l'événement à chaque fois que la valeur change et bien le déclo ne se lance plus. Quand je change la valeur de la variable il faut absolument que je rajoute l'événement. |
Oui ce n'est pas la variable en elle même qui est utilisée, mais sa valeur à l'instant ou l'évènement est enregistré.
Je connais une seule exeption, mais il y en a peut être d'autres.
C'est l'event avec une region.
si on utilise une variable globale, modifier la région, affecte l'évènement.
(je parles du jass pas du gui).
Enfin je parles bien de modifier la region (ajouter/enlever des rect/cells) pas de changer la référence de la variable
@Darfeyt : Oui pour choisir les valeurs individuellement dans un array , faut le faire manuellement, impossible dans l'éditeur de variable. _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Le vagabond Membre récent
Inscrit le: 06 Nov 2007 Messages: 71 Sujets: 6
|
Posté le: 20/01/08 11:36 Sujet du message: |
|
|
Donc peut-être que si j'esseyait de faire un système ou chaque unité aurait une région qui bougerait avec elle, et à chaque fois qu'une unité rentre dans cette région elle dévie cela marcherait mieux? _________________
|
|
Revenir en haut |
|
 |
|