2014-11-06 55 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