gpt4 book ai didi

java - 如何在libgdx中移动背景屏幕?

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:38 25 4
gpt4 key购买 nike

我正在 Libgdx 中制作一个游戏,其中我想让一个球从上字落到下字,并将背景向上字移动并根据它更新相机。我的代码如下...

    public WorldRenderer(SpriteBatch spriteBatch, World world){
this.world = world;
this.camera = new OrthographicCamera(FRUSTUM_WIDTH, FRUSTUM_HEIGHT);
this.camera.position.set(FRUSTUM_WIDTH/2, FRUSTUM_HEIGHT/2, 0);
this.spriteBatch = spriteBatch;
positionBGY1 = 0;
positionBGY2 = 0;

}
public void render(World world, float deltaTime){
if(world.ball.position.y > - camera.position.y){
camera.position.y = world.ball.position.y;

}

if(camera.position.y<0)
camera.position.y=world.ball.position.y;

camera.update();
spriteBatch.setProjectionMatrix(camera.combined);
renderBackground();
renderObjects(world, deltaTime);
}


private void calculateBGPosition(){
positionBGY2 = positionBGY1 + (int)FRUSTUM_HEIGHT;
if(camera.position.y >= positionBGY2){
positionBGY1 = positionBGY2;
}
}
private void renderBackground() {
spriteBatch.disableBlending();
spriteBatch.begin();
spriteBatch.draw(Assets.gamebackgroundRegion, camera.position.x - FRUSTUM_WIDTH / 2, positionBGY1 - FRUSTUM_HEIGHT / 2, FRUSTUM_WIDTH, 1.5f * FRUSTUM_HEIGHT);
spriteBatch.draw(Assets.gamebackgroundRegion2, camera.position.x - FRUSTUM_WIDTH / 2, positionBGY2 - FRUSTUM_HEIGHT / 2, FRUSTUM_WIDTH, 1.5f * FRUSTUM_HEIGHT);
calculateBGPosition();
spriteBatch.end();
}

我的代码的问题是背景屏幕没有移动,并且相机没有随着球的移动而更新,并且球从屏幕上掉下来。

最佳答案

嗯,您需要做的第一件事是更改一个 bg 变量,因此在渲染中执行如下操作:

float speed = 1;
positionBGY1+=deltaTime*speed;
positionBGY2+=deltaTime*speed;

就相机随球移动而言,我会这样做:

camera.position.y = Math.min(ball.y,0);

我会依次忽略所有这些:

if(world.ball.position.y > - camera.position.y){
camera.position.y = world.ball.position.y;
}

if(camera.position.y<0)
camera.position.y=world.ball.position.y;

关于java - 如何在libgdx中移动背景屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com