2015-12-08 251 views
-2

我使用矩形編寫了一個簡單的碰撞檢測。我必須在渲染方法中檢查重疊。你能告訴我什麼是快,第一種方式:Java。碰撞檢測

render() 
    { 
     Rectangle playerRectangle = new Rectangle(
         playerTransformComponent.x, 
         playerTransformComponent.y, 
         playerDimensionsComponent.width, 
         playerDimensionsComponent.height); 
       for(Rectangle block : blocksList){ 
        //check collision 
       } 
    } 

或者第二種方式:

Rectangle playerRectangle = new Rectangle(); 
render() 
{ 
    playerRectangle.x = playerTransformComponent.x; 
    playerRectangle.y = playerTransformComponent.y; 
    playerRectangle.width = playerDimensionsComponent.width; 
    playerRectangle.height = playerDimensionsComponent.height; 
    for(Rectangle block : blocksList){ 
       //check collision 
      } 
} 
+1

需要花費時間的是* for循環,如果您擔心性能需要調查*碰撞檢測算法*,不用擔心創建單個對象。 – StephenG

+4

[你有馬匹:比賽](http://ericlippert.com/2012/12/17/performance-rant/) – Filburt

+0

有效的方法之一是使用動態AABB樹。您可以瀏覽網頁以獲取更多信息。速度取決於你的'檢查碰撞'循環的執行情況 –

回答

0

render()函數是一個循環,所以第一種方式顯然是錯誤的 - 你創建一個對象每一幀 - 這是一切的損失。
第二種方式肯定更快。
我希望它有幫助!
staticcasty