Was mache ich Falsch?

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

  • Was mache ich Falsch?

    Hallo,

    im Step event von obj_Dino

    var essen;

    essen = 0

    if mouse_check_button_pressed()
    {
    essen += 1
    }

    if essen <= 10
    {
    instance_create(x,y,obj_Dino2)
    instance_destroy()
    }

    was mach ich bei diesen code Falsch.
    Ich möchte das wenn ich 10 mal drauf klicke das, das object geändert wird.
    Was kann ich machen?

    LG 4ndi
    Jedes Spiel war mal Schlecht doch manche werden verbessert <3
  • was geht denn nicht?

    Ja ok sieht man ^^
    if mouse_check_button_pressed()
    ist falsch, da du noch sagen musst mit welcher maustaste du drückst:
    if mouse_check_button_pressed(mb_left)
    Jetzt ist es wenn du Links drückst. Dann ist es hier noch egal wo du hin drückst. Beheben kannst du das so:
    if mouse_check_button_pressed(mb_left)
    and position_meeting(mouse_x,mouse_y,id)

    Dann musst du bei
    if essen <= 10
    nicht <= machen sondern >=

    Sonst müsste das eigentlich gehen ;)

    (Ich hab das Gefühl das ich mich letzter Zeit blöd ausdrücke ^^)
    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
  • Ich hab jetzt so gemacht:
    var essen;

    essen = 0

    if mouse_check_button_pressed(mb_left)
    {
    essen += 1
    }

    if essen >= 2
    {
    sprite_index = sprite2
    }


    er soll wenn man ihn 2 mal anklickt den sprite ändern
    geht aber nicht :(

    LG 4ndi
    Jedes Spiel war mal Schlecht doch manche werden verbessert <3
  • Hi ho,

    das Hauptproblem wird wohl sein, dass zum einen
    "var essen;" die Variable als lokal deklariert, d.h. nach einer Ausführung des Skripts wird sie wieder gelöscht.
    Zum anderen wird sie zu beginn jedes Steps auf 0 gesetzt, d.h. deine Zuweisungen danach sind irrelevant.
    lösche die Zeile "var essen;" und verschiebe "essen = 0" ins create event des objekts, dann sollte es gehen.

    Gruß, Spellmaker
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • //Siehe @Spellmaker :D

    Wenn du die Variable essen im Stepevent deklarierst und den Wert 0 zu weist, heißt das,dass die Variable jede Sekunde sehr oft neugesetzt wird, in dem Fall zu 0.Daher kann essen nie zu groß wie 10 werden.
    Das heißt also,dass du essen im Createvent zu 0 setzen musst und ohne var, da die Variablen die mit var intialisiert werden nur in einem Event(z.B. Create Event, Step Event...) abufbar sind. So könntest du nicht mehr im Stepevent darauf zu greifen. Folglich solltest du eine objektorientierte Variable erstellen, also einfach essen = 0 schreiben. Außerdem kannst du das kleiner gleich weglassen. Folglich sieht dein Code folgendens aus:

    Createevent

    GML-Quellcode

    1. essen = 0


    Stepevent

    GML-Quellcode

    1. if mouse_check_button_released()
    2. {
    3. essen += 1
    4. }
    5. if essen = 10
    6. {
    7. instance_create(x,y,obj_Dino2)
    8. instance_destroy()
    9. }


  • Danke euch allen.
    Das GM-D Forum hat echt eine gute Communtity :D

    LG 4ndi

    Aber noch eine Frage:

    Wie kann ich Variablen anzeigen lassen.
    Also das es anzeigt wie viel essen man hat.
    Würde mich über antworten freuen.

    LG 4ndi
    Jedes Spiel war mal Schlecht doch manche werden verbessert <3

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

  • Benutzt du Game Maker 8.1 wie es in deinem Profil steht? Da gibt es den Befehl meines Wissens noch nicht.
    Aber das folgende hat den selben effekt:

    GML-Quellcode

    1. draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)