【发布时间】:2013-11-07 23:22:13
【问题描述】:
我有一个 Sprite,它是一个球,根据我的 FixedStepPhysicsWorld 选项,它可以正常下落。但我想要一个矢量跟随这个球,因为它正在下降。 所以我决定重写 onManagedUpdate sprite 的方法。
经过大量测试,我只绘制了 1 个矢量,然后我意识到 pSecondsElapsed 并没有增加。
这是我的代码:
@Override
public void onPopulateScene(Scene pScene,
OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {
sPlayer= new Sprite(200,0, playerTextureRegion, this.mEngine.getVertexBufferObjectManager()){
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
super.onManagedUpdate(pSecondsElapsed);
Log.d("<<<<<<<<<<<,>>>>>>>>>"+pSecondsElapsed+","");
}
输出如下:
11-07 21:14:32.242: D/<<<<<<<<<<<,>>>>>>>>0.02 (23720): [MainActivity.java:359:onManagedUpdate()]
11-07 21:14:32.257: D/<<<<<<<<<<<,>>>>>>>>0.02 (23720): [MainActivity.java:359:onManagedUpdate()]
11-07 21:14:32.281: D/<<<<<<<<<<<,>>>>>>>>0.02 (23720): [MainActivity.java:359:onManagedUpdate()]
我的引擎是这样的:
@Override
public Engine onCreateEngine(final EngineOptions pEngineOptions) {
return new FixedStepEngine(pEngineOptions, 50);
}
问题: 1 - 为什么 pSecondsElapsed 没有改变? 2 - 我想为这个球的每个位置绘制矢量。每次调用此方法(onManagedUpdate)时,我是否应该分离并附加一个新行?
【问题讨论】:
-
该变量是自上次滴答以来的时间,因此它应该是恒定的。但 onManagedUpdate 是按滴答声调用的,因此您的代码仍应按需要工作。
-
@kabuto178 不能递增吗?
-
你应该做类似 -> int sec = 0;秒+=pSecondsElapsed;并使用此“秒”而不是 pSecondsElapsed。
-
正如 Shaq 建议的那样,您可以创建一个字段变量作为计数器,但是您在
OnManagedUpdate()中使用的任何代码都将根据需要在每个滴答时执行。