Hab da mal ne Frage:
Gibt es vllt eine Methode/Klasse
die eine Hilfestellung anbieten um die Distanz zwischen zwei Blöcken/Spielern zu errechnen?
lg Sandwich
Ja, dafür gibt es die Locations der Spieler/Blöcke (via getLocation()).
Die Locations haben zwei Funktionen, die dir hier helfen können.
Code:
distance(Location otherLocation)
distanceSquared(Location otherLocation)
Nun, was ist der Unterschied?
distance() ist ziemlich offensichtlich: Es gibt dir die genaue Distanz zurück.
distanceSquared() dagegen, gibt dir die Distanz im Quadrat (d.h. Distanz * Distanz) zurück.
Das klingt zwar zunächst ziemlich umständlich, dafür ist die distanceSquared() Methode um ein kleines bisschen schneller performanceweise als distance(), was einfach daran liegt, dass die distance() Methode zur Berechnung der genauen Distanz noch zusätzlich eine Quadratwurzelfunktion benutzt, die vergleichsweise ziemlich lahm ist.^^
Worauf ich hinaus will:
Wann immer du die Distanz genau brauchst, musst du natürlich distance() benutzen, zum Beispiel wenn du einem Spieler EnderGames-like die Distanz zum nächsten Spieler
im Chat verraten musst, da du da nicht um die Quadratwurzel drum herum kommst. Aber wann immer du die Funktion intern benutzt, solltest du distanceSquared() benutzen und die Vergleichsgröße vorher einmal quadrieren. Beispiel:
Ein Spieler muss in der nähe einer bestimmten Location sein, damit etwas passiert.
Normal schreibst du dann mit distance():
Code:
if (playerLocation.distance(otherLocation) <= 4)
{
doStuff();
}
Mit distanceSquared() sieht das dann so aus:
Code:
if (playerLocation.distanceSquared(otherLocation) <= 16)
{
doStuff();
}
Das ist performanceweise zwar nur eine minimale Verbesserung, aber solche Dinge summieren sich auf. Besonders, wenn man es oft aufrufen muss.
