计算我游戏中的行进距离

时间:2014-11-06 20:31:35

标签: java methods

我试图设置一种简单的能量方法,为我平原上旅行过的每一个px使用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;

        }
    }
}

2 个答案:

答案 0 :(得分:0)

您的班级中有几个字段名为lastXlastY。在.energy()方法中,计算当前位置与(lastX, lastY)之间的距离,然后将(lastX, lastY)设置为当前位置。

通过这种方式,您可以跟踪之前的位置,并使用它来计算它移动的距离。该方法的粗略概述将是:

  1. 确定当前位置。
  2. 计算从步骤1到最后记录位置的当前位置之间的距离。
  3. 将最后记录的位置设置为步骤1中检索到的当前位置。

答案 1 :(得分: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;

        }
    }
}