2009-05-19 6 views
0

J'ai un vecteur de vitesse qui est V (233, 188).Aide pour les vecteurs de vitesse

Un objet se déplace vers le côté inférieur droit de l'écran en 300 pixels par seconde lorsque l'origine est V (0, 0). Lorsque la position de l'objet est, par exemple, (592, 334), je règle le vecteur de vitesse sur V (294, 55) mais l'objet ne commence pas à se déplacer dans cette direction ... Il ne cesse de déplacer le vecteur de vitesse vers V (294, 552) même direction, mais il semble que cela fait une petite courbe de 10 degrés ...

ce que je fais est:

objectLocation += velocity * elapsedTime; 

Qu'est-ce que je fais mal?

+0

Vérifiez que l'emplacement de l'objet a changé (et que, par exemple, 'velocity * elapsedTime' n'est pas insignifiant). En outre, vous devrez peut-être faire quelque chose pour forcer une re-peinture de l'objet après que son emplacement change. – ChrisW

+0

non non, ce qui se passe est que l'emplacement où l'objet commence à se déplacer n'est pas celui que j'ai défini, par exemple, en utilisant les valeurs fournies, il semble que les objets font une petite courbe de 10 degrés vers la droite ... ajouter cette info, désolé ... – Paulo

+0

Dans ce cas, c'est peut-être une "erreur d'arrondi" causée par l'utilisation d'entiers au lieu de virgule flottante ... savez-vous ce que je veux dire? Vous avez trois choses, c'est-à-dire 'objectLocation', 'velocity', et 'elapsedTime' ... sont-ce tous les entiers, ou virgule flottante, ou quoi? Et quel langage de programmation utilisez-vous? – ChrisW

Répondre

1

La différence entre (233,188) et (294,55) n'est pas grand chose, dans le grand schéma des choses. Pour vérifier que votre code fonctionne, essayez un vecteur tel que (200, -200). Cela l'amènera à rebondir sur le point dans la direction y.

Si ce code fonctionne, alors seules vos valeurs ne fonctionnent pas.