Das merkwürdige Verhalten von beweglichen Objekten

  • GM 8

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

  • Das merkwürdige Verhalten von beweglichen Objekten

    Hallo,

    ich habe da ein Problem, an dem ich mir schon über eine Woche die Zähne ausbeisse, aber keine Ursache und daher auch keine Lösung finde. Vielleicht kann mir ja hier jemand weiterhelfen.
    Ich habe eine stark abgespeckte Version des Problems mal in eine GM-Datei gepackt und hänge die hier dran. Leider ist es in GM_HTML5 gemacht worden und ich bekomme es nicht mehr in eine "normale" gmk-Datei konvertiert.

    Für die, die es nun nicht ansehen können: ich habe ein kleines Spielfeld mit etlichen Spielsteinen, die man beim Anklicken wegspielen kann. Die werden dann markiert (über "global.mouseover") und fertig. Funktioniert auch alles.
    Nun aber kommt ein weiteres Objekt ins Spiel, hier in Form einer Blase. Und wenn dieses Objekt da ist und man geht mit dem Mauszeiger drüber (ohne zu klicken!) - dann verwandelt sich diese Blase ganz plötzlich in einen Spielstein! Und das, obwohl beide - Blase wie Spielsteine - noch zudem auf anderen Ebenen (depth) liegen!

    Ich habe einfach keine Erklärung, woher dieses Verhalten kommt. Ich habe schon alles ausprobiert, was mir eingefallen ist: solid draus gemacht, perform-events ab- und zugeschaltet, depths geändert - nichts. Das Verhalten ist immer das Gleiche.

    Vielleicht kann mir ja hier jemand weiterhelfen mit dem entscheidenen Tipp, woran es liegt, dass sich bewegende Objekte (betrifft im eigentlichen Spiel etliche!) plötzlich und unerwartet verwandeln.

    Danke schon mal im voraus,
    Archie

    Und hier die angehängte Zip-Datei:
    Dateien
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Ich hab mir dein Projekt mal angesehen und bin mir ziemlich sicher, dass das mit der Funktion position_change zu tun hat. Du überprüfst zwar, ob an der angegebenen stelle eine Rote Box ist, aber es wird dann einfach das erstbeste Objekt an der Stelle verändert, was auch die Blase sein kann. Ich habe diesen Teil des Codes

    GML-Quellcode

    1. if place_meeting(x+30,y,obj_rot) position_change(x+30,y,obj_rot_invers,0);
    2. if place_meeting(x-30,y,obj_rot) position_change(x-30,y,obj_rot_invers,0);
    3. if place_meeting(x,y+30,obj_rot) position_change(x,y+30,obj_rot_invers,0);
    4. if place_meeting(x,y-30,obj_rot) position_change(x,y-30,obj_rot_invers,0);


    durch dieses Skript ersetzt (argument 0 ist das ursprungsobjekt, argument 1 das neue Objekt), und jetzt wird die blase nicht mehr verändert.

    GML-Quellcode

    1. {
    2. //argument 0... org
    3. //argument 1... new
    4. var offset,i,tmpObj;
    5. offset[0,0] = 30;
    6. offset[0,1] = 0;
    7. offset[1,0] = -30;
    8. offset[1,1] = 0;
    9. offset[2,0] = 0;
    10. offset[2,1] = 30;
    11. offset[3,0] = 0;
    12. offset[3,1] = -30;
    13. for(i=0;i<4;i+=1)
    14. {
    15. if(!place_meeting(x+offset[i,0],y+offset[i,1],argument0)) continue;
    16. TmpObj = instance_nearest(x+offset[i,0],y+offset[i,1],argument0);
    17. with(TmpObj)
    18. {
    19. instance_change(argument1,false);
    20. }
    21. }
    22. }
    Alles anzeigen
    ...
  • Benutzer online 1

    1 Besucher