在libGDX中的矩形中绘制的动画纹理

时间:2014-05-11 12:09:34

标签: java android libgdx android-animation

过去两周我一直在学习libGDX,并努力掌握如何使用纹理来动画运动。

以下是我创建图片的方式:

Rectangle monkey;

public void create() {
    monkeyImage = new Texture(Gdx.files.internal("data/monkey.png"));

    monkey = new Rectangle();
    monkey.x = 800 / 2 - 64 / 2;
    monkey.y = 20;
    monkey.width = 128;
    monkey.height = 256;
}

@Override
public void render() {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    batch.setProjectionMatrix(camera.combined);

    batch.begin();
    batch.draw(monkeyImage, bucket.x, bucket.y);
    batch.end();
}

我的纹理是两个并排的图像,每个图像是128 * 256像素,因此纹理大小为256 * 512像素。我想为矩形设置动画,使其在两个图像之间闪烁。我已经研究了这个,但无法得到任何工作,因为我找不到使用矩形来做这个的例子。是否有可能做我想要的,使用矩形来保存动画?

1 个答案:

答案 0 :(得分:1)

我认为您需要在两个可单独渲染的部分中打破Texture。使用TextureRegion引用Texture的一部分。然后将右TextureRegion传递给draw。在您的设置中,您可以执行以下操作:

monkeyImage = new Texture(...)
monkeyL = new TextureRegion(monkeyImage, 0, 0, 128, 256);
monkeyR = new TextureRegion(monkeyImage, 128, 0, 128, 256);

并使用render方法:

TextureRegion t = someTest ? monkeyL : monkeyR;
batch.draw(t, bucket.x, bucket.y);

如果您要为一个角色拥有大量图像,则应该查看Libgdx Animation,它旨在跟踪多个关键帧"代表定时动画中使用的图像。