libGDX移动相机和图像

时间:2013-07-03 02:36:32

标签: android libgdx

我目前有一款游戏,其中有一张480x3200的地图,还有一个从顶部掉下来的人。相机跟随着人,当人跌倒时,有平台。平台需要是可触摸的,所以我可以在游戏中旋转和移动它们,所以我把它变成了一个Image,当它原本只是一个精灵。

当我将它从精灵更改为图像时,一切正常,除非人跌倒(相机开始向下移动并跟随此人),平台也随着相机移动,所以看起来它也在下降。平台应该只停留在一个位置,而不是随着相机移动,以便相机继续向下移动,平台最终会从视野中消失。

设置平台并将其添加到舞台

@Override
public void show() {
    ...
    platform = new Image(new Texture(Gdx.files.internal("img_platform.png")));
    platform.setX(2);
    platform.setY(110);
    platform.setOrigin(platform.getWidth() / 2, platform.getHeight() / 2);

@Override
public void render(float delta) {
    ....
    stage.addActor(platform);   
}

我查看了API,无法确定是否需要更改相机,舞台或图像,或其他我没有想到的内容。有什么想法吗?

修改

public WorldRenderer(FallDown game, SpriteBatch batch, World w) {
    this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT); 
    this.cam.position.set(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2, 0);
    this.cam.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
    cam.position.set(CAMERA_WIDTH / 2, 105, 0);
    stage = new Stage(480, 800, true);

    platformTexture = new Image(new Texture(Gdx.files.internal("img_platform.png")));
    platformTexture.setX(2);
    platformTexture.setY(100);
    platformTexture.setOrigin(platformTexture.getWidth() / 2, platformTexture.getHeight() / 2);
    ...

}

public void render(float delta) { 
    stage.addActor(platformTexture);
    moveCamera();
    ...
}

private void moveCamera() {
    if (Person.getPosition().y < cam.position.y) 
        cam.position.y = Person.getPosition().y;
    cam.update();
}

...

2 个答案:

答案 0 :(得分:1)

通常情况下,通过将相机设置为演员(正在跌落)并向下移动演员来实现此功能。随着演员向下移动,相机将跟随它,保持平台静止。

这有帮助??

答案 1 :(得分:0)

我没有使用Image,而是决定使用Sprite。它允许我做我需要做的所有事情,而且我没有阶段作为当前屏幕的问题