bewegt sich ein Objekt von Punkt zu Punkt in einem linearen Pfad

Ich versuche, verschieben Sie ein sprite über den Bildschirm in einer geraden Linie in Richtung auf die Stelle, wo habe ich Sie berührt den Bildschirm, was ich Tat, war auf der update() in jedem Schleifendurchlauf überprüft, um zu sehen, wenn das aktuelle sprite der Lage x y ==, um das Ziel x ,y . wenn es nicht sprite ist x++ und y++...
die Sache ist die ..it ain ' T bewegen sich in einer geraden Linie... da gibt es Fälle, in denen die x-oder die y-Koordinate erreicht das Ziel x oder y zuerst... wie ich es geändert, so dass beide x und y entspricht dem Ziel zusammen?

meine aktuellen pseudo-code für das sprite-Objekt

             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++;
auch mit bresenham oder irgendeinem anderen Algorithmus, ist es unvermeidbar, dass x oder y können Sie erreichen Ihr Ziel, bevor die anderen in einigen Fällen (angenommen, der Ziel-x ist das gleiche wie das original x?)
Bresenham ' s nicht funktioniert, für die vertikalen Linien. Das größte problem mit der OPs-Ansatz ist, dass er-Schritten x und y mit der gleichen rate.
Ich bin mir ziemlich sicher, dass es funktioniert, die Vollversion sowieso nicht die Hälfte ein, die Sie zeigte in Ihrer Antwort. Nicht gleich, obwohl, das gleiche gilt für den Gegner.y = Strom.y und jede andere Linie, wo der Letzte Schritt nicht diagonal. Mein Punkt ist, ich bin mir ziemlich sicher, dass die OP in Wirklichkeit nicht wollen, was er will.
Guter Punkt. Sie sind wahrscheinlich richtig. Seine schon eine Weile, da ich eigentlich Tat, diese Art der Sache.
hmm.. auch seine Art wie diejenigen, die rts-Spiele, wo der Benutzer klickt auf ein Ziel und eine Einheit geht es in einer geraden Linie, sondern minus die Wegfindung system..

InformationsquelleAutor Shizumaru18 | 2011-09-16

Schreibe einen Kommentar