我正在开发我的第一个横向卷轴游戏,并试图实现永无止境的背景效果,它几乎可以像我预期的那样工作,但有一些小故障。
我有 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);
}
}
}
首先,这是进行连续滚动背景的常用方式(甚至接近)吗?
如果是,我做错了什么?