Hilfe bezüglich Schalter

  • GM 8

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

  • Hilfe bezüglich Schalter

    Erst einmal Hallo gm-d.de Community
    Ich würde gerne 3 verschieden Schalter erstellen.
    Dieser hier funktioniert und bewirkt, dass wen der Spieler ihn berührt das nächste Fallenobjekt aktiviert wird.
    Im Createevent steht collision = 0;
    und im Stepevent
    while (position_meeting(x,y,obj_hero) && collision == 0){
    collision = collision + 1
    instance = instance_nearest(x, y, obj_trap_vert)
    instance.vspeed = 50;
    }
    if (!position_meeting(x,y,obj_hero)){
    collision = 0
    }

    Dies Funktiuniert ganz gut und ich dachte mir, dass ich noch einen Schalter Bauen kann, der aktiviert wird wen ich ihn anschieße ( er soll dann auch ein Sprite zum subimage hin verändern so das mein gate dann praktisch "hochfährt" und man durchlaufen kann)
    Im CreateEvent meinen Objektes Gate stehet image_index = 0 und image_speed = 0
    in dem Schalter steht im CreateEvent collision = 0
    und im Step if (position_meeting(x,y,obj_hero_missile) && collision == 0){
    collision = collision + 1;
    instance = instance_nearest(x, y, obj_gate)
    draw_sprite(spr_Gate,1,x,y)
    }

    (da das schon nicht funktiniert hatte ich nichts für else geschrieben)
    Nun Hänge ich leider so sehr da dran, dass ich mir noch keine Gedanken zu dem letzten Schalter machen konnte,der ein Objekt via Knopfdruckt auf z.b. E aktiviert bzw.öffnet
    Ich hoffe mir kann geholfen werden :) oder auch Tipps wie ich die Schalter besser verwalten könnte durch z.b. Vererbung wären auch nett. Das ganze hat heute schon ein Paar Stunden gefressen
    bin noch nicht so fit in der GML und den eigenarten des GameMakers.
    Schönen abend euch noch.[MSIE_newline_end ]
  • Herzlich Willkommen im forum :)

    Du bist gerade über eine der Eigenheiten vom GM gestollpert xD
    Nähmlich das man ausschließlich im Draw event zeichnen kann.
    Wenn man draw funktionen woanders einsetzt passiert garnichts.

    Aber glaube du hast dich vertippt.
    Wolltest du nicht das bei der Kollision das subimige gewechselt wird?
    Also auf image 1 wo sich das Tor aufbaut?
    dann brauchst du statt draw_sprite(...)
    image_index = 1;

    Wenn du eine Animation hast kannst du dort auch image_speed erhöhen damit diese abläuft.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Einfach mal mit:

    GML-Quellcode

    1. obj.image_index=1;
    2. obj.image_speed=0;

    probiert?
    #edit:
    Nähmlich das man ausschließlich im Draw event zeichnen kann.
    Es gibt screen_refresh() und screen_redraw()

    GML-Quellcode

    1. draw_text(0,0,"Ich bin ein Text der nicht im Draw Event steht.");
    2. screen_refresh();
    3. keyboard_wait();
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • also du meinst praktisch so
    ...
    instance = instance_nearest(x, y, obj_gate)
    instance.image_index=1;
    instance.image_speed=0;

    ... ??
    falls ja dann leider nein :([MSIE_newline_end ]
    ich hoffe jemand kann mir helfen bei meinem Schalterbproblem *g*[MSIE_newline_end ]

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

  • So habe weitergemacht und alle Schalter laufen so, wie ich es will. Lediglich der, welcher beschossen wird muckt noch rum. Wen die Missile den Schalter trifft wechselt er immer zwischen auf und zu und es ist zufällig in welchem Zusatnd er am Ende verweilt.

    Create des Gates: image_speed = 0;
    global.references[101, 1] = id;

    Create des Schalter: colli = 0;
    image_speed = 0;

    Step des Schalters:
    gate = global.references[101, 1];
    if(collision_rectangle(bbox_left,bbox_top,bbox_right,bbox_bottom,obj_hero_missile,0,1) && colli == 0) { // Kollisionsabfrage Missle / Schalter
    colli = 1;
    gate.image_index=1; //image Gate
    image_index=1; // image Falle
    }
    else {
    if (collision_rectangle(bbox_left,bbox_top,bbox_right,bbox_bottom,obj_hero_missile,0,1) && colli == 1) {
    colli = 0; //reset
    image_index=0; //image Falle
    gate.image_index=0; //image Gate
    }
    }

    Habe ich etwas nicht beachtet ? ich hoffe einer von euch kann mir weiterhelfen :)
  • hm, ja.
    erstmal mach den code vorallem wenn er komentiert ist, besser in eine Codebox. Ist übersichtlicher.
    Das Problem ist das else statement. Du hast obben in einem Statement die collisions-abfrage und die variabel-abfrage.
    Dadurch wird die variabel coli auch wieder auf 0 gesetzt.

    Das einfachste wäre die zweite Collisionsabfrage zu verändern. schreib:

    if (collision_rectangle(bbox_left,bbox_top,bbox_right,bbox_bottom,obj_hero_missile,0,1) == noone && colli == 1) {

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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

  • hi, erstmal danke für den Tipp aber entwerder setze ich ihn falsch um ? oder er funktioniert nicht :/

    GML-Quellcode

    1. else {
    2. if (collision_rectangle(bbox_left,bbox_top,bbox_right,bbox_bottom,obj_hero_missile,0,1) == noone && colli == 1) {
    3. colli = 0; //reset
    4. image_index=0; //image Falle
    5. gate.image_index=0; //image Gate
    6. }
    7. }


    so schaut er nun aus :) Ich hoffe der Fehler liegt bei mir xD
  • du hast ihn schon korekt umgesetzt.
    Glaub fehler liegt eher bei mir.
    Ich teste den Code mal.


    EDIT: warte mal. das kann doch nicht funktionieren!
    Du musst den Bullet auch zerstören. Sonst flackert das teil ja hin und her.
    habs mal umgeändert:

    GML-Quellcode

    1. var bul;
    2. bul = collision_rectangle(bbox_left,bbox_top,bbox_right,bbox_bottom,obj_hero_missle,0,1)
    3. if bul
    4. if colli == 0
    5. {
    6. colli = 1;
    7. gate.image_index=1; //image Gate
    8. image_index=1; // image Falle
    9. }
    10. else
    11. {
    12. colli = 0; //reset
    13. image_index=0; //image Falle
    14. gate.image_index=0; //image Gate
    15. }
    16. with(bul) instance_destroy()
    Alles anzeigen

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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