2012-07-20 2 views
1

J'essaie de déplacer un Sprite le long d'une trajectoire rectiligne. Je veux déplacer 5 pixels sur la pente, ou l'hypoténuse chaque fois que je passe par la méthode jusqu'à ce que j'atteigne le point final.Déplacer un objet le long d'une ligne droite

J'ai la pente et l'ordonnée à l'origine de la ligne, j'ai aussi les valeurs actuelles X et Y de l'image-objet par getX() et getY(). Les points X et Y finaux à arrêter sont les variables finalX et finalY.

J'ai essayé tellement d'équations mais je n'arrive pas à en faire fonctionner certaines. Qu'est-ce que je rate!!?

Hopefully this image makes sense for what I am trying to do!

Ma dernière équation cherchait à utiliser y = mx + b.

float X = (getY() + 5 - interceptY)/slope; 
float Y = slope*(getX() + 5) + interceptY; 
setPosition(X, Y); 
+1

Pouvez-vous poster votre dernière tentative? – Keppil

Répondre

4

peut vous aider avec quelques équations de mon jeu récent, le code déplace un objet donné sa rotation:

float xDirection = FloatMath.sin((float) Math.toRadians(getRotation())) 
      * currentSpeed; 
float yDirection = FloatMath.cos((float) Math.toRadians(getRotation())) 
      * -currentSpeed; 

float newX = getX() + xDirection; 
float newY = getY() + yDirection; 

Vous avez juste besoin de tirer l'angle dans lequel vous avez besoin de votre sprite pour se déplacer et cela fera pour vous. J'espère que cela t'aides.

+0

Merci beaucoup pour ça! =) travaillé purrrfectly une fois que j'ai compris la rotation correctement! J'ai utilisé ceci pour définir la rotation de mon sprite, qui s'est branché directement dans votre code! 'setRotation ((float) Math.toDegrees (Math.atan2 (finalY - getY(), finalX - getX())) +90);' Par hasard utilisez-vous AndEngine? =) – Gatekeeper

+0

@Gatekeeper, De rien, je suis content de pouvoir aider! Oui, j'utilise AndEngine. – Egor

Questions connexes