Bounce - Probleme

  • Bounce - Problem

    Hallo nochmal!

    Sorry, dass ich wahrscheinlich nerve, aber ich krieg das einfach nicht hin!
    Hier also nochmal das Problem so genau, wie ich es bisher lokalisieren konnte:

    Bei dem Spiel handelt es sich um eine "Breakout" - Variante. Also ein Ball (ball_normal), der gegen steine prallen soll und diese dann entweder zerstören oder einfach davon abprallen soll.
    Der Ball ist zur Zeit NICHT solid (wurde aber auch schon als solid probiert), alle Steine sind solid.
    Jetzt kommt es immer und immer wieder vor, dass der Ball sich "einklemmt", d. h. obwohl er abprallen könnte (was er normalerweise auch tut) fixiert er sich an einem abprall-Punkt und verhält sich so, als ob er immer und immer wieder hin- und herprallen würde.
    Lokalisieren konnte ich bisher nur, dass er das NUR an soliden Steinen (stone_solid) tut, die sich bei Kontakt mit dem Ball nicht zerstören sollen, sondern nur den Ball abprallen lassen.

    Habe meines wissens nach schon alle Varianten ausprobiert (ball_normal als solid, anstatt von "bounce against solid objects" auf "reverse horizontal/vertikal direction" gestellt, bei 0°, 90°, 180°, 360° den abprall-Winkel geändert und und und...) aber scheinbar hilft nichts davon!


    Kann mir bitte jemand helfen, denn ansonsten kann ich das gesamte Spiel in den Müll-Eimer werfen... ;(
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • RE: Bounce - Problem

    das liegt warscheinlich an der hohen geschwindigkeit. maximan 14 pixel pro step in eine richtung, das heißt du musst auch 14 pixel vor dem ball eine abfrag machen, wen diese nicht richig ausfällt kan es sein das der ball in die andere instance "hinein" wandert. versuche etwas wie

    GML-Quellcode

    1. in = instance_nearest(x,y,stone_solid);
    2. if distance_to_point(in.x,in.y) <= 0 then {
    3. x -= cos(degtorad(direction))*(speed+1);
    4. y -= sin(degtorad(direction))*(speed+1);
    5. }
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Bounce - Problem

    Danke Nobody-86 für deine schnelle Reaktion!

    Habe jetzt folgendes in das Step-Event des Balls eingebaut:

    GML-Quellcode

    1. if instance_exists(stone_solid) then {
    2. in = instance_nearest(x,y,stone_solid);
    3. if distance_to_point(in.x,in.y) <= 0 then {
    4. x -= cos(degtorad(direction))*(speed+1);
    5. y -= sin(degtorad(direction))*(speed+1); }}


    das selbe auch für die "wall_vertical".
    Beim testen blieb der Ball aber trotzdem wieder stecken: zwischen "wall_vertical" und "stone_solid" kam es wieder zu dem bekannten Effekt, der "ball_normal" hatte da erst eine Geschwindigkeit von 6,8; beim zweiten steckenbleiben sogar erst 5,9.

    Um ehrlich zu sein versteh ich auch den Code nicht ganz:
    zuerst wird geprüft, ob der Ball zu nahe an das Objekt kommt, soweit ist alles klar, die "x -=cos(degtorad..." und "y -=sin(degtorad..." - Abschnitte sind mir aber irgendwie zu hoch! Wofür steht "degtorad"?
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • der gm bearbeitet sind() und cos() (du weißt was sinus und cosinus ist oder?) nur im bodenmaß (rad) und nicht in winkeln (deg) der befehl degtorad(x) wandelt eine gradzahl in eine bogenmaßzahl um. (weißt du was bogenmaß ist?)
    der code sollte eigentlich bewirken das der ball wen er im andern object stecken bleibt etwas zurück gesetzt wird, und dan eine korrekte kollision durchführen sollte.
    mache das gleiche doch nochmal mit dem wall_vertical. (also nicht ersetzen, sondern 2 codes machen). vieleichtgehts dan.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • thx für die Erklärung Nobody-86, jetzt leuchtet das ein!

    Aber die Idee mit der "wall_vertical" hatte ich schon
    das selbe auch für die "wall_vertical"

    , tut aber nicht so, wie es soll, der Ball verklemmt sich trotzdem.

    Soll ich dir die gm6 (5,01MB) mal zusenden, vielleicht siehst du ja irgendwas?
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Ich möchte einfach nicht aufgeben!

    Das Problem mit dem abprallen an soliden Steinen existiert immer noch. Der Ball klemmt sich ein und nix geht mehr...
    Falls mir irgendjemand helfen kann hier ist der Link dazu:
    (5MB gross!)

    klick mich!


    Das Problem kommt erst ab Level 6 ("Take it easy!"), da dort zum ersten mal solide Steine eingesetzt werden. Um schneller dorthin zu kommen hab ich die Taste "a" mit Room up belegt, so dass man sofort in den nächsten Raum springen kann. Falls die Leben bis zur Festklemm-Position ausgehen sollten wurde "s" mit 1 Leben dazu belegt.

    Wäre echt super, wenn mir jemand helfen könnte, ist zwar ein primitiver Breakout-Clone, aber für mich wichtig um die Funktionen zu lernen...

    Danke im voraus!
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!