如何知道Andengine在manageupdate中的身体位置?

时间:2015-07-12 19:56:14

标签: android andengine

我想知道从一次更新到另一次更新的位置差异

相关代码:

 @Override
        protected void onManagedUpdate(float pSecondsElapsed) {
            super.onManagedUpdate(pSecondsElapsed);                

                    Log.d("bar move", "fuel: "+ Float.toString(walkingFuel)) ;
                    if(counter==5) {    // each time is to fast to percive difference?
                         Log.d("bar move", "previous x : "+ Float.toString(previousPosition.x)) ;
                         Log.d("bar move", "current x : "+ Float.toString(PlayerBody.getPosition().x)) ;

                         Log.d("bar move", "fuel consumed: "+ Float.toString( Math.abs(previousPosition.x - PlayerBody.getPosition().x) * 5));
                         walkingFuel += Math.abs(PlayerBody.getPosition().x - previousPosition.x  ) * 5.0f;
                         previousPosition = PlayerBody.getPosition();
                         Log.d("bar move", "current fuel : "+ Float.toString(walkingFuel)) ;

                         counter=0;
                    }
                    counter++; }

我认为每个管理阶段的差异都是从低到高的差异,这就是柜台的原因。任何方式,在每个maneageUpdate中,以前和当前都是相同的。

这是我的日志,使其更简单

燃料:0.0

之前的x:6.8613663

当前x:6.8613663

消耗的燃料:0.0

当前燃料:0.0

后来

燃料:0.0

之前的x:7.0288167

当前x:7.0288167

消耗的燃料:0.0

当前燃料:0.0

所以,我在这里做错了什么?如果是这样,最正确的做法是什么?

1 个答案:

答案 0 :(得分:0)

previousPosition = PlayerBody.getPosition();

可能在这里你只是复制对象的引用而不是值。 您需要复制该值。可能是这样的:

previousPosition = new Vector2(PlayerBody.getPosition().x, PlayerBody.getPosition().y);

我不记得在andEngine中存储位置应该使用什么类型,所以将类型更改为“previousPosition”的类型。