Powerup cooldown

  • GM 8

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

  • Powerup cooldown

    Guten Morgen :)

    Ich hab auch mal wieder eine Frage. Folgendes:

    Ich habe in meinem Spiel ein Power Up Object das wenn der Spieler dieses einsammelt 10sekunden Verfügbar ist.
    Ich hab das Relativ Noobig gelöst:

    Ich habe eine Globale Variable erstellt die bei Spielbeginn auf 0 steht.
    Bei berührung mit dem Powerup wird diese Variable auf 10 gestellt und eine Timeline gestartet.
    Diese zieht alle 60 Steps ( = 1 Sek) von der Variable "1" ab.
    Ist die Variable wieder bei 0 angelangt kann man es nich mehr benutzen.
    Wird das Powerup wieder eingesammelt wird die Variable wieder auf 10 gesetzt und wieder die Timeline gestartet.

    :?: Meine Frage: Gibt es eine schöne saubere Script Lösung die man dafür benützen könnte? Anstatt dies über eine Timeline zu machen? Danke für Antworten :D
  • Jop und zwar eine GM-intern genau dafür geeignete: Alarme.
    Bei Berührung mit dem Powerup setzt du einen alarm auf 10 * room_speed, d.h. der Alarm zählt 10 Sekunden hinunter und die dazugehörige Variable auf 1. Im alarm event setzt du dann die Variable wieder auf 0.

    © 2008 by Teamgrill Productions
  • Erstmal danke für die schnelle Antwort. Kurz und Schmerzlos und das um 4 Uhr morgens...

    Nur hab ich das bei mir so gemacht das der Cooldown von 10 - 0 auch Grafisch angezeigt wird.

    Wenn ich das so mache wie du geschrieben hast werden sie 10 sekunden einfach runtergezählt.
    Aber ich kann mir nich jede sekunde anzeigen lassen? Also das runterzählen...

    Ei Ei is schon spät... Game Maker macht süchtig ^^

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

  • Natürlich, du kannst es auch einfach ohne Timeline machen indem du die Variable auf 10 * room_speed stellst und im Step-event immer 1 abziehst. Beim Zeichnen musst du dann logischwerweise durch room_speed dividieren, damit du den Wert in Sekunden hast ;)

    © 2008 by Teamgrill Productions
  • Aber ich kann mir nich jede sekunde anzeigen lassen? Also das runterzählen...

    Doch kannst du! Wenn du auslesen möchtest wie viel Zeit noch vor dir liegt fragst du einfach die Variable alarm[index] ab. Index steht für den alarm den du benutzt also 1-12(glaub ich??).
  • Hab es gelöst wie MasterXY gesagt hat

    Cooldown auf 10 Sekunden stellen (10 * 60 = 600ms):

    GML-Quellcode

    1. global.pwup_superjump = 10 * room_speed


    Diese wieder anzeigen:

    GML-Quellcode

    1. draw_text(view_xview + 138,view_yview + 58, string(global.pwup_superjump / room_speed) );


    So zeigts mir jeden tick hat :)

    Nu

    Was mich nu vll etwas stört... es zeigt nich nur sekunden an sondern "5.48 Sek" zb. Wie bekomm ich die zahlen hinter dem Koma weg? Mir würden die ganzen Sekunden eig reichen.
  • Was mich nu vll etwas stört... es zeigt nich nur sekunden an sondern
    "5.48 Sek" zb. Wie bekomm ich die zahlen hinter dem Koma weg? Mir würden
    die ganzen Sekunden eig reichen.
    Dafür gibt es die Rundungsfunktionen: round, floor und ceil

    round: Rundet den Wert klassisch, z.B. 5.48 auf 5, ab 5.5 rundet er auf, also dann auf 6.
    floor: Rundet den Wert auf den nächstniedrigeren Wert, also z.B. alles was zwischen 5 und 6 ist auf 5.
    ceil: Rundet auf den nächsthöheren Wert, wie voriges Beispiel nur wird da immer auf 6 gerundet.

    Ich würde "ceil" verwenden da in dem Fall, nachdem es ja eine Art Countdown ist, wenn der Wert auf 0.1 steht noch auf 1 angezeigt wird,
    aber das bleibt natürlich dir überlassen.

    So würde das dann aussehen:

    GML-Quellcode

    1. draw_text(view_xview + 138,view_yview + 58, string(ceil(global.pwup_superjump / room_speed) ) );