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

时间:2015-06-04 15:55:34

标签: android performance camera andengine smooth-scrolling

我正在创建一个Andengine游戏,我从我买的Andengine开发书中复制了这个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或更高速度运行。如果我使chaseEntity具有300f或更高的高速度。实体移动速度非常快,相机确实跟随它,但我注意到除了追逐实体之外,场景中所有实体每秒都会发生突然/抖动。如果我将速度降低到50f或更低,我仍然得到相同的FPS,但因为我会变慢,你根本不会注意到震动。我相信相机正确地跟随,因为在查看被追逐的实体时没有抖动,但是如果我看到场景中的任何其他物体,它们会随着相机的移动而抖动。

问题是我需要实体快速进行,因为他飞得很快,并且当他击中某个Y时水平应该结束。我尝试调整场景中的其他实体以考虑速度。我试过减慢玩家的速度并增加敌人的速度,问题仍然存在。我正在创建一个游戏,当你越过场景中的敌人时,你会不断向上飞行。在追逐它的实体之后,相机非常流畅。只是场景中的其他实体似乎没有顺利更新。

我已经尝试禁用所有内容以查看是否可以达到60FPS并且我认为它不可能每次都击中,这是有道理的。我认为这是导致问题的相机,但我不确定。在我开始在游戏中开启其他东西的那一刻,我的滞后确实上升到59.50 FPS或更高,但有时它仍然会在59.80左右保持不变,所有的东西都在,它有点告诉我它的相机无法跟上。是这样的吗?如何解决这个问题?

今天做了一些调试之后,我确实认为它只剩下任何落后的FPS而不能达到60FPS就是造成延迟的原因。我不知道如何解决这个问题。我正在使用PhysicsHandler来更新要跟随的摄像机的精灵位置。我试过做一个MoveModifier,但仍然有同样的问题。我无法想办法让相机顺利向上移动。

我甚至尝试过使用FixedStepEngine,它使滞后保持一致但我实际上永远无法摆脱它。当切换到FixedStepEngine时,它总是在那里但更糟糕。

0 个答案:

没有答案