2017-03-19 2 views
2

Gibt es eine Möglichkeit zu erkennen, ob eine Koordinate innerhalb der Radius eines Kreises in Verarbeitung ist? Wenn in meinem Programm das Sprite des Spielers 2 das Sprite des Spielers 1 überlappt und "erfasst", möchte ich, dass das Spiel endet (wenn also das Sprite von Spieler1 im Kreis von Spieler 2 ist). * Hinweis: mein Spieler 1 Sprite ist ziemlich klein, und die Koordinate, die seine Position definiert, sollte für diese Überlappungserkennung ausreichen.Innerhalb eines Kreisradius in Bearbeitung

Vielen Dank!

Antwort

2

Sie können nur die dist()-Funktion verwenden.

Ermitteln Sie den Abstand zwischen dem Punkt und der Mitte des Kreises. Wenn dieser Abstand kleiner als der Radius des Kreises ist, befindet sich der Punkt innerhalb des Kreises.

Ich würde empfehlen, einige Beispiele zu zeichnen, um zu sehen, warum dies sinnvoll ist.

Weitere Informationen finden Sie unter the reference.

0

Obwohl ich mit der Verarbeitung nicht vertraut bin, ist es ein mathematisches Problem und kann mittels Pythagoras gelöst werden:

float cx; //center x of circle 
float cy; //center y of circle 
float cr; //radius of circle 

float x; //tested x coordinate 
float y; //tested y coordinate 

(sqrt(pow(x-cx, 2) + pow(y-cy, 2)) < cr) // must evaluate to true for a hit-test 
Verwandte Themen