le déplacement d'un objet à partir du point-à-point dans une trajectoire linéaire

Je suis en train de déplacer un sprite sur l'écran dans une ligne droite, vers l'endroit où j'ai touché l'écran, ce que j'ai fait lors de la mise à jour() à chaque tour de boucle , il vérifie pour voir si le sprite courant de l'emplacement x y == pour la destination x ,y). si elle n'a pas du sprite x++ et y++...
le truc, c'est ..c'est pas d'avancer en ligne droite... comme il y a des cas où le x ou y à coordonner atteint la destination x ou y d'abord... comment puis je l'ai changé de sorte que les deux x et y répond à la destination ensemble?

mon pseudo-code pour l'objet sprite

             destX = destination X
             destY = destination Y

             posX = current X
             posY = current Y
               public void update(){
                if(destX > posX && destY < posY)
                {

                    posX++;
                    posY--;
                }
                else if (destX > posX && destY > posY){
                    posX++;
                    posY++;
                }
                else if(destX < posX && destY > posY)
                {
                    posX--;
                    posY++;
                }
                else if(destX < posX && destY < posY){
                    posX--;
                    posY--;
                }
                else if(destX < posX)
                    posX--;
                else if(destX > posX)
                    posX++;
                else if(destY < posY)
                    posY--;
                else if(destY > posY)
                    posY++;
  • même avec bresenham ou tout autre algorithme, il est inévitable que x ou y pour atteindre leur cible avant que les autres dans certains cas (à supposer que la cible de x est le même que l'original x?)
  • Bresenham n'a pas de travail pour les lignes verticales. Le principal problème avec l'OPs approche est qu'il incrémente x et y à la même vitesse.
  • Je suis sûr que c'est le cas, la version complète de toute façon pas la moitié d'un, vous avez démontré dans votre réponse. N'a pas d'importance si, la situation est la même pour la cible.y = courant.y et de toute autre ligne de où la dernière étape n'est pas diagonale. Mon point est, je suis sûr que l'OP n'est pas réellement le vouloir ce qu'il dit qu'il veut.
  • Bon point. Vous avez probablement raison. Son été un moment depuis que j'ai fait ce genre de chose.
  • hmm.. bien son un peu comme ces jeux rts où le droit de l'utilisateur clique sur une destination et une unité d'y va en ligne droite, mais moins le cheminement de système..
  • si vous voulez que la ligne à être aussi droite que possible, et d'éviter la "diagonale de la partie et la partie droite", droite? Bresenham doit être fine.

InformationsquelleAutor Shizumaru18 | 2011-09-16