Halbtote Gegner

  • GM 8

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

  • Halbtote Gegner

    Hi

    Hab n Problem mit GML:

    Ich möchte, dass, wenn ein Schuss einen Gegner trifft, dieser zuerst beschädigt wird (change Sprite into "beschädigter Sprite) und beim 2ten mal zerstört wird (Destroy instance, self)

    Okay ich hab das so gemacht:

    :action_destroy: Den Schuss
    :action_begin:
    :action_code:

    GML-Quellcode

    1. {
    2. if halbtot = true
    3. instance_destroy = self
    4. instance_create = obj_blood
    5. }

    :action_else:
    :action_sprite: "beschädigter Gegner"
    :action_code:

    GML-Quellcode

    1. halbtot = true

    :action_end:

    und im Create Event des Gegners hab ich noch

    GML-Quellcode

    1. halbtot = false


    Jetzt wird aber der Gegner beim 2ten mal nicht gekillt (wahrscheinlich weil halbtot nicht true ist)
    aber wieso wird halbtot denn nicht auf true gesetzt???

    Gruss

    Goldendragon
    Schul-Abschlussarbeit: Gamesammlung

    Made with: Game Maker 8 Pro
    Fertigstellung: Frühling 2011


    Fortschritt:
    Games: 5/20 (voraussichtlich 20)
    Gameübersicht-Fortschritt: 0%
  • mach das nicht so kompliziert !! :D

    mach einfach bei dem spieler der zuerst halbtot sein soll und dann halt ganz tot ins step event:

    GML-Quellcode

    1. if leben < 51 sprite_index = halbtotsprite //kann sein das du global.leben brauchst, wenn das leben sonst wo eine bedeutung für dieses leben hier eine bedeutung hat... einfach ausprobieren
    2. if leben < 1 instance_destroy ()


    Für das brauchst du halt ein Lebensystem. Wenn du sowas noch nicht gemacht hast musst du ins create-event:

    GML-Quellcode

    1. (global.)leben = 100 // Wert kann geändert werden, und ob es nun global sein soll oder nicht ist deine Entscheidung^^


    und ins collision-event mit der kugel

    GML-Quellcode

    1. (global.)leben -= 50 //auch da kann das leben geändert werden, wenn du aber möchtest, das nach einem schuss das sprite halbtot sein soll und beim zweiten schuss es ganz tot ist, dann solltest du die hälfte abziehen ;)


    und um dein gml wissen zu erweitern (weil du das mit d&d event gemacht hast) sprite_index = das change sprite .... nur im code :D

    instance_destroy = self


    auch das kannst du dir ersparen, indem du einfach instance_destroy () schreibst. ;)

    achja... wenn du das mit deiner methode machen würdest, wäre das ziehmlich aufwendig wenn du mehrere "halbtot", also vierteltot und so sprites machen würdest...

    Spoiler anzeigen

    beispiel von meinem Spiel :P

    GML-Quellcode

    1. if global.burgleben < 1950 sprite_index = spr_eigBurg1
    2. if global.burgleben < 1500 sprite_index = spr_eigBurg2
    3. if global.burgleben < 1000 sprite_index = spr_eigBurg3
    4. if global.burgleben < 500 sprite_index = spr_eigBurg4
    5. if global.burgleben < 100 sprite_index = spr_eigBurg5
    6. if global.burgleben < 0
    7. {
    8. instance_destroy ()
    9. room_restart()
    10. }
    Alles anzeigen


    würd ich das machen wie bei dir müsst ich deutlich mehr machen ;)


    und um dir auch das else im d&d event zu ersparen kannst du einfach else bei dem code schreiben...
    Spoiler anzeigen

    GML-Quellcode

    1. bedingung //if ...
    2. {
    3. das was gemacht werden soll // bsp instance_create
    4. evtl was noch gemacht werden soll
    5. }
    6. else //wenn die if bedingung nicht (zb.) true ist
    7. {
    8. das was evtl zerstört werden soll?
    9. evtl noch etwas was dann noch passieren soll...
    10. }// wichtig ist das du die klammern so schreibst... alles was nur erfüllt werden soll wenn nur die bedingung so ist muss (meißtens) in klammern gepackt werden...


    Edit:
    Spoiler anzeigen


    Den Schuss


    GML-Quellcode

    1. {
    2. if halbtot = true
    3. instance_destroy = self
    4. instance_create = obj_blood
    5. }

    schreib lieber so:

    GML-Quellcode

    1. with obj_KUGEL
    2. {
    3. instance_destroy()
    4. }
    5. if halbtot = true
    6. {
    7. instance_destroy ()
    8. instance_create = obj_blood
    9. }



    hoffe ich konnte helfen :D
    (hab halt mehr geschrieben damit du es gleich so erfährst, und nicht irgendwann irgendwie drauf kommst ;) )
    mfg Salmi

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Salmi ()

  • Hi

    Das funktioniert alles ganz wunderbar danke!
    Jetzt hätte ich gerne noch, dass "if leben <1"
    "instance_destroy ()" UND "instance_create = obj_blood (x,y,obj_enemy_2)
    instance_destroy () geht ja schon jetzt möchte ich aber noch das obj_blood erstellt wird.
    Wie mache ich das Jetzt, dass das AUCH noch passiert?

    Gruss

    Goldendragon

    EDIT:

    Bin selbst auf die Lösung gekommen:

    Event: Destroy
    Action: (D&D) Create Instance : obj_blood, relative

    Gruss und danke

    Goldendragon
    Schul-Abschlussarbeit: Gamesammlung

    Made with: Game Maker 8 Pro
    Fertigstellung: Frühling 2011


    Fortschritt:
    Games: 5/20 (voraussichtlich 20)
    Gameübersicht-Fortschritt: 0%

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

  • okey ;)

    also das destroy event kannst du hierbei verwenden. das hast du ja auch gemacht...
    du kannst aber das selbe nur ohne zusätzliches event bei dem step event machen.

    Bei meinem Beispiel von meinem Spiel steht ja:
    if global.burgleben < 0
    {
    instance_destroy ()
    room_restart()
    }
    dass müsstest du dann halt so schreiben:

    GML-Quellcode

    1. if leben < 1
    2. {
    3. instance_destroy ()
    4. instance_create(x,y,obj_BLUT)
    5. }


    so kannst du es halt einfacher schreiben ;)
    mfg Salmi