2

我一直在尝试制作一个有人摔倒的游戏。我的背景纹理的大小是 480x3200,我正在尝试创建游戏,以便相机在跌落时将人保持在屏幕中间,然后停在底部。但我无法让我的背景超出它开始的屏幕,然后能够看到图像的其余部分。

我现在所做的所有代码都是缩小 480x3200 图像以适应我当前的屏幕(我设置为 480x800),然后当人跌倒时,背景不会改变。

这是我的 WorldRenderer 类,我尝试做不同的事情,但每次,当图像开始向下移动时,我永远无法让人们看到图像的不同部分。

    public WorldRenderer(SpriteBatch b, World w) {
    this.world = w;
    this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT); 
    this.cam.position.set(CAMERA_WIDTH / 2, Person.position.y,0);
    this.cam.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
    this.cam.update();
    spriteBatch = b;
    loadTextures();
}

public void render(float delta) { 
    person = world.getPerson();

    moveCamera(); 
    cam.update();
    spriteBatch.setProjectionMatrix(cam.combined);

    spriteBatch.disableBlending();
    spriteBatch.begin();
    renderBackground();
    spriteBatch.end();

    spriteBatch.enableBlending();
    spriteBatch.begin();
    renderObjects();
    spriteBatch.end();

}

private void moveCamera() {
    cam.position.set(cam.position.x, Person.position.y, 0); 
    cam.update();
}

private void renderObjects() {  
    renderPerson();
    renderBlocks();
    renderPlatforms();
}

private void renderBackground() {
    spriteBatch.draw(backgroundTexture, cam.position.x - CAMERA_WIDTH / 2, cam.position.y - CAMERA_HEIGHT / 2, CAMERA_WIDTH, CAMERA_HEIGHT);
}   
}

有没有人有什么建议?

编辑:谢谢,我将 renderBackground 中的绘图更改为 spriteBatch.draw(backgroundTexture,0,0, CAMERA_WIDTH, CAMERA_HEIGHT * 4);现在可以使用。

4

2 回答 2

1
spriteBatch.draw(backgroundTexture, cam.position.x - CAMERA_WIDTH / 2,
    cam.position.y - CAMERA_HEIGHT / 2, CAMERA_WIDTH, CAMERA_HEIGHT);

此代码正在绘制相对于相机位置的背景图像。这就是为什么改变相机的位置对背景图像的位置没有影响。把它改成这样:

spriteBatch.draw(backgroundTexture,0,0);
于 2013-06-11T04:38:18.937 回答
1

或者你可以简单地使用 ParrallaxBackground 和 ParrallaxLayer 类

这样你就不必管理你的相机

它在上述类中以优化的方式完成。

于 2013-06-20T10:51:43.907 回答