So. Ich hab das ganze mal in einen Thread gebastelt. Das funktioniert auch, nur is jetzt die nächste Kuriosität aufgetreten.
Ich habe an jedem Entity zwei Attribute für die Beschleunigung: dx und dy.
Diese setze ich per Zufall bei der Kollision mit einem Schläger auf 5*Math.random() (seit neustem, der Source oben stimmt schon nicht mehr). Positive oder negative Werte geben die Richtung an. Das wird auch noch mal per Zufall bestimmt. Nur nicht für die Seite mit dem Schläger. Wär ja doof, wenn der Ball auf den unteren Schläger trifft und dann weiter nach unten fliegt ^^
Auf jeden Fall fliegt der Ball ganz gut, bis zur ersten Kollision. Dann wird er höllisch schnell. Das sieht in meinen Konsolen Ausgaben ungefähr so aus:
Code:
dx: -3.913731282538219
dy: -4.365766551652948
dx: -3.913731282538219
dy: -4.365766551652948
New Position because of collision with HorizontalKiEntity...
Collided with HorizontalKiEntity
Collided
New Position because of collision with HorizontalKiEntity...
Collided with HorizontalKiEntity
Collided
New Position because of collision with HorizontalKiEntity...
Collided with HorizontalKiEntity
Collided
New Position because of collision with HorizontalKiEntity...
Collided with HorizontalKiEntity
dx: -114.76567646488111
dy: 994.1808340303595
Collided
dx: -114.76567646488111
dy: 994.1808340303595
Wenn ich die Kollisionsbestimmung nicht in einem Thread laufen lasse funktioniert alles einwandfrei.
Hat jemand ne Idee?
Lesezeichen