Andengine中如何知道body在manageupdate中之前的位置?

How to know the previous position of body in manageupdate in 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

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

previousPosition = PlayerBody.getPosition();

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

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

我不记得你应该用什么类型来存储andEngine中的位置,所以将类型更改为"previousPosition"的类型。