Android 如何知道主体在Andengine的manageupdate中的先前位置?
我想知道从一次更新到另一次更新的位置差异 相关代码:Android 如何知道主体在Andengine的manageupdate中的先前位置?,android,andengine,Android,Andengine,我想知道从一次更新到另一次更新的位置差异 相关代码: @Override protected void onManagedUpdate(float pSecondsElapsed) { super.onManagedUpdate(pSecondsElapsed); Log.d("bar move", "fuel: "+ Float.toString(walkingFuel)) ;
@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++; }
我认为每次manageupdate的差异是从低到感知差异,这就是计数器的原因。无论如何,在每一次更新中,先前的和当前的都是相等的
这是我的一点日志,让它更简单
燃料: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中应该使用什么类型来存储position,所以将该类型更改为“previousPosition”类型
在这里,您可能只是复制对对象的引用,而不是值。
您需要复制该值。可能是这样的:
previousPosition = new Vector2(PlayerBody.getPosition().x, PlayerBody.getPosition().y);
我不记得在andEngine中应该使用什么类型来存储位置,所以将该类型更改为“previousPosition”类型。作为补充,我想补充一点,更好的方法是不要在每一帧中创建新的Vectro2对象。但是在循环外创建一个顶点,并将其存储在对象的私有字段中。然后,当您想要复制该值时,可以使用Vector2类的“set(vector2v)”方法。在这种情况下,它将复制值,而不会创建新对象。所以你的程序会运行得更快。其实它对速度没有多大影响,只是有一点差别。不管怎样,我还是要试试。作为补充,我想补充一点,更好的方法是不要在每一帧中创建新的Vectro2对象。但是在循环外创建一个顶点,并将其存储在对象的私有字段中。然后,当您想要复制该值时,可以使用Vector2类的“set(vector2v)”方法。在这种情况下,它将复制值,而不会创建新对象。所以你的程序会运行得更快。其实它对速度没有多大影响,只是有一点差别。不管怎样,我还是要试试。