0

我正在开发我的第一个横向卷轴游戏,并试图实现永无止境的背景效果,它几乎可以像我预期的那样工作,但有一些小故障。

我有 2 个背景实例(每个都填充屏幕宽度),一个位于屏幕的左下角,一个位于屏幕右侧。然后我将我的相机每帧都向右移动,当第一个背景实例完全离开屏幕到左侧时,我将其 X 重置到相机的右侧,以便它现在(相对于相机)离开屏幕的右侧. 这在很多时候都有效,但似乎重置其 x 位置的方法有时会延迟几帧并导致背景出现间隙。

我在主游戏中使用的更新代码是 -

private void update(float delta){
    //update camera and world
        camera.position.set(camera.position.x+scrollSpeed, camera.position.y, 0);
        camera.update();
        world.step(step, velocityIterations, positionIterations);

        if(gameInProgress){ 
            //backgrounds (array holds the 2 instances of the background)
                for(int i=0; i< bgFillArray.size; i++){
                    bgFillArray.get(i).update();
                }
        }
    stage.act(delta);
    tweenManager.update(delta); 
}

BgFill 类中的更新方法 -

public void update(){
    float currentXPos = getX();
    float leftBoundary = camera.position.x-1200;
    float rightOfScreen = camera.position.x+400;

    if(active){
        //check to see if the camera has gone past this instance. if so then move to right
            if(currentXPos <= leftBoundary){
                setX(rightOfScreen);
            }
    }
}

首先,这是进行连续滚动背景的常用方式(甚至接近)吗?

如果是,我做错了什么?

4

0 回答 0