过去两周我一直在学习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像素。我想为矩形设置动画,使其在两个图像之间闪烁。我已经研究了这个,但无法得到任何工作,因为我找不到使用矩形来做这个的例子。是否有可能做我想要的,使用矩形来保存动画?
答案 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
,它旨在跟踪多个关键帧"代表定时动画中使用的图像。