我想知道从一次更新到另一次更新的位置差异
相关代码:
@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
所以,我在这里做错了什么?如果是这样,最正确的做法是什么?
答案 0 :(得分:0)
previousPosition = PlayerBody.getPosition();
可能在这里你只是复制对象的引用而不是值。 您需要复制该值。可能是这样的:
previousPosition = new Vector2(PlayerBody.getPosition().x, PlayerBody.getPosition().y);
我不记得在andEngine中存储位置应该使用什么类型,所以将类型更改为“previousPosition”的类型。