Ermittlung der Koordinaten der nächstgelegenen Instanz

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ermittlung der Koordinaten der nächstgelegenen Instanz

    Hi zusammen,

    mein Problem klingt erst mal einfach, aber ich habe nirgends einen Weg gefunden, um es zu lösen.
    Ich suche einen Weg, die dem Spieler nächstgelegene Instanz zu ermitteln, unter den Bedingungen, dass ich weder die Anzahl der vorhandenen Instanzen und Objekte, noch deren Bezeichnungen im Vorhinein kenne.

    Also, Grundlage ist ein Shooter. Eine der Waffen die man verwenden kann ist ein Geschütz. Das Geschütz soll automatisch auf den nächstgelegenen Gegner zielen und feuern, sobald man die entsprechende Taste drückt. Ich habe einen Algorithmus, der mir die Koordinaten eines Objekts relativ zum Ursprungsschiff ermittelt, und daraus dann einen Winkel für den "direction"-Wert errechnet. Das funktioniert auch hervorragend, wenn es sich um ein Feindschiff handelt, das auf den Spieler schießt (von dessen Schiff natürlich nur eine Instanz existiert). Aber ich habe keine Ahnung, wie ich festlege, auf welches Objekt das Geschütz feuern muss, wenn es mehr als nur ein potentielles Ziel gibt.

    Grundsätzlich ist es so, zu jeder Zeit habe ich eine variierende Zahl Objekte im Raum (Feinde und Hintergrundzeug). Ich weiß nicht, wieviele anvisierbare Objekte zum Zeitpunkt des Feuerns im Raum sein werden (wenn keine da sind feuert es einfach nicht), und ich weiß auch nicht, welche Objekte das sein werden, da beides ständig variiert.

    Ich weiß, dass ich mit "distance_to_object(obj)" zwar die Distanz zu einer Instanz bestimmen kann. Allerdings muss ich der Funktion ein konkretes Objekt vorgeben. Dummerweise weiß ich aber nicht, welches Objekt bzw. Instanz im Moment des Feuerns am nächsten sein wird. Außerdem kann man davon ausgehen, dass die meiste Zeit über mehr als eine Instanz des selben Objekts/Gegners im Raum sein wird. Also brauche ich quasi eine Methode, die mir die nächstgelegene Instanz zurückliefert, die als Gegner/anvisierbar markiert ist (z.B. durch eine Variable var_is_enemy={true;false}). Genauer gesagt, die Koordinaten dieser Instanz, die ich dann in meine Koordinaten-zu-Winkel-Funktion einsetzen würde.

    Kennt irgendjemand einen Weg, das umzusetzen? Ich wäre echt dankbar dafür.

    ~Raen out...
    "Also ICH würde das so machen. Darum ist es anders." - persönliches Zitat
  • Dafür gibt es die instance_nearest() Funktion.
    Du solltest aber, den darauf basierten Code noch mit einer Abfrage absichern, ob überhaupt ein Objekt von dieser Sorte existiert, sonst kann es leicht zu Fehlern führen, weil instance_nearest() noone zurück gibt und du logischerweise mit noone nicht arbeiten kannst.
  • Danke für die schnelle Antwort. Ich bin diese Wiki-Seite auf der ich geschaut habe mehrmals durch und habe die Funktion nicht gesehen. Nun fällt sie mir sofort ins Auge. Typisch.

    Gut, da ich nicht weiß, von welchem Elternobjekt die Instanzen sein werden, muss ich hinten wohl "all" reinschreiben. Ist noch die Frage, wie ich dann prüfe, obs ein Gegner ist, nicht dass er anfängt auf die Asteroiden im Hintergrund zu ballern.
    Ich denke, das krieg ich hin.

    [EDIT] Ok, "all" funzt nicht, weil er sich da immer selber findet, aber ich habs hinbekommen. Problem gelöst.[/EDIT]

    Nochmals danke =^,.,^=
    ~Raen out...
    "Also ICH würde das so machen. Darum ist es anders." - persönliches Zitat

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Irolan ()

  • Und so kann man die Koordinaten finden:

    fund = instance_nearest(obj_gegner)
    und dann kriegt man mit
    fund.x
    und
    fund.y
    die koordinaten.
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D