Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Orientation d'un PNJ
Orientation d'un PNJ
Par Cassin le 11/10/2002 à 10:18:38 (#2315307)
Bref, j'ai ajouté dans mon script une fonction SetFacing afin de le tourner du bon côté, mais ça ne marche pas, le perso ne se tourne pas...
J'ai ça :void main()
{
ActionMoveToObject (GetObjectByTag ("WP_Gardien_Temple"));
AssignCommand(GetObjectByTag ("Garde_Temple"), SetFacing(DIRECTION_WEST));
}
Voyez-vous une erreur quelque part ? J'ai testé avec différentes direction, ça ne change rien, ainsi que par des valeurs numériques à la place de DIRECTION_XXX, ca ne fait rien non plus...
Pourtant la fonction SetFacing marche, je l'ai utilisée dans un autre script où elle fonctionne bien.
Je comprend pas tout là... :confus:
Par mobidique le 11/10/2002 à 10:51:58 (#2315473)
*Sa boussole déconne*quand la fonction marchait est-ce que tu faisais un facing vers un objet ? Si oui, plante un objet invisible et fait un facing vers celui là ... *je sais pas[/list=1]
Mob'.
Par eMRaistlin le 11/10/2002 à 10:59:28 (#2315502)
Je vais regarder, mais comme je te dis, si ton temple est a l'est, j'ai bien peur de revenir avec de bien mauvaise nouvelles...
Par Cassin le 11/10/2002 à 11:16:05 (#2315585)
eMRaistlin : en fait le mur est bien à l'est mais je veux tourner le perso vers l'ouest, mais de toutes façons, ça ne marche dans aucune des quatre directions...
Par mobidique le 11/10/2002 à 11:25:23 (#2315653)
Je suis pas trés clair alors je te donne un exemple .. J'avais un Pb d'araignée générée par un encounter, araignée qui devait rejoindre un WP lorsqu'un PJ passait sur un trigger. Le temps de trajet de la caverne de l'araignée au WP était supérieur à 6 sec, le cycle du onHeartBeat. Mais pas de bol les monstres générés pas encounter ont des anim par défaut et ces dernière prenaient le pas sur mon déplacement et l'araignée s'arrétait. Elle se déplaçait 6 secondes en direction du WP et elle s'arretait et reprenait son activité par défaut. La solution à consisté à faire un blueprint avec une arraignée au OnSpawn modifié de telle sorte qu'elle n'ait pas les anim en question et de faire un encounter qui fasse spawner cette arraignée.
Donc mon idée pour ton PB c'est que ton ordre de facing est bien passé mais se fait jeter à la trappe lorsque ton NPC arrive au WP pour cause d'un trajet supérieur à 6 sec ... C't'une idée comme ça hein ...
Par eMRaistlin le 11/10/2002 à 11:59:38 (#2315861)
eMRaistlin : en fait le mur est bien à l'est mais je veux tourner le perso vers l'ouest, mais de toutes façons, ça ne marche dans aucune des quatre directions...
J'ai pas eu encore le temps de chercher, mais dans ce cas, je m'y met, pasque je suis quasi-sur que tu pourra jamais utiliser cette fonction pour obtenir autre chose que Est, si ma memoire est bonne...
Je te tiens au courant...
[Edit]
Apres recherche, l'erreur existe bien, mais seulement sur des perso qui s'assient. Donc, normalement, ca veint d'ailleurs... (mulder, ou est-tu ?)
J'ai une autre question : tu fais un assign Command, mais si tu essayait avec ActionDoCommand ?
Par Jedaï le 11/10/2002 à 12:51:12 (#2316217)
Sinon j'ai déjà eu le même problème : ActionDoCommand marche.
[Edit]
En fait ton personnage a l'action MoveTo dans sa liste, parallèllement il se tourne vers l'ouest(SetFacing() n'étant pas une action s'éxécute immédiatement) mais n'ayant pas fini son mouvement il reprend celui-ci après un flottement et évidemment ne se retoune plus vers l'ouest une fois arrivé puisqu'il a déjà effectué cette "action" de son point de vue.
Par Cassin le 12/10/2002 à 11:18:47 (#2321426)
Merci !
Par Amaranthe le 12/10/2002 à 23:45:54 (#2325455)
Comment faire pour qu'un pnj se tourne vers un autre ?
Soit je lui met un SetFacing
mais dans ce cas je ne sait pas déterminer la direction...
Soit je lui met un SetFacingPoint
mais dans ce cas je ne sait pas déterminer le vecteur...
Je veux que l' objet A se tourne dans la direction de l'objet B.
Merci de votre aide.
Amaranthe.
Par Jedaï le 13/10/2002 à 1:11:12 (#2325761)
void main()
{
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
SetFacingPoint(GetPosition(oPC));
}
Plus généralement pour que l'objet A se tourne vers l'objet B, il faut donner à A l'ordre suivant :
SetFacingPoint(GetPosition(B));
JOL Archives 1.0.1
@ JOL / JeuxOnLine