Einmalige Collision

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

  • Einmalige Collision

    Ich hab ein Problem, welches sehr wichtig für die Entscheidungen in meinem neuen Spiel sind. Ich möchte nämlich, dass bei jeder Collision mit dem Ball die global.spadv1 bzw. global.spadv2 variable um 1 verringert wird. Nun bleibt der Ball an dem Schläger hängen, deswegen werden manchmal sogar bis zu 20 oder mehr Punkte abgezogen werden. Das Problem liegt jetzt dabei, dass der Ball sofort nach der Collision mit dem D'D Symbol "Bounce Against Objects" die Richtung ändern soll, so dass nur ein Punkt abgezogen wird. Mit einer Mask hatte ich es auch schon ausprobiert, gebracht hat es allerdings nichts.
    :) :( ;) :P 8) :D ;( :rolleyes: :huh: :S X( 8| ?( :| :thumbdown: :thumbsup: :thumbup: 8o :pinch: :sleeping: :wacko: :whistling: :evil: ^^ :heul: :para:
  • eine maske ist auf jeden fall zu empfehlen, auch wen es keinen offensichtlichen vorteil bringt (manchmal ist ein pixel entscheident).

    dan könntest du den ball auch noch etwas vom schläger wegschieben (2-4 pixel sind kaum zu sehen) machen könntest du das evtl mit vollgendem befehl:

    GML-Quellcode

    1. x += lengthdir_x(leng,dir);


    hoffe das hilft dir weiter.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • aber nochmal: was bringt das dann für mein spiel? aber ansonsten muss ich das doch für jede eventualität selber coden. und da es 359 directions gibt....hmm... oder hab ich jetzt was falsch verstanden?

    edIT:

    Was ich vergessen hab zu erwähnen:
    Der Schläger lässt sich auch um 30 Grad, bzw. 330 Grad drehen. Und nurr wenn der Schläger so schief steht und der Ball dann da rauf trifft, bleibt der hängen. Mein Schläger ist aber schon wie ein geometrisches Objekt

    edIT:

    Um mein Object zu drehen habe ich nicht instance_change(), sondern image_angle() genommen. Meint ihr, dass das besser wäre wenn ich lieber das Object wechseln würde, um zu einer genaueren Collision zu kommen?
    :) :( ;) :P 8) :D ;( :rolleyes: :huh: :S X( 8| ?( :| :thumbdown: :thumbsup: :thumbup: 8o :pinch: :sleeping: :wacko: :whistling: :evil: ^^ :heul: :para:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Das Tier ()

  • also der image_angle ist auf jeden fall besser.

    du musst auch nicht 359 verschiedene machen, es geht etwa so:

    GML-Quellcode

    1. dir = point_direction(schläger.x,schläger.y,ball.x,ball.y);
    2. if point_distance(schläger.x,schläger.y,ball.x,ball.y) < 16 { //nimm deinen wert
    3. ball.x -= lengthdir_x(8,dir);
    4. ball.y -= lengthdir_y(8,dir);
    5. ball.direction = //oder halt deinn bounce befehl
    6. }
    möglicerweise ist es besser den bounce oder direction befehl vor dem versetzen (lengthdir) aufzurufen, mussthalt ausprobieren)
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • omg, das is mir zu hoch ^^
    aber point_direction..usw., da fliegt der ball doch dahin, wo ich gerade mit dem Schläger_obj hinsteuere.

    und warum ist dort auf einmal eine point_distance? heißt das, dass das ausgeführt wird, wenn der Ball in Nähe 16 des Schlägers ist?

    o man, ich weiß ich bin seeeehr schwierig xD
    danke für deine geduld, bin noch ein GML n00b, sowas überfordert mich noch ^^

    edIT: Hier nochmal ein genaues Foto der Problemzone:
    [/URL][/IMG]
    also, der Ball bleibt an dem Schläger hängen, weswegen sehr viele Punkte abgezogen werden.
    :) :( ;) :P 8) :D ;( :rolleyes: :huh: :S X( 8| ?( :| :thumbdown: :thumbsup: :thumbup: 8o :pinch: :sleeping: :wacko: :whistling: :evil: ^^ :heul: :para:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Das Tier ()

  • Benutzer online 1

    1 Besucher