2017-03-16 3 views
0

Ich mache ein 2D-Spiel in JavaFX und beim Erkennen von Kollisionen bekomme ich ziemlich ungenaue Ergebnisse, da das Player-Sprite als Füllung eines Rechtecks ​​gesetzt wird und daher nicht die beabsichtigten Grenzen hat. Gibt es eine Möglichkeit, meine eigene Form zu entwickeln, um so genau wie möglich zu sein?Benutzerdefinierte Form machen JavaFX

Eine andere Idee, die ich hatte, ist zu überprüfen, ob das Pixel, das kollidierte, transparent war und dann das Spiel nicht beendete, wenn es war. Kennt jemand einen Weg, wie ich die Koordinaten des kollidierenden Pixels bekommen kann, damit ich von dort den PixelReader überprüfen kann?

Wenn jemand einen besseren Weg kennt, lass es mich wissen!

Danke, Ethan

Antwort

0

Es gibt verschiedene Wege, dies zu tun. Hier ist eine Weise, die ich mit gutem Erfolg benutzt habe. Ich würde Hit-Boxen machen, die selbst Rechtecke waren. Dann würde ich während der Kollisionserkennung durch alle Trefferboxen iterieren, um zu sehen, ob sie mit den Trefferboxen des fliegenden Projektils kollidierten.

Dies ermöglicht Ihnen, komplexe Formen mit kleineren Rechtecken zu füllen. Zum Beispiel hätte eine Ebene ein langes horizontales Rechteck und ein kleineres Rechteck, das sich in der Mitte kreuzt.

Derzeit verwende ich libGDX. In libGDX verwende ich ihr Polygon-Objekt wie hier angegeben. https://stackoverflow.com/a/28540488/1490322 Ich habe keine ähnliche Funktionalität in JavaFX gesehen, aber es wäre nicht schwer zu kopieren, was libGDX in JavaFX-Code macht ... ihr Code ist Open Source.