Zeit-Text

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

  • Wie kann man es so machen, dass der Text nicht durch 'vk_down' weitergeht / verschwindet, sondern durch Zeit, also zum Beispiel nach 8 Sekunden geht der Text weiter / verschwindet.

    GML-Quellcode

    1. ///Text anzeigen
    2. if (characters < message_length){ //Zeichen zählen (solange kleiner als die Gesamtanzahl der Nachricht)
    3. hold = keyboard_check(vk_space); //hold ist true oder false if wenn du SPACE drückst.
    4. characters += increase * (1 + hold); //Erhöhe die Ausgabegeschwindigkeit (bei hold)
    5. message_draw = string_copy(message[message_current], 0, characters); //akt. Zeichen hinzufügen
    6. }
    7. else { //Wenn das akt. Zeichen größer als die gesamte Menge an Zeichen ist...
    8. if (keyboard_check(vk_down)) { //Wenn wir die DOWN (Pfeil-Runter)-Taste drücken...
    9. if (message_current < message_end) { //Ist da etwa noch mehr Text zum anzeigen?
    10. message_current += 1; //Erhöhung des Nachrichtenstatus um 1
    11. message_length = string_length(message[message_current]); //Bekomme die neue Zeichenlänge der Nachricht
    12. characters = 0; //akt. Zeichen nullen
    13. message_draw = ""; //Löschen des Anzeige-Text
    14. }
    15. else { //Wenn deine Nachricht fertig angezeigt ist...
    16. instance_destroy(); //Zerstöre die Nachricht(das Objekt dazu)
    17. }
    18. }
    19. }
    Alles anzeigen
  • Deiner Frage entnehme ich einfach mal, dass du den Code nichtr selber geschrieben hast, sondern von irgendwo genommen hast und jetzt willst, dass wir den für dich umschreiben.
    Schau dir am besten mal die Alarme im Game Maker an. Dort kannst du bspw. sagen alarm[0] = 30, d.h. nach 30 Steps (ungefähr 1 Sekunde) wird der Code, der sich in Alarm[0] befindet ausgelöst.
    Ähnlich könntest du es auch mit den Texten handhaben. Damit nicht immer der selbe Text in Alarm[0] dann angezeigt wird, empfehle ich dir den Text evtl. in ein Array zu packen und jedes Mal, wenn der Text weitergehen soll/wenn der Alarm aufgerufen wird, zählst du eine Zählervariable weiter, bis der gesamte Dialog zu Ende ist.

    Beispiel für die Initialisierung des Textes im Create Event:

    GML-Quellcode

    1. text[0] = "Hallo das ist ein Test";
    2. text[1] = "Jetzt gehts weiter";
    3. counter = 0; //Die Zählervariable
    4. alarm[0] = 240;


    Alarm[0]:

    GML-Quellcode

    1. counter+=1;
    2. alarm[0] = 240;


    Draw:

    GML-Quellcode

    1. draw_text(x, y, text[counter])


    Ein grobes Beispiel, wie es funktioneren könnte.
    Es gibt mit Sicherheit auch noch andere Lösungswege.
  • ich hab mal schnell eine Variante mit typewriter effekt für dich Erstellt, falls es das ist was du Sucht.

    Create Event:

    GML-Quellcode

    1. i = 0
    2. j = 0
    3. typewriter = ""
    4. nextText = 0
    5. text[0] = "Hallo";
    6. text[1] = "Hallo2";

    Draw Event:

    GML-Quellcode

    1. switch(nextText){
    2. case 0: scr_text(text[0]) break; //scr_text ist ein script
    3. case 1: scr_text(text[1]) break;
    4. case 2: instance_destroy(id)
    5. }
    Script:

    GML-Quellcode

    1. ///@argument0 text_to_write
    2. var text_to_write = argument0
    3. var destroyDelay = 20
    4. i++ // timer
    5. if i >= 3 { //die geschwindigkeit pro Zeichen
    6. j += 1 //fügt ein zeichen hinzu
    7. i = 0 // setzt den timer wieder auf null
    8. typewriter += string_char_at(text_to_write,j)
    9. }else{
    10. if string_length(text_to_write) + destroyDelay <= j {
    11. //die variablen j und typewriter müssen resettet werden
    12. j = 0;
    13. typewriter = "";
    14. nextText += 1 // geht zum nächste case über vom switch Statement
    15. }
    16. }
    17. draw_text(x,y,typewriter)
    Alles anzeigen