Textdraw im Kollisionsevent

  • Textdraw im Kollisionsevent

    Hallo,

    um ins nächste Level zu gelangen, muß der Spieler einen Schlüssel holen. Erst dann darf er ins nächste Level

    Ich habe dazu ein Kollisionsevent erstellt(überhalb einer Leiter), welches prüft ob global.schluessel 1 ist.

    Aber wenn global.schluessel nicht 1 ist, wie kann ich dem Spieler per Draw a text sagen, das der Schlüssel fehlt?

    Das Problem ist, das der Code im Player-Objekt liegt und bei Draw, das Objekt gelöscht wird.
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • dann lass wenn eigendlich der text kommen sollte ein neues Objekt erstellen.
    In dem neunen Objekt ist im creat event ein alarm und im draw event der text. im alarm event wird das objekt nach der zeit wieder gelöscht.
  • warum wird den das object bei draw gelöscht?

    realtiv einfach lässt sich das so lösen, das du in dein steuerungs-object, im draw event, diesen code einfügst:

    if global.schluessel=0
    {draw_text(100,100,'Es fehlt noch der Schlüssel');}
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    warum wird den das object bei draw gelöscht?

    realtiv einfach lässt sich das so lösen, das du in dein steuerungs-object, im draw event, diesen code einfügst:

    if global.schluessel=0
    {draw_text(100,100,'Es fehlt noch der Schlüssel');}


    Ja und wie lange bleibt der Text stehen? Ich brauche noch eine Alarm-Anweisung, das der Text nach 3 Sekunden verschwindet...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • if global.schluessel=0
    if global.text = 1
    draw_text(100,100,'Es fehlt noch der Schlüssel');
    und dann musst du noch Alarm 0 mit beispielsweise 30 (oder mehr oder weniger) setzen, und im event alarm 0 auswählen und da reinsetzen: set variable global.text to 0

    aber ich eiß nicht ob das funkt
    hallo erstmal....
  • Original von fantscher
    if global.schluessel=0
    if global.text = 1
    draw_text(100,100,'Es fehlt noch der Schlüssel');
    und dann musst du noch Alarm 0 mit beispielsweise 30 (oder mehr oder weniger) setzen, und im event alarm 0 auswählen und da reinsetzen: set variable global.text to 0

    aber ich eiß nicht ob das funkt


    Danke euch allen. Mit Variablen kann ich bestens umgehen. Meine Frage zielte darauf hinaus, wie ich ein Alarm in GML definiere....

    and by the way, wie geht die Funktion in GML:

    If there is a object at a position
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Also das, was in dem Alarm gemacht wird, musst du im Object in einem Alarm Event reinstellen. Stellen kannst du den z.B. für 3 Sek. mit alarm[0]=90 (also die Formel ist sekunde*30).

    and by the way, wie geht die Funktion in GML:

    If there is a object at a position


    Jo, das ist instance_position(x,y,obj).
    Wenn das Objekt egal ist, dann das instance_position(x,y,all)
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • ich würde keine weitere variable definieren, sondern den alarm selber für meine abfrage benutzen:

    im create event:
    // setzt den alarm0 auf 90, ca. 3 sekunden
    alarm[0]=90

    im step event:
    //zeigt wenn der alarm 0 grösser ist als 0 den text an
    if global.schluessel=0 && alarm[0]>0
    {draw_text(100,100,'Es fehlt noch der Schlüssel');}

    das hat den vorteil, das du z.b. wenn der spieler gegen die tür läuft, den alarm wieder auf 90 stellen kannst un der text wieder angezeigt wird, um dem spieler darauf hinzuweisen, das er noch keinen schlüssel hat.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    ich würde keine weitere variable definieren, sondern den alarm selber für meine abfrage benutzen:

    im create event:
    // setzt den alarm0 auf 90, ca. 3 sekunden
    alarm[0]=90

    im step event:
    //zeigt wenn der alarm 0 grösser ist als 0 den text an
    if global.schluessel=0 && alarm[0]>0
    {draw_text(100,100,'Es fehlt noch der Schlüssel');}

    das hat den vorteil, das du z.b. wenn der spieler gegen die tür läuft, den alarm wieder auf 90 stellen kannst un der text wieder angezeigt wird, um dem spieler darauf hinzuweisen, das er noch keinen schlüssel hat.


    Das ist eine super Lösung!

    Und wie kann ich das in GML coden:

    Wenn der Spieler 80 oder weniger Pixel vom Gegner entfernt ist, dann soll der Gegner schiessen?

    Deshalb fragte ich nach dem Code:

    If there is a object at a position. Aber da kann ich ja nur player.x angeben und nicht kleiner gleich oder größer gleich player.x

    Also mein Gegner schiesst mit dem Code nur, wenn ich genau 80 Pixel entfernt bin...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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