Instanz-Werte aus DS_LIST filtern

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

  • Instanz-Werte aus DS_LIST filtern

    Ich hab eine DS_LISTE mit 4 Instanzen gefüllt, die innerhalb dieses collision_rectangle sind.

    GML-Quellcode

    1. objekt_list = collision_rectangle_multiple(x,y, x+224,y+224, o_objektl, false, true)
    2. objekt_0 = ds_list_find_value(objekt_list, 0);
    3. objekt_1 = ds_list_find_value(objekt_list, 1);
    4. objekt_2 = ds_list_find_value(objekt_list, 2);
    5. objekt_3 = ds_list_find_value(objekt_list, 3);


    Jeder dieser 4 Instanzen haben unterschiedliche direction (0, 90, 180 oder 270). Nur weiss ich nicht welches Objekte welche direction hat? Wie könnte man das herausfinden?
    Ich könnte jetzt eine das so angehen:

    GML-Quellcode

    1. if objekt_0.direction == 0 {
    2. objekt_0 = objekt_0;}
    3. else if objekt_0.direction == 90{
    4. objekt_90 = objekt_0;}
    5. else if objekt_0.direction == 180{
    6. objekt_180 = objekt_0;}
    7. else if objekt_0.direction == 270{
    8. objekt_270 = objekt_0;}
    9. //und so wieiter mit allen objekten in der ds_list

    ..aber das finde ich garnicht schön. Weiss jemand eine saubere Lösung?
    huhu

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

  • Hi,
    Du kannst ein Array nutzen: object_dir[object_0/90];
    Dir 0 wäre index 0
    Dir 90 wäre index 1 usw.
    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
  • Hab so gelöst (eigentlich simpel.. ^^ )

    GML-Quellcode

    1. ampel_list = collision_rectangle_multiple(x,y, x+224,y+224, o_ampel, false, true) //erfasse alle 4 Ampel im bereich
    2. for (i=0; i<ds_list_size(ampel_list); i+=1) //viermal durchlaufen
    3. {
    4. ampel[i] = ds_list_find_value(ampel_list, i); //die liste in einer Array übergeben
    5. if ampel[i].image_angle == 0 { //und alle nacheinander zuweisen
    6. ampel_00 = ampel[i];}
    7. else if ampel[i].image_angle == 90{
    8. ampel_90 = ampel[i];}
    9. else if ampel[i].image_angle == 180{
    10. ampel_180 = ampel[i];}
    11. else if ampel[i].image_angle == 270{
    12. ampel_270 = ampel[i];}
    13. };
    Alles anzeigen


    Jetzt habe ich die vier Ampel weiss wie sie stehen um mit ihnen weiterzuarbeiten :thumbup:
    huhu