Physik-engine für Gamemaker?

  • Physik-engine für Gamemaker?

    Ich versuche mich gerade daran, ein Skript zu schreiben, das es es einem Objekt (kreisförmig) erlaubt Kollisionen richtig zu erkennen und entsprechend darauf zu reagieren.
    Z.B. soll es über kleine, solide Objekte hinwegrollen, auf schrägen Flächen nach oben rollen und den Schwung weiter mitzunehmen usw... Kurz gesagt soll es sich im Idealfall so wie eine Kugel in einem Hindernisslauf verhalten.
    Bisher hab ich einige Stunden herumexperimentiert und jetzt ist das herausgekommen:


    GML-Quellcode

    1. //Collision event
    2. if (!place_free(x,y+vspeed)){
    3. move_contact_solid(direction,speed);
    4. vspeed=0;
    5. }
    6. if(!place_free(x+hspeed,y)){
    7. old_speed=speed;
    8. ydiff = -1;
    9. xdiff = -1;
    10. for (j=abs(hspeed);j>=1;j-=1){
    11. for (i=0;i<=max(3,ceil(j*1.5));i+=1){
    12. if (place_free(x+j*sign(hspeed),y-i)){
    13. ydiff=-i;
    14. xdiff=j*sign(hspeed);
    15. break;
    16. }
    17. }
    18. if (ydiff != -1)
    19. break;
    20. }
    21. if (ydiff != -1){
    22. vspeed=ydiff;
    23. hspeed=xdiff;
    24. new_speed=sqrt(vspeed*vspeed+hspeed*hspeed);
    25. quot=old_speed/new_speed;
    26. vspeed*=quot;
    27. hspeed*=quot;
    28. x+=hspeed;
    29. y+=vspeed;
    30. } else {
    31. move_contact_solid(direction,speed);
    32. hspeed=0;
    33. }
    34. }
    Alles anzeigen


    Ich will euch nicht antun euch durch dieses unkommentierte Skript hindurchzuquälen, sondern zeige es nur her damit ihr wenigstens an dem Schleifenteil seht wie verrückte Dinge meines Wissens nach für so eine Aktion notwendig sind.
    Und da es leider trotz allen Anstrengungen noch immer nicht so funktioniert wie ich es mir vorstelle, hab ich gehofft dass es irgendwen gibt der schon mal was ähnliches probiert hat oder sonst irgendwo eine kleine Physikengine für solche Zwecke gefunden hat.
    Für jede Hilfe und Anregung wäre ich sehr dankbar!
    Im Anhang findet ihr die Sourcedatei falls wer ausprobieren will wie gut es bisher funktioniert.
    Dateien
    Aktuelles Projekt: Katamari

    @interceptor: Tortoise ftw ^^
  • RE: Physik-engine für Gamemaker?

    Original von fantscher
    schau dich mal auf der offiziellen community um... da gibts physikengines als dll.... newton, ode. da findest du sicher das richtige
    Jo, da hab ich letztens eine sehr gute gefunden... hab nur den Namen vergessen :D.
  • RE: Physik-engine für Gamemaker?

    O_O Da bedank ich mich mal herzlichst :)
    Ich hab selber ein wenig gesucht und bin nur auf die Ackack-engine für Jump'n'runs gestoßen. Da bin ich gerade dabei den code zu kürzen und etwas anzupassen, aber das wird jetzt hoffentlich nicht mehr nötig 8)
    Allein die Screenshots auf der Seite sprechen für sich...
    Aktuelles Projekt: Katamari

    @interceptor: Tortoise ftw ^^