[fonctions] Getangle, Face
#1
Posté 24 avril 2009 - 00:53
Contrairement au PJ, si un PNJ ou une créature se déplace, "GetAngle z" ne donnera pas son nouvel angle mais toujours celui qu'il avait dans sa position d'origine. Même s'il est ensuite à l'arrêt. De même, si on fait tourner un PNJ/créature avec "Face, x, y", il se tourne bien dans la direction indiquée mais un "GetAngle z" donnera son ancien angle et pas le nouveau.
Quitter la cellule et revenir ne change rien à ce que renvoie "GetAngle". Le seul moyen que j'ai trouvé pour avoir son nouvel angle est de faire un "placeatme" d'un objet quelconque qui lui, sera positionné dans le nouvel angle du PNJ. Et donc, de tester "GetAngle" sur l'objet, pour connaitre le nouvel angle du PNJ.
#2
Posté 24 avril 2009 - 00:56
"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio
#3
Posté 24 avril 2009 - 07:35
Finalement, c'est assez simple à résumer : toutes les fonctions non utilisés par Beth sont bugguées.
Not Quite Dead, le 22.06.2006 à 19:42, dit :
Fervent Partisan de l'Immuabilité Avatarienne.
#4
Posté 24 avril 2009 - 19:18
Citation
je n'avais jamais essayé je sens que je vais reprendre mon idée de départ !
#5
Posté 24 avril 2009 - 23:24
Snaïpe, le 24.04.2009 à 20:17, dit :
Frame 1 : Il pivote Frame 2 : Il fait "PlaceItem" Frame 3 : GetAngle sur l'objet placé et SetAngle sur celui qui doit suivre.
Mais d'après ce que tu expliques, il serait plus simple d'utiliser "PlaceItem" directement pour placer une nouvelle instance de l'objet qui doit suivre le déplacement du PNJ. Tu n'aurais même pas besoin de tester l'angle. Tu peux toutes les 4 ou 5 frames remplacer ainsi le bateau qui adoptera l'angle du PNJ. Dans les frames intermédiaires, tu relèves la position du PNJ avec "GetPos" et fait "SetPos" sur ton bateau à ces coordonnées.
Sans oublier bien sûr un "GetDisabled/SetDelete" dans son script qui "delete" chaque instance au fur et à mesure. Pour commander les "disable", juste avant de faire "PlaceItem", le script du PNJ met une variable globale à x. Quand le script du bateau relève que cette variable est à x, il replace la variable à z et fait le "disable". C'est juste une question de synchroniser les étapes et l'état de la variable pour qu'il en reste toujours un exemplaire.
Ce que je dis là suppose que tu places le bateau au même endroit que le PNJ (mêmes centres). S'il doit le suivre à distance, il te faut effectivement relever l'angle.
#6
Posté 25 avril 2009 - 04:17
Il y a peut être des réponses utiles pour vous dans le script de Mortim pour le tapis volant.
Je ne sais pas si vous connaissez l'objet et son fonctionnement in game : il avance tout seul et on reste placé dessus, les touches q et d commandent la direction, activer le tapis (le cliquer quand on est en vol dessus) commande alternativement montée/horizontal/descente et visse-versa, selon un angle constant pour la montée et la descente.
Il a de plus un effet d'inclinaison dans les virages, comme une planche à surf littéralement.
Le tapis se place toujours strictement dans l'axe du PJ défini par les touches q /d, alors que comme on le voit dans le script, le seul angle testé est sur "Z" (il semble donc que ["Player"->GetAngle Z] fonctionne) : les directions du tapis dans le plan horizontal ne sont données que par des enregistrements/comparaisons GetPos X, Y / Last_PosX, LastPos_y (la limite du procédé étant qu'il ne fonctionne que s'il y a déplacement du pj évidemment).
Ce modèle est utilisable pour un bateau (sauf "montée ou descente à l'activation", à moins de vouloir faire un sous-marin, un hydravion ou un engin Dwemer polyvalent).
Voilà le script :
Il est possible d'ajouter des variations de vitesse à partir de l'algo du levelling de la méditation (qui assure une incrémentation par 1 de 0 à 100 à faible coût de calcul -au moyen de 8 blocs test/commandes légers seulement- ), en remplaçant les capacités augmentant la régénération de magie par des augmentations de "speed", et le niveau par un chiffre incrémenté tant qu'une commande du bateau est activée par clic par exemple, ou qu'une vitesse est préalablement choisie par messagebox ou dialogue et appliquée avec des modificateurs selon "GetWindSpeed" par ex
Pour la méditation tout se passe en une frame puisqu'il s'agit d'appliquer un levelling, mais ça peut aussi bien se décomposer par state et timer ou framecount pour obtenir une accélération ou une décélération progressives.
Pour mémoire voilà cet algo :
Modifié par alliop, 25 avril 2009 - 09:39.
"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio
#7
Posté 25 avril 2009 - 10:58
Je connais le tapis car je m'en servais dans mon jeu (même si je devais systématiquement mettre la distance de vision au minimum avec FPS Optimiser avant de changer de cellule, sous peine de retour bureau).
Ce que je signale par ce sujet, c'est justement la différence entre l'application de "GetAngle" sur le PJ et la même fonction sur un PNJ.
Le script du tapis ne fonctionnerait pas avec un PNJ car "GetAngle z" ne retournerait pas son angle courant pendant son déplacement mais toujours celui qu'il avait lors de son positionnement initial dans la cellule.
Quand à utiliser ce genre de script (parfait pour un tapis) sur un bateau, j'en ai testé un qui fonctionnait sur ce principe et je n'ai pas trouvé le résultat heureux. Ou alors, il faudrait ajouter une temporisation lors des changements d'angle du PJ pour que que le bateau ne prenne pas immédiatement le même angle que le PJ mais au contraire, qu'il ne l'adopte que petit à petit. Voir un bateau qui passe de 0 à 180° d'un coup est assez curieux. C'est pour ça que pour mon bateau, j'ai adopté un pilotage indépendant de l'angle du PJ.
Pour cet ancien projet de Snaïpe, ça dépend de ce qu'il souhaitait faire exactement.
Je regarderai plus tard l'algo de méditation car je ne suis pas assez réveillé pour examiner sérieusement ses utilisations possibles.
#8
Posté 25 avril 2009 - 11:52
Citation
C'est un effet que je cherche également dans un script d'automobile, une voiture ne peut tourner sur place, mais uniquement en roulant, et le rayon de courbure dépendant de la vitesse.
#9
Posté 25 avril 2009 - 14:39
elendell, le 25.04.2009 à 11:57, dit :
[....]
Je regarderai plus tard l'algo de méditation car je ne suis pas assez réveillé pour examiner sérieusement ses utilisations possibles.
Cet algo permet d'incrémenter de façon continue ce qu'on veut de 1 point dans des fourchettes importantes en fixant des limites variables, sans faire un bloc par point (8 blocs au lieu de 100 pour aller de 0 à 100).
Vous avez raison, un bateau ne peut pas virer sur place bien sûr, à moins d'être un ovni flottant.
Bonnes suites
Modifié par alliop, 25 avril 2009 - 14:48.
"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio
#10
Posté 25 avril 2009 - 18:28
Von Zeeple, le 25.04.2009 à 12:51, dit :
if ( etape == 2 ) if ( barre == 0 ) set rotation to 0 else if ( barre < 0 ) set rotation to ( ( barre * -1 ) * vitesse ) elseif ( barre > 0 ) set rotation to ( vitesse * barre ) endif set rotation to ( rotation / 600 ) if ( rotation < 1.5 ) set rotation to 1.5 endif endif set gouvern to 0 endifNotes : "Barre" correspond au braquage (de -40 à 40 pour moi). Si le joueur appui une fois sur une touche de direction gauche/droite, le braquage change de 1 (ou -1) ; si la touche est maintenue appuyée + de 0.5s, le braquage change de 1 toutes les 0.06s (pour que le braquage soit continu mais qu'il ne se fasse pas trop vite en cas de framerate élevé). 600 est la vitesse maximale du bateau. "Rotation" donne la valeur à appliquer à "Rotate". Pour le bateau, j'ai mis une vitesse minimale de rotation mais ce n'est peut-être pas à faire pour une voiture. La partie du script qui fait la rotation elle-même ne s'exécute pas si la vitesse du véhicule = 0.
Si tu veux examiner mon script, n'hésite pas à me le demander.
alliop, le 25.04.2009 à 15:38, dit :
while ( mouvement < vitesse ) if ( ( vitesse - mouvement ) < 10 ) move y 1 set mouvement to ( mouvement + 1 ) endif if ( ( vitesse - mouvement ) < 100 ) move y 10 set mouvement to ( mouvement + 10 ) endif if ( ( vitesse - mouvement ) < 300 ) if ( ( vitesse - mouvement ) >= 100 ) move y 100 set mouvement to ( mouvement + 100 ) endif endif if ( ( vitesse - mouvement ) >= 300 ) move y 300 set mouvement to ( mouvement + 300 ) endif endwhile set mouvement to 0
J'ai mis des tranches (centaine, dixaine, unité) pour qu'il n'y ait pas trop de boucles risquant de de geler l'écran. J'ai remarqué que les valeurs des "move" se cumulaient. Donc, si la vitesse est par exemple de 521 unités/s, j'obtiens "move y 521" en 6 boucles dans la même frame.
Je fais la même chose pour décélérer et pour tourner. J'ai adopté ce système parce que "Move" et "Rotate" n'acceptent pas les variables en argument.
#11
Posté 25 avril 2009 - 21:39
Citation
Je fais la même chose pour décélérer et pour tourner. J'ai adopté ce système parce que "Move" et "Rotate" n'acceptent pas les variables en argument. smile.gif
Très bonne idée!
Mais qu'en est-il des collisions avec le rivage ou des récifs?
je n'ai jamais compris comment la barque du mod "Galion Ultime" fonctionnait pour ça.
#12
Posté 25 avril 2009 - 22:26
Les collisions sont déterminées par des pnj invisibles, placés à l'avant et à l'arrière du vaisseau....
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)
#13
Posté 25 avril 2009 - 22:35
Von Zeeple, le 25.04.2009 à 22:38, dit :
je n'ai jamais compris comment la barque du mod "Galion Ultime" fonctionnait pour ça.
Comme c'est une créature, on ne peut pas lui donner l'angle du bateau avec "SetAngle z variable". Donc, toutes les 5 frames, le détecteur est remplacé à l'aide d'un "placeItem" qui lui, accepte les variables pour l'angle.
La première frame sert à la mise en place. Ensuite, en début de chaque frame, le script du détecteur relève sa position réelle et la compare avec celle qui avait été établie à la frame précédente (et donnée avec "SetPos"). Si la distance entre les positions ordonnée et réelle est supérieure à 0.1 ou si la hauteur du détecteur a changé, c'est que la créature n'a pas pu s'y placer. Ça peut arriver sans collision mais si ça arrive deux frames de suite, c'est qu'il y a collision. (Suivant le cas, il faut compter plus de frames pour valider la collision).
Dans ce cas, le script du bateau le fait repartir dans le sens inverse jusqu'à ce qu'il n'y ait plus collision (et un peu plus). C'est le "retour de choc".
Sans ce retour, le détecteur suivant qui le remplacera serait placé à l'intérieur de l'obstacle et ça, ça ne génère pas d'écart de positionnement.
Note : La détection d'écart de hauteur n'est pas forcement nécessaire. Elle ne l'est que si le véhicule peut rencontrer un obstacle en pente douce (une plage par exemple). Car dans ce cas, les "SetPos" x et y se font sans problème. Quand on fait un "SetPos", le jeu vérifie si la place est libre. Si non, il positionne la créature à l'endroit libre le plus proche. En cas de pente douce, il peut le positionner à x et y définis mais il décale par contre dans la hauteur.
#14
Posté 26 avril 2009 - 00:53
Mais alors, pourquoi ne pas faire de ton bateau une créature, au lieu d'un activateur ou d'un misc item?
#15
Posté 26 avril 2009 - 01:11
Personnellement, c'est la première piste que j'avais explorée, surtout que ça permettait au bateau d'avoir une ombre....
Je ne sais plus pourquoi l'idée a été écartée, mais il me semble qu'il y avait une bonne raison....
***Edit***
Je crois qu'il y avait un problème de tressautement, mais Elendell doit mieux s'en rappeler, c'est lui qui a fait les tests....
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)
#16
Posté 26 avril 2009 - 02:08
elendell, le 25.04.2009 à 19:27, dit :
alliop, le 25.04.2009 à 15:38, dit :
[.... code.....]
J'ai mis des tranches (centaine, dixaine, unité) pour qu'il n'y ait pas trop de boucles risquant de de geler l'écran. J'ai remarqué que les valeurs des "move" se cumulaient. Donc, si la vitesse est par exemple de 521 unités/s, j'obtiens "move y 521" en 6 boucles dans la même frame.
Pour qu'il y ait accélération il faut au contraire un incrément de un par frame jusqu'à 512, non?
Modifié par alliop, 26 avril 2009 - 02:49.
"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio
#17
Posté 26 avril 2009 - 03:22
Von Zeeple, le 26.04.2009 à 01:52, dit :
Kira, le 26.04.2009 à 02:10, dit :
On a essayé d'autres systèmes en décalant le centre de la créature pour le placer hors du volume de collision du PJ mais l'effet était le même.
J'ai aussi essayé d'utiliser uniquement un activateur car, si mes souvenirs sont bons (ça remonte à fin 2008), avec "Move" et "Rotate" l'activateur permet de détecter la collision (mais pas avec "SetPos"). Seulement, ça fonctionnait en utilisant une petite barque mais avec un bateau plus grand (celui du meshe uilisé), ça faisait également des tremblements.
Du coup, je me suis orienté sur le Misc. La seule chose un peu gênante, c'est qu'un Misc doit obligatoirement avoir une icône. J'en ai faite une transparente mais même si on voit à travers, il y a quand même le carré sombre qui est visible quand le PJ se tourne vers le mat ou le pont.
Mais on l'oublie vite et je ne suis pas sûr que les aménagements que j'ai faits depuis auraient été possibles avec un activateur (comme le roulis lié à la vitesse quand il navigue).
alliop, le 26.04.2009 à 03:07, dit :
Pour qu'il y ait accélération il faut au contraire un incrément de un par frame jusqu'à 512, non?
Je ne me souviens plus pourquoi j'avais dû faire ainsi. Peut-être parce que je fais jouer une valeur "d'inertie". Les changements de vitesse ne se font pas par paliers de 1. Plus la vitesse est grande et plus la valeur ajoutée augmente. Principe inverse pour le ralentissement.
Donc, au lieu d'avoir une vitesse qui augmente de façon linaire, on sent le voilier qui commence à prendre le vent, avec une certaine "lourdeur" au tout début et qui s'annule au fur et à mesure car on bénéficie pour aller encore plus vite, de la vitesse déjà acquise.
Pour le ralentissement, bien que je n'ai jamais fait de voile et ne sais donc pas ce qu'il en est en vrai, je trouvais mieux qu'il faille un certain temps pour vaincre la vitesse en cours car le voilier n'a pas de frein-moteur. Et même si c'est peut-être possible en vrai en jouant sur les voiles, ça oblige le joueur à prévoir un minimum le ralentissement nécessaire, pour arriver à vitesse minimale prêt du quai ou pour éviter les obstacles.
Pour les mêmes raisons ludiques, je ne lui permets pas de tourner instantanément à 90°. Comme ça, le joueur doit rester attentif et prévoyant s'il ne veut pas se payer un rocher ! J'ai un moment caressé l'idée de le faire chavirer s'il tournait trop brusquement mais je ne suis finalement pas allé jusque là.
PS : Merci pour ton explication de l'algo. Je ne doute pas que ça me servira à l'occasion.
#18
Posté 28 avril 2009 - 07:36
Dans le cadre d'un piège faisant tomber des lances sur le sol, j'essaie de compenser les limitations SetAtStart par Get/SetAngle.
Voici ce qui devrait se passer dans le meilleur des mondes possibles:
Des activators avec un mesh de lance traversent en diagonale un couloir, blessant tout acteur touché, puis sont immédiatement replacés à leur position initiale lorsqu'ils touchent le sol et reprennent leur course. Chaque lance a sur les axes Y et Z une rotation (et donc une trajectoire) qui lui est propre. Le même script est attaché à chacune de ces lances.
Ayant constaté que SetAtStart tenait compte de la position X, Y, Z dans l'éditeur, mais pas de ses rotations X, Y, Z, j'ai essayé de compenser en me servant de GetAngle pour enregistrer les rotations propres aux lances en début de script, de manière à pouvoir les restaurer par la suite. Apparemment, ça ne fonctionne pas: comme avec SetAtStart, les rotations sont remises à 0 et non à leur position initiale dans l'éditeur.
Begin FoB_ThrownHurtingSpears Short Setup Float RotaY Float RotaZ if ( MenuMode == 1 ) Return endif if ( Setup == 0 ) Set RotaY to ( GetAngle, Y ) Set RotaZ to ( GetAngle, Z ) Set Setup to 1 endif HurtCollidingActor 75 if ( GetPos Z <= -1300 ) SetAtStart SetAngle, Y, RotaY SetAngle, Z, RotaZ MessageBox "reseté", "ok" Return endif Move Y 10 End FoB_ThrownHurtingSpears
Quelqu'un pourrait-il me dire où je fais erreur?
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV
#19
Posté 28 avril 2009 - 15:48
"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio
#20
Posté 28 avril 2009 - 16:06
Je n'ai jamais utilisé "SetAtStart" et découvre donc ses limitations (merci pour l'info).
Il est possible que, comme tu utilises "SetAtStart" et "SetAngle" dans la même frame, la limitation de la première empêche l'action de la deuxième.
A ta place, j'essaierais deux choses :
1) Utiliser une frame supplémentaire après le "SetAtStart", consacrée aux "SetAngle". Ils s'appliqueront alors sur l'objet déjà replacé à x, y, z d'origine.
2) Ne pas utiliser du tout "SetAtStart" mais "GetPos" et "SetPos" à la place.
Question : Pourquoi l'angle y ? Ne serait-ce pas l'angle x qu'il faudrait réinitialiser (ou les deux si la lance a une lame plate qui doit avoir un angle précis) ?
PS : Rappelles-moi à l'occasion de ne jamais me promener dans tes couloirs...
#21
Posté 02 mai 2009 - 17:00
En farfouillant sur le net, je suis tombé sur cet article qui confirme mes soupçons: les axes des x et des y ne sont probablement pas ceux du monde mais ceux de l'objet, de sorte que setangle Y fait tournoyer la lance sur elle-même au lieu de l'incliner en direction du sol comme le fait dans le tescs une rotation sur l'axe des Y.
Il va me falloir comprendre ces histoires de rapporteur dont parle Simpleton pour voir si j'arrive à tirer de la fonction ce dont j'ai besoin (orienter les lances sur l'axe des y).
[edit] Après d'autres tests ingame, j'ai pu expérimenter ce qui se passe a priori avec les setangle:
SetAngle X contrôle le tangage: un SetAngle X positif fait piquer du nez le mesh alors qu'un négatif le fait remonter.
SetAngle Y contrôle le roulis: un SetAngle Y positif incline le mesh sur sa gauche alors qu'un négatif l'incline sur sa droite.
SetAngle Z contrôle le lacet: un SetAngle Z positif fait pivoter le mesh sur sa droite alors qu'un négatif le fait pivoter sur sa gauche.
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV
#22
Posté 02 mai 2009 - 17:09
Not Quite Dead, le 02.05.2009 à 16:31, dit :
elendell dit :
Mais c'est la même chose pour "SetAngle z". Quand tu utilises "SetAngle z", tu ne donnes pas une inclinaison vers la hauteur mais tu fais pivoter "autour" de l'axe z. Le point central de l'objet étant le point de pivot (où passe la ligne z).
Avec "SetAngle", tu dois considérer l'axe donné comme le pivot. Alors qu'avec "Move", le déplacement se fait le long de l'axe.
Avec les deux fonctions, les axes sont ceux de l'objet et nom du monde. Note : "GetAngle" retourne l'angle par rapport au monde car il ne peut pas retourner l'angle de l'objet par rapport à l'objet. Il serait toujours de 0.
EDIT :
Citation
#23
Posté 02 mai 2009 - 17:26
elendell, le 02.05.2009 à 18:08, dit :
Not Quite Dead, le 02.05.2009 à 16:31, dit :
elendell dit :
Mais c'est la même chose pour "SetAngle z". Quand tu utilises "SetAngle z", tu ne donnes pas une inclinaison vers la hauteur mais tu fais pivoter "autour" de l'axe z. Le point central de l'objet étant le point de pivot (où passe la ligne z).
Avec "SetAngle", tu dois considérer l'axe donné comme le pivot. Alors qu'avec "Move", le déplacement se fait le long de l'axe.
elendell, le 02.05.2009 à 18:08, dit :
Citation
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV
#24
Posté 02 mai 2009 - 23:14
En fait, tu n'as pas besoin de "SetAngle", et "SetAtStart" fonctionne très bien, si on considère qu'elle est destinée à replacer un objet à ses coordonnées d'origine (y compris les angles). Seulement, si elle redonne bien les angles donnés à l'objet, elle les redonne selon les angles du monde (comme les récupère "GetAngle").
Quand tu places un objet dans le Tescs, les plans changent car ils sont interdépendants. Par exemple : Tu poses une lance et ses angles sont de 0, 0, 0. Puis tu lui donnes une inclinaison en fixant l'angle x à 20. Si après ça tu donnes 260 à l'angle z, l'objet ne se positionnera pas à 260 de l'angle z du monde. Ceci car l'axe z n'est plus perpendiculaire au plan x0, y0 du monde.
Quand tu as incliné l'objet avec x 20, tu as incliné tout le plan. Donc l'axe z s'est incliné avec lui et le z 260 que tu as fait par la suite s'est fait sur ce nouveau plan incliné. A chaque fois que tu modifies un angle (dans le Tescs), tu modifies tout le plan. C'est pour cela que tu peux placer deux objets exactement au même endroit, en leur donnant pourtant des angles différents.
Par contre, quand tu fais "SetAtStart", il récupère les valeurs des angles prédéfinies ("GetAngle") et redonne chaque angle à l'objet par rapport à ses coordonnées locales mais selon le plan fixe du monde ! (Merci Bethesda pour cette différence )
Concrètement, ce script suffit pour ton bonheur :
Begin FoB_ThrownHurtingSpears Short Setup if ( MenuMode == 1 ) Return endif HurtCollidingActor 75 if ( Setup == 0 ) SetAtStart Set Setup to 1 elseif ( GetPos Z <= -1300) Set Setup to 0 Return endif Move Y 40 End FoB_ThrownHurtingSpears
Mais, pour placer chaque lance dans le Tescs, il faut traiter chaque angle un après l'autre. Par exemple : D'abord, tu lui donnes l'inclinaison souhaitée avec x, tu notes cet angle x et tu le remets à 0. Puis, avec tous les angles à 0, tu changes l'angle z pour l'orienter. Une fois qu'elle est bien orientée, tu lui redonnes l'angle x que tu avais noté.
Tu constates qu'elle n'a pas l'inclinaison que tu avais choisie quand z était à 0 mais cela n'a aucune importance (sauf que c'est un peu plus difficile pour visualiser le résultat) car le "SetAtStart" de la frame 0 va la placer dans la bonne position. Voili...
PS : J'ai testé avec une lance et non un activateur mais je ne vois pas pourquoi cela ferait une différence, sauf que je ne me suis pas préoccupé de "HurtCollidingActor".
#25
Posté 03 mai 2009 - 09:11
Je te suis très reconnaissant d'être parvenu à résoudre en deux coups de cuillère à pot ce problème sur lequel je m'arrachais les cheveux depuis une bonne semaine. Comme ma femme me reproche une légère tendance à la calvitie, je me permets de te remercier également de sa part.
J'ai ajouté un son d'arbalète et augmenté leur vitesse. Lorsque j'aurai terminé la cellule, je posterai sans doute une petite vidéo sur le thread du mod, histoire que vous voyiez le résultat.
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)