2010-12-14 36 views
0

J'essaie de renvoyer un point d'une méthode qui calcule l'angle en tant que vecteur.Essayer de déplacer par point.x/.y moins de 1

J'ajoute ensuite ces points x & y à mon objet joueur (à partir de l'exemple de code) Les nombres x et y - ce sont des nombres, pas un point. Dans d'autres endroits, je vois des nombres définis comme flottants, donc je ne m'attendais pas à ce que ce soit un problème. Lorsque je multiplie distvar et distvar2 par * 2, alors mon objet se déplace, mieux je peux dire car les valeurs, précédemment .59 ~ & -.8 ~, sont supérieures à 1 (valeur absolue).

Des indices? Devrais-je simplement utiliser une variable Point sur mon objet joueur à la place? Y a-t-il autre chose que je dois faire pour convertir un point.x/y en un nombre? Nouveau pour flasher, appréciez votre aide.

Merci!

public function GetAngle(initialp:Point,secondp:Point):Point{ 
    distvar = ((initialp.x - secondp.x) * (initialp.x - secondp.x)); 
    distvar2 = ((initialp.y - secondp.y) * (initialp.y - secondp.y)); 

//Emergency guard clause against dividing by 0 
    if (distvar + distvar2 == 0){ 
     distvar = 1; 
     distvar2 = 1; 
    } 
    veldistance = Math.sqrt((distvar+distvar2)); 

distvar = ((Math.abs(initialp.x-secondp.x))/veldistance); 
distvar2 = ((Math.abs(initialp.y-secondp.y))/veldistance); 

if (secondp.x < initialp.x){ 
    distvar = -distvar; 
} 
if (secondp.y < initialp.y){ 
    distvar2 = -distvar2; 
} 

apoint.x = distvar; 
apoint.y = distvar2; 

return apoint; 
+0

'var veldistance: Number = Math.sqrt (distvar + distvar2);' et 'return new Point (distvar, distvar2);' pourrait aider – www0z0k

+0

Merci, je réglais auparavant veldistance en tant que variable d'instance au lieu de locale à cela méthode. Je me demandais comment faire cela, merci. – quantumpotato

Répondre

2

Les valeurs d'un point.x/y sont des nombres. La façon dont vous ajoutez le point.x/y à votre objet.x/y devrait être bonne. Je pense qu'il y a quelque chose d'autre qui ne va pas avec le code, mais sans plus de code, je ne sais pas quoi. Pour un, je ne peux pas voir où apoint est créé.

+0

Je initialise un point lorsque la classe se charge: \t \t private var point: Point = new Point(); – quantumpotato

Questions connexes