2016-06-04 13 views
1

Ich habe mein Spiel-Setup, so dass es beginnt und geht zurück zu einem Bildschirm laden Raum für 45 Schritte, nach denen der nächste Raum ist randomisiert. So bei Alarm [0] der folgende Code aktiviert:GML-Alarm-Ereignis funktioniert nicht zum zweiten Mal

randomize(); 
chosenRoom = choose(rm_roomOne, rm_roomTwo, rm_roomThree, rm_roomFour); 
room_goto(chosenRoom); 

Der Code hier funktioniert das erste Mal, aber wenn es aus dem zufällig gewählten Raum zum Ladebildschirm Raum geht zurück bleibt es dort und nicht ausführen der Code erneut.

Jede Hilfe würde sehr geschätzt werden.

+0

Wie rufen Sie den Alarm [0]? In welchem ​​Fall starten Sie es? –

+0

Ich habe einfach das Alarmereignis in einem Kontrollobjekt hinzugefügt. Es setzt den Alarm [0] im create-Ereignis auf 45 und dann im Alarm [0] -Ereignis das obige Code-Stück (na ja, nur das erste Mal). Es ist also ziemlich loadingRoom -> Code ausführen -> RandomRoom -> LoadingRoom -> stoppt – SneakyBomber

Antwort

1

Das hört sich vielleicht dumm an, aber erinnerst du dich daran, den Alarm erneut zu setzen, nachdem er ausgeschaltet wurde? Ich weiß, dass ich das mehrere Male ohne nachzudenken getan habe. Ohne Ihren Code zu sehen, gehe ich davon aus, dass er nach dem Alarm nicht mehr eingestellt wird und nicht wieder erlischt.

1

Ich nehme an, das Kontrollobjekt ist "persistent", daher existiert das Kontrollobjekt nur einmal und bleibt für immer (auch nach dem Schalten von Räumen) - somit wird das create-Ereignis nur einmal ausgelöst - der Alarm wird also nur einmal gesetzt .

Versuchen Sie, Ihren Code auf das Ereignis "Room Start" in Ihrem Controller zu verschieben, und es wird funktionieren.

0

können Sie event_perform(ev_alarm,0); verwenden.
Der Code hier führt nach 45 Schritten Alarm [0] aus. nach 45 Schritten löst es erneut Alarm [0] aus. Beachten Sie, dass Sie es in Schritt-Ereignis einfügen müssen. Und Sie müssen die Wartevariable und die Zeiten im create-Ereignis auf Null setzen. times ist die Wiederholung und wait ist Entfernung zwischen Ereignissen.

if(wait == 45 && times !=2){ 
    event_perform(ev_alarm,0); 
    times++; 
    wait = 0; 
} 
else{ 
    wait++; 
}