"Höchste" Instanz festellen

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

  • "Höchste" Instanz festellen

    Guten "Abend" :)

    Ich brüchte mal wieder einen Denkanstoß / Hilfe. Und zwar fliegen in meinem Spiel Blöcke von oben nach unten. Es gibt 7 verschiedene Blöcke, die alle zusammen auch 1 Parent Block haben.

    Nun möchte ich festellen welcher Block der "Höchste" ist. Also den niedrigsten y Wert / Koordinate hat.

    Wie könnte man das lösen / Anpacken?

    Danke im Vorraus!
  • alle Instanzen deines Objekts in ein Array pushen und mittels Schleife den höchsten Y-Wert ermitteln:

    GML-Quellcode

    1. var blocks, i, tempY, tempId;
    2. tempY = 0; //oder besser room_height
    3. blocks[0] = block1;
    4. blocks[1] = block2;
    5. //[..]
    6. for(i = 0; i < sizeof(blocks); i++){
    7. // niedrigsten Y Wert ermitteln
    8. if(blocks[i].y < temp){
    9. tempY = blocks[i].y;
    10. tempId = blocks[i]; //not sure if returns ID
    11. }
    12. }
    13. //am Ende bleibt der niedrigste Y Wert in tempY übrig. Die Instanzreferenz liegt in tempId.
    Alles anzeigen


    nicht sicher, ob der Code so lauffähig ist.
  • Müsste auch gehen ohne sich vorher alle in einem Array merken zu müssen:

    GML-Quellcode

    1. // Variablen mit var deklarieren, damit sie keine Variablen der Instanz sondern des Scripts sind und dadurch innerhalb des with ohne "other" funktionieren
    2. var highestInstance = noone;
    3. var highestY = 0;
    4. with(obj_parent){ // dieser Teil wird auf allen obj_parent und davon abgeleiteten Instanzen ausgeführt
    5. if (y < highestY || highestInstance == noone) { // beim ersten Objekt keinen y-Vergleich machen
    6. highestY = y;
    7. highestInstance = id;
    8. }
    9. }
    10. if (highestInstance != noone) { // nur wenn was gefunden wurde
    11. // mach was damit
    12. }
    Alles anzeigen
    Einige meiner Spiele: