我正在制作我的第一个横向卷轴游戏,并且我正在努力实现无休止的背景效果,它几乎正如我所期望的那样工作但是没有什么小故障。
我有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);
}
}
}
首先,这是通常的方式(甚至是关闭)来进行连续滚动背景吗?
如果是的话,我做错了什么?