![]() |
Re: 2D Game: Ball an einem Arc abprallen lassen (physikalisc
ich hab irgendwann mal sowas ähnliches geschrieben, ich such gleich link
edit: grad gefunden, ist nur apprall an ner geraden... Breakit :p naja vieleicht hilfts dir: ![]()
Delphi-Quellcode:
Mitte := Sprite.X + Sprite.Width/2; Winkel:= round(Winkel + (x-Mitte)*5); xDiff := -cos(Winkel*Pi/(random(50)+130)) * Speed; Y := Spielfeld.y - 56; |
Re: 2D Game: Ball an einem Arc abprallen lassen (physikalisc
Naja, das Abprallen vom Prinzip ist ja nicht so schwer, doch mit den bewegten Schlägern dazu ist etwas schwer...
|
Re: 2D Game: Ball an einem Arc abprallen lassen (physikalisc
Zitat:
|
Re: 2D Game: Ball an einem Arc abprallen lassen (physikalisc
Winkelberechnung, Geschwindigkeit anpassen und wenn man praktisch auf den liegenden Ball draufspringt, dass der Ball dann nicht im "Schläger" ist.
|
Re: 2D Game: Ball an einem Arc abprallen lassen (physikalisc
Am einfachsten ist es, den Ball bei einer Kollision einfach solange "rückwärts" zubewegen, bis keine Kollision mehr stattfindet. amit bekommst du nur ein Problem, wenn du mit dem Blob auf den Ball springst. Dann hängt es davon ab, welches Verhalten du haben möchtest: Die erste Möglichkeit wäre, dass der Blob auf den Ball liegen bleibt. In diesem Falle müsstest du einfach das gleiche machen, nur mit dem Blob (oder gleich mit allen Objekten im Spiel, das hätte wohl am wenigstens Nebeneffekte). Wenn es so sein soll wie im verlinkten Spiel, würde ich hingegen einfach den Winkel zwischen den Mittelpunkten der Objekte ausrechnen, und den Ball dann in diese Richtung herausschieben.
Was die Geschwindigkeit angeht, ist mir nicht ganz klar, was du meinst. Meinst du die Übertragung des Bewegungsimpulses vom Blob auf den Ball? Wenn ein Objekt direkt frontal auf ein anderes Objekt gleicher Masse aufprallt, geht der Impuls 1:1 auf das andere Objekt über, d.h. du musst nur die Geschwindigkeit gleichsetzen, und anschließend das andere Objekt stoppen. Dieses Verhalten kennst du vom ![]() ![]() Wo bei der Winkelberechnung dein Problem liegt, müsstest du genauer erläutern. Glaskugel: Die Funktionen sin(), cos(), tan() arctan() bzw. arctan2() (aus der Unit Math) sollten dir helfen :glaskugel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz