当向下移动相机时,物体会变得混乱

时间:2013-03-18 07:58:09

标签: java android libgdx

我一直在做一个游戏,其中有多个物体在负'y'中,我已经拿走了arrayList,我正在向下移动主角。但是当相机移动时,角色对象是如果没有顺利移动,他们会在一段时间后得到混蛋。其代码如下:

@Override
public void create() {
    camera = new OrthographicCamera(480, 720);
    camera.position.set(480 / 2, 720 / 2, 0);
    batch = new SpriteBatch();
    int i;

    this.baloonArrList = new ArrayList<Baloon>();

    for (i = 0; i < 3000; i += 300) {
        Baloon baloon = new Baloon(200, i);
        baloonArrList.add(baloon);
        System.out.println(baloon.balloon_y);
    }
    texture1 = new Texture(Gdx.files.internal("data/sheet_final.png"));
    textureRegion1 = new TextureRegion(texture1, 561, 156, 115, 101);
}

@Override
public void render() {

    GLCommon gl = Gdx.gl;
    Gdx.gl.glClearColor(1, 1, 1, 1);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    camera.position.y += 4;
    camera.update();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    int len = baloonArrList.size();

    for (int i = 0; i < len; i++) {
        batch.draw(textureRegion1, baloonArrList.get(i).balloon_x,
                baloonArrList.get(i).balloon_y, 100, 100);
    }

    batch.end();

}

那么,我怎样才能使物体的运动平滑。

2 个答案:

答案 0 :(得分:2)

我相信您的问题来源如下:

camera.position.y += 4;

您应该将其更改为更小的值,或者更好,根据帧速率的速度进行设置:

camera.position.y += 4 * Gdx.graphics.getDeltaTime();

这样,您的相机将在y方向上每秒移动4个像素,而不是每帧4个像素。 (当然你可能需要增加4以使其更快,但它会保持相当平滑。)

答案 1 :(得分:0)

如果渲染是生涩且不一致的(使用the builtin FPSLogger来找出你得到的帧速率),那么在渲染过程中会有更多/可变的时间。您应该使用分析器来确定时间的去向。 Eclipse附带的Android DDMS工具非常好用。过于频繁的垃圾收集通常是变量运行时的来源,但最好在尝试修复之前了解正在发生的事情。

那就是说,@ Jyro117建议让你的状态更新独立于帧速率总是一个好主意。