kollisionsabfrage in gml

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

  • kollisionsabfrage in gml

    Hallo Ihr!

    Ich hab ein folgenschweres problem,welches eure hilfe bedarf.
    also ich sitze immer noch an meinem breakout clone und bräuchte mal nen gml kollisionsscript da ich das nicht peile wie das geht.
    und zwar wenn der ball der einen stein trifft soll er zerstört werden.
    bei mir ist das mit dem drag un drop zu ungenau mal bounced er dagegen mal geht er durch,der stein wird zwar zerstört aber ist trotzdem nicht befriedigend.
    die hauptproblematik liegt nämlich darin das der ball manchmal auch durch die seitenwand abhaut :-(.
    also wäre nett wenn mir jemand mit nem kurzen script aushilft .

    Danke

    NIR
    Zu Alt....:-)

    ******************** N O T H I N G I S R E A L *******************
  • Das der Ball durch Objekte hindurch geht kann daran liegen das deine Kollisionsobjekte zu dünn sind und der Ball zu schnell. Denn selbst mir Speed bewegt sich der Ball mit x Pixel/Sekunde deshalb kann es passieren das Objekte sozusagen übersprungen werden. was du machen kannst ist den Speed herunter zustellen und um nicht an geschwinidigkeit zu verlieren könnte man den Roomspeed hoch stellen...
  • hmm die idee ist nicht schlecht.
    aber
    1. der ball steigert seine geschwindigkeit ,das problem besteht weiterhin.
    2.bei precise collision geht ja ,aber dann fliegt der ball manchmal horizontal und kommt nicht mehr runter :(
    da ich keine richtigen steine habe sondern noten. sorry vergass das das zu erwähnen.

    aber was verstehst du darunter das die objekte zu dünn sind?
    kannste mir das mal erklären?

    Danke

    NIR
    Zu Alt....:-)

    ******************** N O T H I N G I S R E A L *******************
  • Steiger einfach nicht die Ballgeschwindigkeit, sondern die des Rooms. Wenn der Ball zum Beispiel eine Geschwindigkeit von 10 hat, heisst das er legt pro Step 10 pixel zurück. Diese übersprignt er praktisch. Für das menschliche Auge sieht das dann flüssig aus. Aber es wird exakt berechnet. Das heisst wenn ein Objekt genau zwischen diesen 10 Pixels liegt, wird auch keine Kollision berechnet, da ja keine "Berührung" vorliegt. Also könntest du deinen Noten auch eine Maske geben, die etwas grösser ist. Sie sollten mindestens so breit wie die maximale Ballgeschwindigkeit sein, dann gibts auch keine Probleme.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Original von NIR
    1. der ball steigert seine geschwindigkeit ,das problem besteht weiterhin.

    Liegt vielleicht daran das du bei der Speed angabe "relatie" an geschalten hast.
    Original von NIR
    2.bei precise collision geht ja ,aber dann fliegt der ball manchmal horizontal und kommt nicht mehr runter :(

    Vielleicht kommt er falsch auf die Wand auf...
    Original von NIR
    aber was verstehst du darunter das die objekte zu dünn sind?
    kannste mir das mal erklären?

    Die Objekte bzw. die Sprites die Ihr als Maske dienen haben Pixel... die Pixel diesen als eine Art größenangabe des Bildes... je größer die die Objekte also machst um so mehr angriffsfläche bieten sie. So kann es passieren das der Ball auch in den Wänden (Kollisionsobjekten) erst kollisioniert wird (erst abbrallt).
  • hallo Blank!
    1.speed ist nicht auf relative.
    2.die wand ist ein balken ,das problem besteht auch bei den Steien(noten)
    ist halt nen ganz normales breakout spiel nur mit noten.

    ich hab schon versucht mich mit dem gml zu beschäftigen,krieg aber irgnetwie nicht raus wie das geht.
    wäre also jemand so mir auf die sprünge zu helfen,ich bräuchte doch nur nen kleines script mit collisionsabfage und bounce against solid oder so.

    Danke

    NIR

    P.S.gibts es eigentlich ne übersicht aller befehle mit deutscher erklärung?
    Zu Alt....:-)

    ******************** N O T H I N G I S R E A L *******************

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

  • Orginal von NIR
    ich hab schon versucht mich mit dem gml zu beschäftigen,krieg aber irgnetwie nicht raus wie das geht.

    GML zu lernen ist garnicht so schwer. Du solltest nur wissen ob du es auch wirklich willst.
    Orginal von NIR
    P.S.gibts es eigentlich ne übersicht aller befehle mit deutscher erklärung?

    Eine Deutsche Hilfe gibt es schon länger. KLICK!

    Bitte schick mal das Spiel (die *.gm6-Datei) in ner PN oder schreib den Link hier ins Thread. Vielleicht kann ich dir so helfen.

    EDIT: Zum Hochladen kannst du z.B. rapidshare.de verwenden.

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

  • Du hast den steinwand bestimmt nicht solid gemacht. Wenn du die solid stellst dann funktioniert das auch in D&D :)
    eventuell kannst du deine Sprite Optionen noch mal durchgehen ( full image, oder automatic ) eventuell kannste da ja auch deine eigenen Werte eingeben ^^.
    Achja eine wand muss auf jedenfall solid... kannst dir merken, alles was seine position nicht ändert ist meistens solid.... :)
  • Hallo trgirl.
    doch doch die steine (noten)sind auf solid gesetzt und die wände auch.
    ich habe auch mit den optionen rumgetestet.daran liegst nicht.

    ich hab auch schon in der hilfe nachgeschaut und unter den script befehlen,nur weiß ich nicht wie man das ganzen schreibt im zusammenhang das es einen funktionierendes script gibt mit collisionsabfrage und bounce


    evtl. hat ja doch jemand nen script für mich was ich mal testen kann.
    sollte wie das collisonsevent sein mit bounce against solid objects.
    und vieleicht gibts ja irgentwo noch nen brauchbares tut für gml in der form das da steht wie die die befehle benutzt werden ich konnte bis jetzt nichts in der form finden.

    danke

    NIR
    Dateien
    Zu Alt....:-)

    ******************** N O T H I N G I S R E A L *******************

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von NIR ()

  • Ich konnte in dem Code nicht falsches finden. Habe zwar gesehen das du die Geschwindgkeit des Balles pro Step erhöhst denoch bleibt er wegen deiner if Frage immer unter 8.
    Aber durch das Spielen ist mir aufgefallen was du gemeint haben könntest. Es ist mir einige male Passiert das der Ball eine Note traf und diese zerstörte und trotzdem so weiter flog wie er auf die Note zugegangen ist. Dies ist nicht unbedingt falsch. Ich würde das sogar so lassen...
    Aber Ursache des ganzen ist das bei der Kollision der Ball zu weit in der Note ist und vor dem löschen der Note nochmal Kollidiert... das heißt er prallt zwei mal in der Note warscheinlich ab bevor diese Verschwinden kann.
  • kann man das mit dem 2 mal kollidieren den nicht besser machen das das nicht passiert.
    ich hab nämlich immer noch das problem der unsicherheit.
    will heißen in seltenen fällen und nicht auf jedem rechner passiert es das der ball durch die seitenwand abhaut.
    ich hab eine funktion eingebaut das der ball wiederkommt. aber ich möchte es doch gerne perfekt haben.
    eine prec. collision ist leider aufgrund der form der noten nicht möglich da der ball u.U. dann horizontal läuft und nicht mehr runterkommt.
    evtl könnte ma die mit einer gravittation umgehen macht aber in meine augen nicht viel sinn.

    danke

    NIR
    Zu Alt....:-)

    ******************** N O T H I N G I S R E A L *******************
  • Komisch eigenlich müsste das Spiel auf jedem Rechner gleich laufen... außer die Geschwindigkeit und einige andere kleinigkeiten die die restliche Hardware betreffen (Grafikkarte usw.)
    Orginal von NIR
    eine prec. collision ist leider aufgrund der form der noten nicht möglich da der ball u.U. dann horizontal läuft und nicht mehr runterkommt.

    Hast du es schonmal mit Mask(en) versucht? Mach einen rechteckigen Sprite (ein farbton) der genau so groß ist wie die Noten und stelle dann bei jeder Note die Mask(e) ein. Das machst du folgender Maßen... Öffne das bestimmte Objekt und siehe in dem eben göffneten Fenster link runter über den Ok Knopf. Dort wähle die Mask aus die du verwenden möchtest (also das Rechteck das du vorher gemacht hast...).

    Wenn du das gemacht hast beginnt die Kollison schon da wo die Mask ist... Probiere es einmal aus vielleicht hilft dir das... du kannst ja die Form und das aussehen der Mask immer noch verändern...
  • jo die idee hatte ich schon, nur bin im moment etwas im stress. muß noch was einsprechen für nen radio spiel.

    aber ich danke dir erstmal für deine hilfe ,das mir der maske hat gut geholfen.
    habs hingekriegt.

    Danke

    NIR
    Zu Alt....:-)

    ******************** N O T H I N G I S R E A L *******************