draw und collision

  • GM 8

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

  • draw und collision

    hallo!

    ich habe das problem das ich sobald ich ein draw event einfüge die collision des objektes nichtmehr wie gewollt funktioniert.
    sobald ich mit dem draw event ein größeres objekt auf ein kleineres zeichne, funktioniert die collision mit dem größeren nicht mehr.
    die schüsse gehen durch das größere objekt und lösen eine collision mit dem kleineren aus.

    GML-Quellcode

    1. draw_sprite_ext(s_player_shield,-1,player_ship.x,player_ship.y,1,1,direction,c_white,1);


    mit dem draw befehl lege ich mein schutzschild auf mein raumschiff. da die sprite von meinem schutzschild um einiges größer ist, müsste ja auch die collisions maske von meinem schild größer sein als die von meinem schiff. ohne draw event kann man das schutzschild problemlos treffen. aber sobald ich ein draw event einfüge und sich das schild auf meinem raumschiff befindet halt nichtmehr.

    //extrem selten kommt es vor das das schild doch getroffen wird. ich kann jedoch nicht sagen wieso..

    für ein wenig hilfe wäre ich dankbar, irgendiwe kriege ich es nicht gebacken... vlt habt ihr ein paar ideen woran das liegen könnte. :)

    mfg midrael
  • Jop, das liegt daran, dass du es nur drawst aber das Sprite deines Schiffes immernoch nur das Schiffssprite ist. Mit dem drawen ersparst du dir aber ein eigenes Objekt mit eben zB diesem Schild anlegen zu müssen.
    Spoiler anzeigen
    Du solltest daher eine variable schild haben, die 1 ist wenn das Schiff vom Schild umgeben ist und dann eine abfrage einbauen die die Kugel entweder ganz normal mit dem Schiff kollidieren lässt oder bei 1 zB einen collision_circle abcheckt um zu sehen ob es mit dem Schild kollidiert.

    Du kannst auch und das ist vielleicht besser, die collision mask von deinem Schiff auf das Sprite deines Schildes ändern wenn Schild 1 ist.

    GML-Quellcode

    1. if schild == 0
    2. {
    3. mask_index = spr_schiff;
    4. }
    5. if schild == 1
    6. {
    7. mask_index = spr_schild;
    8. draw_sprite_ext(s_player_shield,-1,player_ship.x,player_ship.y,1,1,direction,c_white,1);
    9. }

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Benutzer online 1

    1 Besucher