image im sprite durch Tastendruck hin und herschalten

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

  • image im sprite durch Tastendruck hin und herschalten

    Ich mal wieder mit einer dummen Frage/Problem.

    Der Spieler bewegt sich auf ein Objekt (Tür) zu, wenn er an der Tür ist, kann er diese durch das drücken der Taste E öffnen. Das Image wird von 0(geschlossen) auf 1 (geöffnet) geändert. Durch erneutes drücken von E soll die Tür wieder geschlossen werden, also das Image zurück auf 0 gesetzt werden. Habe jetzt schon einiges probiert, bin aber nicht so bewandert mit den Codes.

    Das ist im Object Tür, als Event habe ich "press E-key":

    GML-Quellcode

    1. ​if distance_to_object(OBJ_Player)<=10{
    2. if (image_index =0)
    3. image_index =1;
    4. }


    der simple Weg funktionierte bei mir nicht, indem ich einfach:

    GML-Quellcode

    1. ​if distance_to_object(OBJ_Player)<=10{
    2. if (image_index =0)
    3. image_index =1;
    4. image_index=0;
    5. }


    Danke im voraus

    Knorke
  • Beim zweiten Code wird es ja in jeden Fall auf 0 gesetzt. Ih würde es so machen:
    Nach dem if das
    image_index != image_index;
    Das macht ! Macht eine 1 zur 0 und anders herum.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Du machst gleich schon den Fehler, dass du in der IF-Abfrage "image_index =0" schreibst und nicht "image_index ==0", wenn du nur ein "=" benutzt, ist das eine Zuweisung und du weist index_image den Wert 0 zu.
    Ausserdem setzt du am Ende - wie husi schon schreibt - image_index in jedem Fall auf 0, da fehlt ein "else"

    So müsste es besser funktionieren:

    GML-Quellcode

    1. if distance_to_object(OBJ_Player)<=10{
    2. if (image_index == 0)
    3. image_index = 1;
    4. else
    5. image_index = 0;
    6. }


    So wird image_index auf 1 gesetzt wenn es 0 ist und in allen anderen Fällen auf 0.
  • ups, zu spät aktualisiert und astrolux Beitrag nicht gesehen.

    Probiert und funktioniert einwandfrei. Und wieder etwas gelernt, das mit dem == habe ich wohl vergessen/verdrängt. Ich danke Euch beiden für die Hilfe.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Captain_Knorke ()

  • Du solltest bei "if"-Abfragen ruhig, dass doppelte Gleichheitszeichen verwenden, da du ja etwas abfragen und nichts festlegen möchtest (Edit: Hat astrolux schon gesagt, also sorry für den Doppepost).

    Und sonst würde ich, es genauso lösen, wie Astrolux es geschrieben hat, allerings würde ich den Code in das Step-Event setzen:

    GML-Quellcode

    1. if keyboard_check_pressed(ord('E')) && distance_to_object(obj_spieler) <=10 {
    2. if (image_index == 0)
    3. image_index = 1;
    4. else
    5. image_index = 0;
    6. }

    ROBOT REVOLUTION - Jetzt in Entwicklung!