Das nächste Objekt von unterschiedlichen Instanzen herausfinden

  • GM 8

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

  • Das nächste Objekt von unterschiedlichen Instanzen herausfinden

    Hallo Community,

    wie bekannt findet man mit instance_nearest(x,y,obj) das nächste Objekt von einer Instanz heraus. Gibt es eine Möglichkeit das nächste Objekt herauszufinden, wenn es mehere von der gleichen und anderen Instanzen sind ohne solch eine lange Tabelle schreiben zu müssen:

    Objekt1 < Objekt2 = Objekt1
    Objekt1 < Objekt3 = Objekt1
    Objekt2 < Objekt1 = Objekt2
    Objekt2 < Objekt3 = Objekt2
    Objekt3 < Objekt1 = Objekt3
    Objekt3 < Objekt2 = Objekt3
    ...

    MFG Dufner
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • so wie es in der Tabelle ist:

    GML-Quellcode

    1. anzahl = 3 //anzahl der Objecte die du aufgelistet hast
    2. wert[0] = Object1
    3. wert[1] = Object2
    4. wert[2] = Object3
    5. obj = wert[0]
    6. for (i = 0; i < anzahl-2; i += 1)
    7. {
    8. if distance_to_object(obj)<distance_to_object(wert[i+1])
    9. obj = wert[i]
    10. }
    11. //obj hat den wert des nächsten object
    Alles anzeigen
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • husi012 schrieb:

    so wie es in der Tabelle ist:

    GML-Quellcode

    1. anzahl = 3 //anzahl der Objecte die du aufgelistet hast
    2. wert[0] = Object1
    3. wert[1] = Object2
    4. wert[2] = Object3
    5. obj = wert[0]
    6. for (i = 0; i < anzahl-2; i += 1)
    7. {
    8. if distance_to_object(obj)<distance_to_object(wert[i+1])
    9. obj = wert[i]
    10. }
    11. //obj hat den wert des nächsten object
    Alles anzeigen



    Funktioniert leider nicht, weiss aber auch nicht warum.
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • GML-Quellcode

    1. // in diesen array listest du alle objekt referenzen
    2. // auf die in der suche mit einbezogen werden sollen
    3. //(also einfach die objekt namen eintippen (nicht instanz referenzen!))
    4. myArray[0] = obj_boesesMonster;
    5. myArray[1] = obj_fiesesMonster;
    6. myArray[2] = obj_monsterMonster;
    7. ...
    8. myArray[8] = obj_muelltonne;

    GML-Quellcode

    1. // scr_findNearest(array)
    2. var myXCenter = (bbox_left + bbox_right) / 2;
    3. var myYCenter = (bbox_top + bbox_bottom) / 2;
    4. var objCurrent;
    5. var currentDistance = -1;
    6. for (var i = 0; i < array_get_length(argument0); i++)
    7. {
    8. with (argument0[i])
    9. {
    10. var otherXCenter = (bbox_left + bbox_right) / 2;
    11. var otherYCenter = (bbox_top + bbox_bottom) / 2;
    12. var distance = point_distance(myXCenter, myYCenter, otherXCenter, otherYCenter);
    13. if (currentDistance == -1 || currentDistance > distance)
    14. {
    15. objCurrent = id;
    16. currentDistance = distance;
    17. }
    18. }
    19. }
    20. return objCurrent;
    Alles anzeigen

    GML-Quellcode

    1. var nearestInstance = scr_findNearest(myArray);


    Sollte klappen,
    sofern ich richtig mitbekommen hab kann man jetzt arrays an skripte übergeben

    falls nicht musst du halt den array irgendwo in ein controller objekt definieren und darauf zugreifen
    oder du machst das über eine ds_list
    :saint:

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