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"的类型。
我想知道从一个更新到另一个更新的位置差异
相关代码:
@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"的类型。