如果我在所選的世界中有一個位置,並且在該位置周圍有一個說「安全區域」的區域,表示延伸500個區塊(創建一個圓圈)(這意味着玩家可以在該區域的500個區塊內並且是「安全的」 )。我怎樣才能找到從玩家位置到最近安全區域的距離?或者在這種情況下,該圈子的最近邊緣是什麼?Bukkit:如何讓玩家距離到一個圓的邊緣?
0
A
回答
4
要查找玩家與給定安全區域的距離,您只需找到距離安全區域中心的距離,然後減去半徑即可。這是因爲到圓的邊緣的最短向量將垂直於邊界,因此平行於通過圓的中心的半徑。
給定一個安全區,(x1,y1)
和玩家,(x2,y2)
的中心座標的(x,y)
座標,可以計算到安全區像這樣的中心的距離:
double distance = Math.sqrt(Math.pow(x1-x2,2) + Math.pow(y1-y2,2));
比較您離您最近的安全區域可等待減去半徑長度以防止浪費計算。
通過安全區的列表排序可能是這個樣子:
public double distanceToNearestSafeZone(Player player, List<SafeZone> safeZones) {
double distance;
double minimumDistance = Double.POSITIVE_INFINITY;
for(SafeZone safeZone:safeZones) {
distance = Math.sqrt(Math.pow(player.x-safeZone.x,2) + Math.pow(player.y-safeZone.y,2));
if(minimumDistance > distance) {
minimumDistance = distance;
}
}
return minimumDistance - SafeZone.radius;
}
在這個例子中,選手對象有兩個public double
領域x
和y
拿着球員的位置。 SafeZone
對象具有相似的字段。 SafeZone
也有一個public static double radius
字段。
我希望這有助於!
相關問題
- 1. 獲取距離邊緣的距離3
- 2. 如何圓一個GeoDjango內置距離
- 3. Threejs,Keydown應該移動我的玩家一定的距離,但距離增加
- 4. Bukkit檢查玩家的庫存
- 5. 如何識別這個圓形邊緣?
- 6. NPC不會停在玩家的某個距離
- 7. 如何使iframe填充由距邊緣的距離定義的區域?
- 8. 如何確定一個多邊形的頂點,該多邊形的外邊緣距離Google地圖上javascript或線條的某個給定距離?
- 9. 從已知點到網絡邊緣的距離
- 10. 攪拌器如何圓臉的邊緣
- 11. 如何從玩家庫存配置中加載ID列表? [Bukkit]
- 12. 讓玩家雙跳
- 13. 如何讓玩家鎖定其半徑內的一個敵人?
- 14. 每個玩家配置文件的Java Bukkit/Spigot
- 15. 如何設置線邊框和窗口邊緣之間的距離?
- 16. 在圓的邊緣移動的圓形
- 17. IE8中的圓角邊緣
- 18. 觸摸邊緣的圓形
- 19. 如何使元素的邊緣貼到CSS的另一個元素的邊緣?
- 20. 如何讓這位玩家隨機?
- 21. jQuery jPlayer - 如何在玩一個新玩家前停止所有玩家?
- 22. 在距離10處的圓圈內畫一個圓圈
- 23. 移動兩個多邊形的距離因此他們觸摸邊緣
- 24. 坐落在距離屏幕的iOS的右邊緣
- 25. 計算從線段末端到圓形邊緣的距離的公式是什麼?
- 26. 如何計算一個點的矩形座標及其與四個邊緣的距離
- 27. 將字符串的右側邊緣放置在距離頁面中心一定距離的位置上。CSS
- 28. Tkinter按鈕與窗口邊緣的距離
- 29. 獲取屏幕邊緣和網頁之間的距離
- 30. CSS設置瀏覽器邊緣的最大距離
你爲什麼要困擾安全區的*邊緣?只需計算從玩家位置到安全區域中心的距離即可。如果你仍然需要到邊緣的距離,那麼你可以減去半徑。 – domsson