Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Vecteur & location
Vecteur location
Par Azrael07 le 19/10/2002 à 22:39:31 (#2366006)
j'ai un vecteur , une orientation de type float, et une area, dont je suis certain de la validité.
puis g ces lignes de code :
location lNewLocation = Location(oNewArea, vNewPosition, fOrientation);
AssignCommand(oCreature, ActionJumpToLocation(lNewLocation));
mais la créature ne bouge pas, je suppose que c la location ki est mal initialisée, pourtant g fait un test avec un vecteur venant directement d'un GetPosition sur un waypoint.
si quelqu'un a deja manipulé les vecteur et peut me venir en aide ca serais cool
Merci merci ^_^
Par miriandel le 20/10/2002 à 0:58:28 (#2366601)
Comment l'as-tu obtenu, et quelle opération éventuelle fais-tu dessus ?
Si tu veux faire un jump sur un objet connu, tu n'as pas besoin de vecteurs, utilise simplement lNewLocation = GetLocation(objet_de_reference);
Les vecteurs ne servent qu'à opérer des déplacements relatifs à quelque chose, auquel cas tu pourrais avoir:
vNewPosition = vOldPosition + (10 * AngleToVector(fOrientation)); pour obtenir un point éloigné d'un tile dans le sens fOrientation.
Faudrait voir un peu plus de ton code :)
Par Tyn' le 20/10/2002 à 1:03:03 (#2366629)
vector vVector = Vector(0.0f,0.0f,0.0f);
Par Azrael07 le 20/10/2002 à 8:57:08 (#2367464)
Bon ok je donne mon code.
c'est a mettre sur un trigger qui sert de changement de map
on sort d'une area en un point, on arrive sur l'area de l'autre coté en un meme point. Cela sert a produire une jonction totale des 2 areas
void DoActionChangeArea(object oCreature, object oNewArea)
{
//On recuere la position et l'orientation de la creature qui change d'area
vector vPlayerPosition = GetPosition(oCreature);
float fOrientation = GetFacing(oCreature);
//On deduit, a partir de son orientation de quel cote elle va se deplacer
vector vNewPosition;
if (fOrientation 315.0f)
{
//Les locals float donnent la taille totale de l'area consernee(bon y'a peut etre deja une fonction qui fais ca je sais pas)
//Donc en gros on deduit les coordonnes de la nouvelle position, de l'autre cote dans l'autre area
vNewPosition.x = GetLocalFloat(oNewArea, "SizeX") - 1.000;
vNewPosition.y = vPlayerPosition.y;
vNewPosition.z = vPlayerPosition.z;
}
else if (fOrientation 45.0f)
{
vNewPosition.x = vPlayerPosition.x;
vNewPosition.y = GetLocalFloat(oNewArea, "SizeY") - 1.000;
vNewPosition.z = vPlayerPosition.z;
}
else if (fOrientation 135.0f)
{
vNewPosition.x = 1.000;
vNewPosition.y = vPlayerPosition.y;
vNewPosition.z = vPlayerPosition.z;
}
else if (fOrientation 225.0f)
{
vNewPosition.x = vPlayerPosition.x;
vNewPosition.y = 1.000;
vNewPosition.z = vPlayerPosition.z;
}
//on met tout ca dans une location
location lNewLocation = Location(oNewArea, vNewPosition, fOrientation);
//et on le jump
AssignCommand(oCreature, ActionJumpToLocation(lNewLocation));
}
void main()
{
//On prend les references indispensables
object oCreature = GetEnteringObject();
//Comme ce script va s'appliquer a une quasi totalite de mon module, je ne vais pas le modifier
//pour chaques areatransition, donc tout les localsobject serons initialises dans le OnModuleLoad
object oTargetArea = GetLocalObject(OBJECT_SELF, "TargetingArea");
//On appelle la fonction
DoActionChangeArea( oCreature, GetObjectByTag("Map1"));
}
voila voila, la je vois pas comment mon vecteur peut ne pas etre valide (g vérifié c pas mes variables SizeX et SizeY, donc de la......
Je sais pas trop
Par mobidique le 20/10/2002 à 10:04:34 (#2367577)
Par Azrael07 le 20/10/2002 à 10:17:26 (#2367616)
Merci de m'y faire penser ^_^
Par Amaranthe le 20/10/2002 à 11:10:41 (#2367763)
Je te laisse trouver toi même le lien... mais si tu as un problême je dois avoir le script.
JOL Archives 1.0.1
@ JOL / JeuxOnLine