Hallo,
ich beschäftige mich ein wenig mit der Multimedia-Bibliothek Allegro und versuche ein paar einfache Spieleeigenheiten nachzubilden. In diesem Fall will ich das automatische Zielen auf ein Objekt programmieren. Siehe dazu folgende Grafik:
Das schwarze Objekt soll dabei automatisch auf das rote Objekt zielen sobald sich das rote Objekt in Reichweite befindet.
Ich habe die Mathematik dahinter so gelöst, dass ich mir ein Dreieck vorstelle und jedem Punkt im Programm Koordinaten zuteile (jedes Objekt hat ja schließlich bereits eine Koordinatenzuteilung, da es ja an einer bestimmten Position (x|y) abgebilet ist).
Über den Satz von Pythagoras komme ich zu c. Über den Sinus von Beta (=der Winkel bei "B") und den Arcussinus daraus komme ich zum Winkel Beta.
Allegro hat, aus welchem Grund auch immer, die Angewohnheit, die Winkel mit dem Urzeigersinn zu setzen, wobei bei der positiven x-Achse begonnen wird zu zählen, d.h z.B. ein Winkel von 45 Grad ist nicht im 1. sondern im 4. Quadranten.
Jetzt muss ich natürlich immer überprüfen in welchem Quadranten sich das rote Objekt befindet und dementsprechend den Winkel mal -1 multiplizieren (1. Quadrant), 180 dazuzählen (2.Quadrant), von 180 subtrahieren (3. Quadrant), oder den Winkel selbst ausgeben (4. Quadrant).
Frage: Kann man die Mathematik und die Programmierung dahinter irgendwie eleganter lösen?
Markus.