draw_sprite mit variable statt Argument sprite

  • GM 8

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

  • draw_sprite mit variable statt Argument sprite

    Hey, ich habe ein kleines Problem.
    Ich habe 2 Sprites, die wie folgt heißen: "s_icorkwr" und "s_icorkwl"
    Dann habe ich noch ein Objekt welches "o_icorlw" heißt.

    Nun möchte ich, dass ich in der Funktion draw_sprite() das Sprite drawen möchte, so wie mein String heißt, welcher ich wie folgt herausbekomme:

    GML-Quellcode

    1. m_direction = point_direction(x,y,mouse_x,mouse_y)
    2. if mouse_x >= x { sprite = "s"+string_delete(string(global.waffe),1,1)+"l" }
    3. if mouse_x < x { sprite = "s"+string_delete(string(global.waffe),1,1)+"r" }
    4. draw_sprite_ext(sprite,-1,x,y,1,1,m_direction,-1,1)

    Das klappt auch super und die Variable sprite heißt dann letzt endlich auch "s_icorkwr" oder "s_icorkwl", je nach dem wie meine Maus ist. Allerdings wird nur das erst erstellte Sprite gemalt und nicht das, wo wie der String heißt.

    Ich hoffe ihr versteht was ich meine und kurz zusammengefasst:
    Ich habe eine Variable, die wie ein Sprite heißt, allerdings wird nicht das Sprite gezeichnet, wenn ich die Variable in draw_sprite einsetzte.

    MFG Dufner :D
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Einfach ist die Methode mit den asset_get_index
    Allerdings denke ich es wäre performanter sich eine eigene Liste nur mit Sprites anzulegen.
    Vorallem wenn man nicht nur Sprites hat und auch des öfteren nach deren ID sucht, da eben so nur die Sprites durchsucht werden.
    Ich bin kein Experte und kann mich auch irren, aber ich denke das diese Methode besser ist :)


    Also am besten ein Script anlegen welches alle Sprites in eine map packt.

    GML-Quellcode

    1. /// Lese_Sprites(ds_map)
    2. /* arg1 = ds_map, map in welche die Sprites hinterlegt werden
    3. (key=name, val=index)
    4. */
    5. { var no, i, ds_map, sf;
    6. ds_map = argument0;
    7. sf = surface_create(10,10);
    8. no = sprite_create_from_surface(sf, 0, 0, 1, 1, false, false, 0, 0);
    9. surface_free(sf);
    10. sprite_delete(no);
    11. for (i = 0; i < no; i += 1)
    12. { if (sprite_exists(i))
    13. { ds_map_add(ds_map,sprite_get_name(i),i);
    14. }
    15. }
    16. }
    Alles anzeigen


    Und dieses einmal ausführen zu Spielbeginn

    GML-Quellcode

    1. Sprites_Liste = ds_map_create();
    2. Lese_Sprites(Sprites_Liste);


    Und schon können die Sprites bequem per Namen aufgerufen werden.

    GML-Quellcode

    1. draw_sprite_ext(ds_map_find_value(Sprites_Liste, "spr_Ball_of_Steel"),-1,x,y,1,1,m_direction,-1,1)
  • Benutzer online 1

    1 Besucher