Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Andengine-任何缺失的FPS都会导致其他场景实体在追逐快速实体时轻微抖动_Android_Performance_Camera_Andengine_Smooth Scrolling - Fatal编程技术网

Android Andengine-任何缺失的FPS都会导致其他场景实体在追逐快速实体时轻微抖动

Android Andengine-任何缺失的FPS都会导致其他场景实体在追逐快速实体时轻微抖动,android,performance,camera,andengine,smooth-scrolling,Android,Performance,Camera,Andengine,Smooth Scrolling,我正在创建一个安德林游戏,我从我买的安德林开发书中复制了这个SmoothChaseCamera类 package com.killercoolgames.djdestiny.custom.andengine; import com.killercoolgames.djdestiny.MainActivity; import org.andengine.engine.camera.SmoothCamera; import org.andengine.entity.IEntity; public

我正在创建一个安德林游戏,我从我买的安德林开发书中复制了这个SmoothChaseCamera类

package com.killercoolgames.djdestiny.custom.andengine;

import com.killercoolgames.djdestiny.MainActivity;
import org.andengine.engine.camera.SmoothCamera;
import org.andengine.entity.IEntity;

public class SmoothChaseCamera extends SmoothCamera {

private static final MainActivity MAIN_ACTIVITY = MainActivity.getInstance();

private IEntity chaseEntity;

public SmoothChaseCamera(float x, float y, float width, float height) {
    super(x, y, width, height, 3000f, 1000f, 1f);
}

@Override
public void setChaseEntity(IEntity chaseEntity) {
    super.setChaseEntity(chaseEntity);
    this.chaseEntity = chaseEntity;
}

@Override
public void updateChaseEntity() {
    if( chaseEntity != null ) {
        // Always follow the entity and the camera's centerY will be slightly ahead of the entity.
        setCenter(getCenterX(), chaseEntity.getY() + MAIN_ACTIVITY.CAMERA_HEIGHT / 3);
    }
}

@Override
public void reset() {
    super.reset();
    set(0, 0, MAIN_ACTIVITY.CAMERA_WIDTH, MAIN_ACTIVITY.CAMERA_HEIGHT);
    setCenterDirect(MAIN_ACTIVITY.CAMERA_WIDTH / 2, MAIN_ACTIVITY.CAMERA_HEIGHT / 2);
}

}
当我在游戏中关闭所有视差层和碰撞检测时,它确实可以正常工作,并且在我真正的三星Galaxy Tab 4设备上以59.80 FPS或更高的速度运行。如果我使物体具有300f或更高的高速。实体移动得非常快,相机也跟着移动,但我注意到除了被追逐的实体之外,场景中的所有实体每秒都会发生一次突出/抖动。如果我把速度降低到50f或更低,我仍然得到相同的FPS,但是因为我走得更慢,你根本没有注意到震动。我确实相信摄影机的跟随是正确的,因为在查看被追逐的实体时没有抖动,但是如果我查看场景中的任何其他对象,它们会随着摄影机的移动而抖动

问题是我需要实体快速移动,因为他飞行得很快,当他到达某个Y时,水平应该结束。我尝试调整场景中的其他实体以考虑速度。我试着减慢玩家的速度,提高敌人的速度,但问题仍然存在。我正在创建一个游戏,当你在场景中越过敌人时,你会不断地向上飞行。相机跟随它始终追逐的实体非常平滑。只是场景中的其他实体似乎没有顺利更新

我试着禁用所有功能,看看是否可以达到60帧/秒,我认为不可能每次都达到,这是有道理的。我认为是摄像头造成了问题,但我不确定。当我开始在游戏中打开其他东西的时候,我的延迟确实会上升到59.50 FPS或更高,但有时在所有东西都打开的情况下,它仍然会保持在59.80左右,这告诉我相机无法跟上。是这样吗?如何解决这个问题

在今天做了一些调试之后,我相信只是剩余的延迟FPS没有达到60FPS才是导致延迟的原因。我不知道如何解决这个问题。我正在使用PhysicsHandler更新精灵的位置,以便相机跟随。我试着做了一个移动修改器,但仍然有同样的问题。我想不出一种方法来保持相机平稳地向上移动


我甚至试着做了一个固定步进引擎,它使滞后保持一致,但我永远也无法摆脱它。它总是存在,但当切换到固定步长引擎时,情况更糟。

您是否尝试使用固定步长引擎?我想我也有过类似的问题,我稍微改变了相机的速度值,这很有帮助。我刚刚添加了一个FixedStep引擎,我尝试了一些不同的步长值,我尝试了60、55、30,至少滞后不是随机的。但这似乎让情况变得更糟。我确实注意到滞后时间在60时是一致的。所以,也许这告诉我,当我不使用固定步进发动机时。从59.80 FPS到0.20 FPS的剩余速度导致了我所看到的延迟?你知道具体是什么解决了你的问题吗?结果证明是设备延迟比我想象的任何事情都要严重,在我母亲的手机上进行了测试,它更新更快,而且抖动非常小。另外,在一个巨大的平板电脑上,抖动更明显,让人头痛,我可以通过调整相机的速度值来稍微减轻它。但是没有办法真正摆脱它。好消息是,it手机不会真正看到它,除非它们更老、更慢。