1943 Battle for Midway Remake - Gegner stärker machen

  • GM 7
  • 1943 Battle for Midway Remake - Gegner stärker machen

    Hallo ich habe mir den GameMaker 7 gekauft, da ich ein Remake des guten alten 1943 Battle for Midway machen möchte. Ich habe mir jetzt schon mühsam Texturen gemalt Gegner und Levels erstellt. Nun habe ich nur zwei Probleme und hoffe Ihr könnt mir dabei helfen.



    Zum einen möchte ich Gegner einbauen, die nicht nach einem schuss kaputt gehen - ich habe schon mit der SUfu gesucht aber nichts gefunden. Bitte erklärt mir doch wie ich Gegner stärker machen kann.



    Eine andere sache ist, ich möchte dass die Gegner umdrehen und Loopings fliegen, wie bindet man so etwas ein?



    Ach menno jetzt hat alles so schön geklappt aber diese beiden Sachen klappen einfach nicht. Bitte helft mir mal.



    Anbei mal Screenshots von dem was ich bis jetzt so geschafft habe...





    imgu.de/img_40140_nqo



    imgu.de/img_40141_nzs



    imgu.de/img_40142_fom





    Vielen lieben Dank im voraus :)
  • na du kannsd den gegnern ja ne variable geben, die zB den wert 1 hat,

    also anch einem treffer kaüputt sind, kannsd der variabel aber auch den wert 100 geben also nach 100 treffern erst kaputt...

    da gibts nun eine sache zum aufpassen: der collisions event

    ( so machst du das oder?, mti co9llision event) frägt jeden step ab, also mussd entweder die "lebenspunkte" drastisch erhöhen, da in jedem step abgezogen wird, oder eine "sperre" einbaun dass jeder treffer nu für einen step gilt.



    loopings sin wohl nur visueller effekt ?, dafür könntest du n animiertes sprite nehmen.

    waann sollen sie loopings fliegen? wenn dein flugzeug an ihnen vorbhei is?

    dann einfach if gegner.y>du.y mache_looping ....
  • genaus so würde ich es auch machen, wie nti0ogen blau es gesagt hat.

    Bei den Looping must du nur noch dran denken, sobal der Looping begint muss die geschwindigkeit gesenkt werden. glaub das müste die variable vspeed sein.
    Quasi wenn die aktion looping läuft

    GML-Quellcode

    1. if looping=1 then
    2. {
    3. if vspeed>-1 then vspeed-=0.1 //glaub minus wert dann bewegt sich ein objekt nach oben und plus nach unten. Sagt aus sollang das Fluzeug sich schneller als 1 in die umgkehrte richtung bewegt soll es so lange //immer lansamer werden bis es schon anfängt rückwärts zu fliegen bis es schlielich -1 rückwärts fliegt.
    4. }

    Unterteil die animation am besten in 2 teil. Wenn das flugzeug im steigflug ist hat es ja einen vspeed wert von 0 da es ja spieleirsch gesehen nach oben zu dir fleigt.
    So und wenn dann der wert auf 0 ist. startest du nie 2 animation die das flugzeug dann kommplet umdreht
    Ungefähr so. ist jetzt die seiten ansicht von deinem SPiel wo die Fluzeuge von oben kommen. Daher nicht wundern das da vspeed steht.

    hoffe konnte helfen
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Hallo mal vielen Dank für die Antworten, wie geht das mit Sperren einbauen und. Ich habe eine Variable ausprobiert, die hat aber nicht funktioniert.



    Wenn ich bei dem Gegner mit der Health bar arbeiter zieht es mir bei Beschuss aber selber die Energie ab, und der Gegner ist unzersörbar... bitte helft mir



    Ich stecke jetzt fest :(



    und noch eine Sache die nicht klappt. Ich habe ein PowerUp erstellt, wenn ich es aufsammle wird meine Energie wieder auf 100 geseztz - ok das klappt. Wenn ich aber möchte, dass sich die Waffe die abgefeuert wird ändert geht es nur zu genau dem Zeitpunkt wenn ich das Powerup aufsammle. Sprich mein Flieger schießt standard immer orangene Kugeln. Wenn man das Powerup aufsammelt soll er grüne Kugeln verschiessen. Das macht er aber nur einmal ganz kurz wenn ich das PowerUp aufsammle, danach schiesst er wieder die Standard Kugeln. Och ne...

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

  • Wieso geht das nicht mit der Variablen?
    Probiere das:
    [Objekt : Dein Gegner-Objekt]
    <Create-Event>

    GML-Quellcode

    1. hp = 5 //Initialisiert die Variable hp. Das ist wichtig, damit du nachher keinen Fehler bekommst.

    <Treffer-Event> ( Kollisions-Event mit dem Schuss )

    GML-Quellcode

    1. hp -= 1 //Zieht eins von der Variablen hp ab.
    2. with other
    3. {
    4. instance_destroy () //Dies zerstört die Kugel des Players anschließend.
    5. }

    <Step-Event> ( Kann evtl. auch noch ins "Treffer"-Event )

    GML-Quellcode

    1. if hp <= 0 //Wenn kein Leben mehr übrig ist...
    2. {
    3. instance_destroy () //Zerstöre ihn! :3
    4. }

    Ich hoffe, das hilft ( da ich nicht sonderlich gut im beschreiben bin :P )
    Gruß, Phoenix
  • Ich habe es jetzt ausprobiert und der Gegner wird immer noch beim ersten Schuss zerstört - was mach ich denn blos falsh???



    Hier mal der Quelltext zu meinem Gegner


    GML-Quellcode

    1. Sprite: enemy_05
    2. Solid: false
    3. Visible: true
    4. Depth: 0
    5. Persistent: false
    6. Parent: <no parent>
    7. Mask: <same as sprite>
    8. Create Event:
    9. set variable hp to 10
    10. Step Event:
    11. for other object: if hp is smaller than 0
    12. exit this event
    13. set variable visible to 1
    14. set the vertical speed to 2
    15. if y is smaller than -32
    16. destroy the instance
    17. Collision Event with object obj_bullet:
    18. for other object: set variable hp to - 1
    19. play sound snd_explosion1; looping: false
    20. for other object: destroy the instance
    21. create instance of object obj_explosion1 at relative position (0,0)
    22. destroy the instance
    23. set the score relative to 1500
    Alles anzeigen
  • Also das ist der Zusammen gefaste Quell text aber der geht auch. Wenn ich das richtig seh wird beim Treffer das leben nicht um 1 verringert (-1 oder -=1) sondern auf =-1 gesetzt.
    Der unterschied ist wie folgt.
    -1 oder -=1 heist zb
    heist das du eins abziehst. Und viele machen den fehler das man den rechner vergist zusagen wo von er 1 abziehen soll.
    Das wäre dann zu alten zeiten so

    GML-Quellcode

    1. hp=hp-1
    2. // und heute schreib man das meist so
    3. hp-=1
    4. //ist beides das selbe


    So dein Quelltext sagter aber aus das du hp auf -1 setzt.

    GML-Quellcode

    1. hp=-1

    Das ist dann der neue Soll wert.
    Also nicht etwas ein Leben von 100 -1 =99 sondern ein Negativer Wert -1
    Somit ist der Gegner Tot da das Leben kleiner als 0 ist.
    Ich weis war etwas verwirrend. Aber dies Fomulierungen sind da ganz wichtig.
    Denn hier steht es ja geschrieben
    for other object: set variable hp to - 1

    übersetzt:setzt variable auf -1
    ist halt nich das selbe wie "Setzt hp auf hp-1.
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • So habe das jetzt geändert.



    ist das richtig wenn ich mit Execute code arbeite??



    Wenn im DebugMode versuche zu starten bekomme ich folgende meldung:



    FATAL ERROR in
    action number 1
    of Collision Event with object obj_bullet
    for object enemy05:

    COMPILATION ERROR in code action
    Error in code at line 1:
    set variable hp-=1

    at position 5: Assignment operator expected.



    Zusammengefasst hier nochmal der Quellcode für den Gegner der mehr aushalten soll:



    Collision Event with object obj_bullet:

    execute code:

    set variable hp-=1

    if hp is smaller than 0

    play sound snd_explosion1; looping: false

    for other object: destroy the instance

    create instance of object obj_explosion1 at relative position (0,0)

    destroy the instance

    set the score relative to 1500


  • Hi :)

    Ich weis zwar nicht ob du es weist, aber Mark Overmars hat dazu mal ein Tutorial geschrieben. Und irgentwann hat es einer mal komplett übersetzt.
    Hier ist ein Link von mir, wenn du das Tut herrunter laden möchtest, da ich nicht mehr weis wo der orginal Link ist.
    Das Tut ist sehr gut beschrieben. Hier wirst du sehr schnell eine Lösung für dein Problem finden.

    Hier nun der Link
    rapidshare.com/files/241409236…turial_-_Shooter_1945.rar

    Gruss Drachen :)
  • Hallo Drachen,

    vielen Dank für den Link. Ich habe mir das Tutorial angesehen, aber da sind nur die Grundlagen erklärt wie man überhaupt Gegner erstellt und leider keine Info wie ich einen Gegner stärker machen kann, damit er erst nach ca. 10 Scüssen vom Himmel fällt.

    Man das ganze hat so spass gemacht, die Levels malen usw. und jetzt stockt das alles weil ich so ungeschickt bin :(
  • Das würd ich nicht mit D&D machen, da das eine globale Variable ist und dann würde es für alle Gegner gelten, du willst aber sicher versch. starke Gegner oder so machen, deshalb machst du in deinem Gegner objekt im create event z.b. set variable leben to 5
    und dann erstellst du im Kollisionsevent mit den schüssen

    Quellcode

    1. leben-= 1;

    Das bedeutet bei nem Treffer wird ein leben abgezogen und das Minus nach leben bedeutet relativ.

    Gruß Stefan
    Gruß Gamer
  • also dank X-Sascha funktioniert das mit den Gegnern jetzt, aber dass ich mit aufsammeln eines PowerUps die Waffe wechsle also von roten auf Grüne geschosse geht auch nicht.



    Bitte helft mir bei diesem Problem



    Vielen lieben Dank :)
  • also, das kannst du z.b. so machen.
    Du ertellsch ne Variable und setzsch die zu beginn auf false, dann sobald du dein PowerUp aufgenommen hasch, wird sie auf true gestellt
    und dann machst du noch 2 Objekten, also einmal die grünen geschosse und einmal die roten geschosse.
    Und dann gibst du in dein Schuss-Event zum beispiel space-event (wenn du mit leertaste schiest)

    Quellcode

    1. if (variable=true)
    2. instance_create(self.x,self.y,obj_grünesgeschoss)
    3. else
    4. instance_create(self.x,self.y,obj_grünesgeschoss)



    danach musst nur noch bei deinen schuss-objekten einstellen wo sie hinfliegen sollen.

    Ps:
    bin auch noch ein GML anfänger, also bitte verbessern, falls iwas falsch ist.
    und wie macht ihr die Codes eig. farbig, ihr macht euch ja bestimmt nicht immer die mühe alles in ner anderen farbe zu schreiben oder?


    Gruß Stefan
    Gruß Gamer
  • Ganz lieben Dank für all eure Hilfe!!

    Ich hab jetzt mal die ersten drei Levels fertig gebaut, Bodeneinheiten kommen noch. Die Sprites dafür sind zwar schon fertig, aber ich habe die Objekte noch nicht gebaut.

    Die 3 Level DEMO gibt es hier.

    1943 Battle for Midway REMAKE 3 Level Demo
  • Benutzer online 1

    1 Besucher