Schiessen langsamer?

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

  • Schiessen langsamer?

    Hallo Leute,

    ich bin noch ein absoluter Neuling in Sachen Game Maker, trotzdem habe ich mich mal dran gewagt ein Arcade Shooter im Style von Metal Slug zu kreeiren. Nach einigen Vorlagen und Tutorials die ich mir angeschaut bzw. verwendet habe, habe ich nun ein Problem mit den schiessen. Nunja es funktioniert, mittels STRG kann ich schiessen, leider bewegen sich die Schüsse rasendschnell und dass sieht dann auf den Bildschirm so aus als würde dort ein Feuersturm wüten. Möchte gerne, dass nach jeden schuss eine kleine Pause gemacht wird von ner halben Sekunde oder so.

    Falls mir jemand weiter helfen könnte, wäre ich den /diejenige sehr dankbar.

    MFG Finalzero
  • Um so etwas zu realisieren, musst du mit Alarmen arbeiten. Ich weiß jetzt nicht, ob du mit D'n'D oder mit GML arbeitest, aber ich erkläre dir das Ganze mal in GML :P

    Also, im Create Event müssen wir eine Variable, die wir am besten 'schuss' o.Ä. nennen. Das geht folgendermaßen:

    GML-Quellcode

    1. schuss = true; // das 'true' bedeutet, dass wir schießen können
    Nun müssen wir im Schuss-Event überprüfen, ob die Variable 'schuss' den Wert true zurückgibt, wenn ja, schießen wir, weisen der Variable den Wert 0/false zu und aktivieren einen Alarm:

    GML-Quellcode

    1. if (schuss) {
    2. // schießen
    3. schuss = false;
    4. alarm[0] = room_speed * x; // x durch die Anzahl der Sekunden, die der Spieler zum Nachladen brauchen soll, ersetzen.
    5. }
    Jetzt brauchen wir noch ein Alarm 0 Event, in dem wir der Variable 'schuss' wieder den Wert true/1 zuweisen:

    GML-Quellcode

    1. schuss = true;
    Fertig. :)

    MfG,
    -fabse64
  • Erstmal danke für deine Antwort. :thumbsup:

    Ich hab dass jetzt in etwa so gemacht wie du es beschrieben hasst. Im create Fenster habe ich die Variable "feuer" erstellt und diese dann "true" gemacht. Beim Keyboard Event "STRG" habe ich zuerst den ersten Teil deines Codes eingefügt, also dass mit den "if" und natürlich dass x mit einer 5 erstmal ersetzt. (Habe übrigens das "schuss" in "feuer" umgetauft, da ich vorher merkwürdigerweise das Spiel nicht staten konnte. (stürzt ab) )

    Danach die Aktion "Create a moving instance of ...."

    Und zum schluss den zweiten Teil deines Codes, mit den "feuer = true". Im Spiel hat sich jedoch leider nichts verändert, sie fliegen immer noch so rasend schnell durch den Bildschirm. :heul:
  • Okay, habe es jetzt anders gemacht, zuerst habe ich den Speed des Schusses auf -8 herabgesetzt, damit rasst er net mehr so durch die Welt. Leider sah dass dann so aus:



    Dann habe ich das Ereignis umgeschrieben, nun wird der schuss nur ausgelöst, wenn man "STRG" los lässt. Damit sieht es schonmal um einiges besser aus, leider erzeugt man durch zu schnelles drücken hintereinander den selben Effekt wie auf Bild 1.
  • Sag mal, auf wieviel hast Du denn deinen Alarm gesetzt? Anders als Fabse geschrieben hat, steht ' x ' an dieser Stelle nicht für die Sekunden, sondern für die Steps zwischen den Schüssen. Also: Tu das Schießen auf das Key-Event (nicht das Event zum loslassen), denn das limitieren kommt durch den Alarm. Und den Alarm setzst Du je nach Roomspeed auf 15 bis 30 steps (wenn Du roomspeed auf 30 steps hast, dann musst Du logischerweise den Alarm auf 15 setzen, damit jede halbe Sekunde ein Schuss kommt).
  • Du kannst auch einfach dein Schuss im keypress event machen. Dann muss man immer drücken um zu schießen. Wenn du aber wills das man auch strg einfach nur gedrückt hält,
    dann ist die obige wohl die beste Lösung.

    mfg frischi