Hallo,
Ich bin gerade dabei meinem Breakoutklon den letzten Schliff zu geben und stehe nun vor dem Problem meine etwas merkwürdige Kollisionserkennung zu optimieren^^
Das Problem: Wie erkenne ich, in welche Richtung der Ball abgelenkt werden muss? Wer eine geniale Lösung so herauszaubern kann, kann sich die Erklärung was ich bisher mache, bitte sparen (verwirrt nur^^
)
Meine bisherige Lösung sieht so aus, dass ich alle Blöcke durchlaufe und bei dem ersten, bei dem ein "intersects" mit dem Ball true liefert, erst teste, ob beide Ecken des Quadrats, das den Ball umgibt, in einem Block liegen. Dafür habe ich dann 4 verschiedene Abfragen, die 4 verschiedene Abprallverhalten für die 4 Seiten eines Blocks umsetzen. Das Funktioniert erst einmal gut. (Es sei denn ein anderer, weniger gut passender Block wird zuerst geprüuft, siehe weiter unten).
Ist dies nicht der Fall, prüfe ich, ob die vorherige Position darauf schließen lässt, ob der Ball zB von links kommt und nicht von unten (für den Fall, dass nur die rechte, obere Ecke im Block liegt. Siehe Bild "erkennung.png").. Das funktioniert leider nicht, wenn der Ball sehr genau die Ecke trifft, dann habe ich das so gelöst, dass der Ball seine Bahn zurückfliegt, was bei einem Treffer auf eine Blockwand sehr mies wirkt (siehe Bild "faelle.png" rechte Seite)^^ Außerdem wird auf meine Art auch oft ein Block weggemacht, der praktisch gar nicht erreichbar ist, aber bei dem eben zuerst mit .insects() geprüft wird, ob eine Überschneidung vorliegt (siehe BIld "faelle.png" linke Seite)
Eine zweite Frage: Kann es sein, dass AudioClip.play() nicht immer gaaanz zuverlässig die Töne abspielt?
Ich bin gerade dabei meinem Breakoutklon den letzten Schliff zu geben und stehe nun vor dem Problem meine etwas merkwürdige Kollisionserkennung zu optimieren^^
Das Problem: Wie erkenne ich, in welche Richtung der Ball abgelenkt werden muss? Wer eine geniale Lösung so herauszaubern kann, kann sich die Erklärung was ich bisher mache, bitte sparen (verwirrt nur^^
Meine bisherige Lösung sieht so aus, dass ich alle Blöcke durchlaufe und bei dem ersten, bei dem ein "intersects" mit dem Ball true liefert, erst teste, ob beide Ecken des Quadrats, das den Ball umgibt, in einem Block liegen. Dafür habe ich dann 4 verschiedene Abfragen, die 4 verschiedene Abprallverhalten für die 4 Seiten eines Blocks umsetzen. Das Funktioniert erst einmal gut. (Es sei denn ein anderer, weniger gut passender Block wird zuerst geprüuft, siehe weiter unten).
Ist dies nicht der Fall, prüfe ich, ob die vorherige Position darauf schließen lässt, ob der Ball zB von links kommt und nicht von unten (für den Fall, dass nur die rechte, obere Ecke im Block liegt. Siehe Bild "erkennung.png").. Das funktioniert leider nicht, wenn der Ball sehr genau die Ecke trifft, dann habe ich das so gelöst, dass der Ball seine Bahn zurückfliegt, was bei einem Treffer auf eine Blockwand sehr mies wirkt (siehe Bild "faelle.png" rechte Seite)^^ Außerdem wird auf meine Art auch oft ein Block weggemacht, der praktisch gar nicht erreichbar ist, aber bei dem eben zuerst mit .insects() geprüft wird, ob eine Überschneidung vorliegt (siehe BIld "faelle.png" linke Seite)
Eine zweite Frage: Kann es sein, dass AudioClip.play() nicht immer gaaanz zuverlässig die Töne abspielt?