Wichtige Frage

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

  • Wichtige Frage

    Hallo
    Ich wollte nur wissen wieso dieser Code nicht funktioniert.
    Er sollte bewirken das wenn man auf dem Button drückt sich die Tür öffnet

    OBJ_BUTTON
    CREATE EVENT:

    GML-Quellcode

    1. activated=false



    OBJ_BUTTON
    STEP EVENT:

    GML-Quellcode

    1. if activated=true
    2. {
    3. image_index=1
    4. }else
    5. {
    6. image_index=0
    7. }
    8. if place_meeting(x,y-1,obj_player)
    9. {
    10. activated=true
    11. }
    Alles anzeigen



    OBJ_DOOR
    CREATE EVENT:

    GML-Quellcode

    1. if obj_door.activated=true
    2. {
    3. instance_destroy();
    4. }



    Aber das funktioniert nicht.
    Habe diesen Code von Youtube.
    Gibt es dafür eine andere Möglichkeit??
  • Du fragst im obj_door ab, ob die Variable activated im obj_door den Wert true hat (if obj_door.activated=true). Was du aber eigentlich abfragen willst, ist ob die Variable im obj_button den Wert true hat. obj_button.activated wäre also korrekt.

    Mit dem Namen des Objektes, bzw. der Instanz (oder der Instanz-id) lassen sich Variablen in anderen Instanzen abfragen in dem man sie vor den Variablennamen setzt. Für die Abfrage in der aktuellen Instanz, so wie in deinem Code, macht dieser Zusatz keinen Sinn.
  • du hast aber die variable im obj_button auf true gesetzt. Das ist eine andere als im obj_door. jedes Object kann eigene Variablen verwenden, die aber den gleichen Namen haben können. Sprich die Variable activated im obj_door kann einen anderen Wert haben als die Variable activated im obj_button. Wenn du Variablen objektübergreifen abfragen willst, musst du entweder den Namen des anderen Objektes voranstellen oder du musst globale variablen verwenden. diese sind für alle objekte gleich.
  • ganz genau. laut deinem Code fragst du aber genau die Variable activated im obj_door ab (welche natürlich nicht existiert).

    Ersetze einfach

    GML-Quellcode

    1. if obj_door.activated=true
    2. {
    3. instance_destroy();
    4. }
    durch

    GML-Quellcode

    1. if obj_button.activated=true
    2. {
    3. instance_destroy();
    4. }

    So fragst du dann mit dem obj_door die Variable im obj_button ab.
  • Du machts da auch mehrfach einen generellen Fehler. Bei deinen IF-Abfragen, fragst du nicht ab, sondern weist zu. Du musst da "==" benutzen und nicht einfach "=". Also z.B: so:

    GML-Quellcode

    1. if activated == true


    Wenn du das nicht machst, setzt du activated einfach immer auf True, anstatt zu fragen, ob es True ist.
  • Du machts da auch mehrfach einen generellen Fehler. Bei deinen IF-Abfragen, fragst du nicht ab, sondern weisst zu. Du musst da "==" benutzen und nicht einfach "=". Also z.B: so:GML-Quellcode
    if activated == true

    Wenn du das nicht machst, setzt du activated einfach immer auf True, anstatt zu fragen, ob es True ist.


    Falsch, man kann im GM entweder "=" oder "==" in einer Abfrage benutzen, es ist somit egal ob:

    GML-Quellcode

    1. if(active==1)


    oder

    GML-Quellcode

    1. if(active=1)