Mouse Maze - Objekt-Collision per Mouse abfragen

  • GM 7

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

  • Mouse Maze - Objekt-Collision per Mouse abfragen

    Tach auch ich hab mich mal wieder mit GM beschäftigt.

    Also ich mache gerade ein "Mouse Maze". Wer´s nicht kennt, man hat als Maus ein Objekt das man durch ein Labyrinth bewegen muss.

    Ich hab aber nicht die Aktion genommen, wo die Maus in ein Sprite gewechselt wird, sondern lasse ein Objekt immer zur Maus-Position jumpen. Dies ist aber immer pro Step. Klingt schnell, aber wenn ich die Maus über die "Labirinth-Mauern" ganz schnell bewege, kollidiert das Objekt nicht mehr mit der Wand.

    Also hab ich die Frage, wie ich abfragen kann, ob bei der aktuellen Maus-Position irgendein Objekt ist.

    Danke

    Gruß Jan

    PS: Yuhu ich hab jez Pro (Umsonst, aber fragt nicht wie ;))
  • Mit instance_position(x,y,obj_?)
    kannst du das checken. Wenn keine Instanz des Types obj_?
    da ist, wird noone zurückgegeben, ansonsten die ID des obersten
    Objektes.
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Überprüf doch einfach, ob auf der Linie zwischen (x,y) und (xprevious,yprevious) 'ne Kollision mit einen Wandobjekt vorliegt. ¬¬
    collision_line(x1,y1,x2,y2,obj,prec,notme) Diese Funktion prüft, ob eine Kollision zwischen dem Liniensegment von (x1,y1) zu (x2,y2) und Instanzen des Objektes obj vorliegt.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • aber wenn er dann gerade noch die wand berührt, wird das mit collision_line nicht gemerkt.
    so funktioniert es genauer, verbraucht aber viel mehr leistung:
    mach n script z.b. scr_collision_ext:

    GML-Quellcode

    1. counter=0
    2. do
    3. {
    4. counter+=1
    5. } until place_meeting(x+legthdir_x(counter,direction-180),y+legthdir_y(counter,direction-180),solid)||counter=speed
    6. if place_meeting(x+legthdir_x(counter,direction-180),y+legthdir_y(counter,direction-180),solid) return true
    7. else return false


    und dann im step:

    GML-Quellcode

    1. if scr_collision_ext
    2. {
    3. .
    4. .
    5. .
    6. }