私は最初の横スクロール ゲームに取り組んでおり、終わりのない背景効果を実現しようとしています。ほぼ期待どおりに動作していますが、不具合はほとんどありません。
背景の 2 つのインスタンスがあり (それぞれが画面の幅を埋めます)、1 つは画面の左下隅に配置され、もう 1 つは画面の右隅に配置されます。次に、カメラを各フレームを右に移動し、最初のバックグラウンド インスタンスが完全に左にオフスクリーンになったら、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 クラスの update メソッド -
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);
}
}
}
まず、これは連続スクロールの背景を行うための通常の方法 (またはそれに近い方法) ですか?
もしそうなら、私は何を間違っていますか?