Schutzschield für eine Einheit

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

  • Schutzschield für eine Einheit

    Hallo Leute

    Ich wusste nicht direkt wie ich den Titel nennen sollte. Darum lasst mich kurz erklären worauf ich hinaus möchte. Ich wollte einer meinen NPC einheiten ein Schutzschield geben. Das Ihn umgibt. Natürlich sollte dieses Schild eine gwissen Aufladung haben und nach einigen schüssen deaktiviert werden. Und sich nach einiger zeit wieder aufladen. Nun das probleme ist das ich denke ich nicht via Draw zeichnen kann da es dann keine Collisions abfrage geben wird. Darum ist mein jetztiger gedanke, dies via ein objekt zu lösen wobei ich durch meiner letzden frage gemerkt habe das objekt auf andere objekte zu proezieren nicht ganz richtig ist. :headtouch:

    Hoffe mir kann da jemand ein gedanken anstoss geben. :vogel:
    MAKE MY WORLD WITH GAME MAKER :gmlove:
  • create

    GML-Quellcode

    1. schildsize = 1000
    2. schildleben = 10


    step

    GML-Quellcode

    1. i = instance_nearest(x,y,obj_bullet)
    2. if distance_to_point(i.x,i.y) <= schildsize && schildleben > 0
    3. {
    4. with(i){instance_destroy()}
    5. schildleben -= 1
    6. }


    draw

    GML-Quellcode

    1. if schildleben > 0
    2. {
    3. draw_sprite(x,y,spr_schild)
    4. }


    hoffe du kannst was mit anfangen
    Wenn Frodo ein Hobbit ist,sind 8 Frodos dann ein Hobbyte? ?(
  • Gibt im grunde zwei Möglichlichkeiten:

    Entweder du zeichnest nur das Sprite für den Schutzschild über dem NPC und nutzt weiterhin die normale Collisionsabfrage.
    Wenn der NPC getroffen wird fragst du erst ab ob der Schutzschild noch health hat, wenn ja ziehst du vom Schutzschild hp ab, ansonsten vom npc. Dabei könntest du die Transparenz vom Schutzschild von seinem zustand abhängig machen.

    Falls es dir wichtig ist, dass die bullets optisch nicht durch den Schutzschild gehen, dann kannst du vom NPC mittels collision_circle() oder collision_rectangle() eine Collisionabfrage ohne extra Objekt durchführen.

    Ansonsten geht natürlich auch das extra Objekt. Weiß nicht mal ob die Kollisionsabfrage des Objekts mittels mask nicht effizienter ist, als die collision-funktionen. Hab da mal was gelesen, dass sie nicht so effizient sein sollen.
  • Wenn es sich um ein simples, rundes Schild handelt reicht im Prinzip

    Quellcode

    1. if (distance_to_object(instance_nearest(player.x, player.y, bullet)) < shield_radius) { }

    auch.
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)