2014-11-06 98 views
0

我正在嘗試設置一個簡單的能量方法,它將爲我在平原中旅行的每個像素使用1個能量。 這是我的代碼,將無法正常工作。我似乎無法弄清楚在我的播放器移動之前如何獲得x/y的價值。計算遊戲中的距離

public void energy(){ 
    for(int i = 0; i < handler.object.size(); i++){ 
     GameObject tempObject = handler.object.get(i); 

     if(tempObject.getId() == ID.Player){ 
      double dis = Math.sqrt(Math.pow(getX() - this.x, 2) + Math.pow(getY() - this.y, 2)); 
      HUD.ENERGY -= dis; 

     } 
    } 
} 
+0

另一種策略是直接減少運動方法中的能量。 – irrelephant 2014-11-06 20:35:07

回答

0

有一對夫婦在你的類字段:lastXlastY的。在您的.energy()方法中,計算當前位置與(lastX, lastY)之間的距離,然後將(lastX, lastY)設置爲當前位置。

通過這種方式,您可以跟蹤以前的位置,並用它來計算它移動的距離。該方法的粗略概覽將爲:

  1. 計算當前位置。
  2. 計算步驟1當前位置與最後記錄位置之間的距離。
  3. 設置最後記錄的位置,在步驟檢索到的當前位置1.
+0

非常感謝您的先生。 – Veljko 2014-11-06 20:39:01

+0

@Veljko不客氣:)請點擊標記以標記爲已接受的答案,如果它有用(也可以獲得一些代表點)。 – 2014-11-06 20:42:31

0

你一定要明白的getX()將返回this.x這將成爲0(同爲Y)?你需要用一個實例來調用它。 你可能想要做什麼

public void energy(Point point1, Point point2){ 
    for(int i = 0; i < handler.object.size(); i++){ 
     GameObject tempObject = handler.object.get(i); 

     if(tempObject.getId() == ID.Player){ 
      double dis = Math.sqrt(Math.pow(point1.getX() - point2.getX(), 2) + Math.pow(point1.getY() - point2.getY(), 2)); 
      HUD.ENERGY -= dis; 

     } 
    } 
} 
+0

我使用了chiastic-security給我的解決方案。按我的想法工作。謝謝你的回答。 – Veljko 2014-11-06 20:43:56