dumme frage Kann man eine Collison mit sprite machen

  • GM 8

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

  • Hi
    Natürlich kann man mit Sprites eine Kollision abfragen.


    Collision events

    Wann immer zwei Instanzen kollidieren (das geschieht, wenn ihre "sprites" überlappen), wird ein "collision event" ausgelöst. Genauer zwei - eins pro Instanz. Die Instanz kann auf dieses Ereignis reagieren. Wähle im Menü aus, bei welchem Objekt du ein Kollisionsereignis definieren willst. Danach platziere hier weitere Aktionen.

    Es gibt Unterschiede was passiert, wenn Instanzen mit soliden bzw. nicht-"soliden" Objekten kollidieren. Zuerst einmal, wenn keine Aktionen im Kollisionsereignis definiert sind, passiert nichts. Die Instanz bewegt sich einfach weiter, auch wenn das andere Objekt "solid" ist. Wenn das Kollisionsereignis Aktionen enthält geschieht folgendes:

    Wenn das andere Objekt "solid" ist, wird die an ihre vorherige Position Instanz (vor der Kollision) zurückgesetzt. Dann erst wird das Ereignis ausgelöst. Anschliessend wird die Instanz an die neue Position bewegt. Wenn das Ereignis beispielsweise die Bewegungsrichtung umkehrt, prallt die Instanz gegen die Wand, ohne anzuhalten. Wenn dann immer noch eine Kollision vorliegt, wird die Instanz an der vorherigen Stelle gehalten. Sie hält effektiv an.

    Wenn das andere Objekt nicht "solid" ist, wird die Instanz nicht zurückgesetzt. Das Ereignis wird einfach ausgelöst mit der Instanz an der aktuellen Position. Auch gibt es keine 2. Kollissionsabfrage. Wenn du darüber nachdenkst, ist es die logische Konsequenz, die eintreten sollte. Weil das andere Objekt ja nicht "solid" ist, kann es einfach durchquert werden. Das Ereignis informiert dich also darüber, dass dieses gerade geschehen ist.

    Es gibt viele Anwendungsmöglichkeiten für das "collision event". Instanzen können es verwenden, um von Wänden abzuprallen. Du kannst es einsetzen, um Objekte zu vernichten, wenn sie z. B. von einer Kugel getroffen werden - und so weiter.



    Das stammt aus dem Handbuch zu Game Maker.
    Du kannst das auch hier nachlesen auf der Seite
    gamemaker.info/de/manual

    Gruss Drachen
  • du könntest:

    collision_rectangle()

    usw. benutzen :

    Spoiler anzeigen

    collision_point(x,y,obj,prec,notme) Diese Funktion prüft, ob an Punkt (x,y) eine Kollision mit Instanzen des Objektes obj vorliegt.
    collision_rectangle(x1,y1,x2,y2,obj,prec,notme) Diese Funktion prüft, ob eine Kollision zwischen dem (gefüllten) Rechteck mit den angegebenen gegenüberliegenden Ecken und Instanzen des Objektes obj vorliegt. Beispielsweise kannst du sie verwenden, um zu prüfen, ob ein Gebiet frei von Hindernissen ist.
    collision_circle(xc,yc,radius,obj,prec,notme)Diese Funktion prüft, ob eine Kollision zwischen dem (gefüllten) Kreis mit Kreismittelpunkt an Position (xc,yc) mit gegebenem Radius und Instanzen des Objektes obj vorliegt. Beispielsweise kannst du damit überprüfen, ob ein Objekt dicht an einer bestimmten Stelle liegt.
    collision_ellipse(x1,y1,x2,y2,obj,prec,notme) Diese Funktion prüft, ob eine Kollision zwischen der (gefüllten) Ellipse mit den angegebenen gegenüberliegenden Ecken und Instanzen des Objektes obj besteht.
    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. Dies ist eine mächtige Funktion. Du kannst sie beispielsweise benutzen, um zu prüfen, ob eine Instanz eine andere Instanz "sehen" kann, indem Du prüfst, ob das Liniensegment zwischen den beiden eine Wand schneidet.
  • zwar nicht so ganz leicht aber du könntest dir eine variable machen die
    die koordinaten angibt wo das sprite gedrawt wird und dann kannst du z.b.
    xx ist die x koordinate und yy ist die y koordinate
    if place_meeting(xx,yy,object)
    wenn du aber nur eine sprite_collision haben willst dann wird es schwerer aber nicht unschaffbar
    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
  • Naja hat man ein object kann man ja immer die kollsion abfragen zwischen den beiden, doch ich möchte gerne einen sprite von einen Object verfolgen und wenn beide aufeinadertreffen sll halt was passieren.
    in diesen fall muss der sprite ein sprite bleiben er gehört zu keien Object.

    Ich draw halt was und möchte das es wie ein Object behandelt wird doch wie?
  • dann mach eine variable die die koordinaten vom sprite beinhalten z.B. xx,yy,
    das sprite heißt sprite:
    im object der collision

    GML-Quellcode

    1. s_spr=sprite_index
    2. sprite_index=sprite
    3. if point_distance(xx,yy,x,y,)<sprite_width or point_distance(xx,yy,x,y,)<sprite_hight //collision

    aber ich glaube einfacher gehts so:

    GML-Quellcode

    1. if place_meeting(xx,yy,id)
    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
  • Danke das habe ich zwar auch schon gemacht doch dann müsste ich die Var von gut 100obj prüfen das ist zu doll. Gibt es denn vieleicht irgend einen weg ein OBJ perfect über einen Sprite gedrawtes sprite zu tun. Ich habe das im moment mit jump versucht scheint aber nicht zu gehen der sprite des neuen obj folgt doch collisionen und so wollen einfach nicht.

    Bestimmt ist eine ganz eifache sache für euch doch leider habe ich dieses problem nie ganz verstanden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bin Doch Neu ()