libgdx - Transform / Shear ImageButton

时间:2017-07-01 18:08:17

标签: java android opengl-es libgdx affinetransform

我目前正在使用libgdx开发一款Android游戏,并希望通过以下屏幕截图实现类似“朋友排行榜”的效果:

enter image description here

[Image source / Run Sackboy!运行,©Media Molecule&索尼电脑娱乐]

libgdx剪切图像并绘制剪切文本并相应地添加ImageButton。

在网上搜索要开始的地方时,我发现handy PDF解释了libgdx中的转换可以使用Matrix4建模。所以,我做到了这一点并写了一些东西:

// Inside a Screen class

private Matrix4 matrix = new Matrix4().set(new Affine2().shear(0.5f, 0));

public void render(float delta) {
    Gdx.gl.glClearColor(0, 1, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    camera.update();

    batch.setProjectionMatrix(camera.combined);
    batch.setTransformationMatrix(matrix);

    batch.begin();
    // Draw texture and bitmapfont
    batch.end();
}

这样,SpriteBatch正确地转换为相应的剪切值。但是,我无法将此剪切变换应用于可点击的ImageButton

我查看了this帖子,建议覆盖draw方法并在扩展的Affine2类中应用Actor。这样做会导致呈现正确的转换,但是,它不适用,因为我试图扩展ImageButton而不是简单的Actor,并且能够在Button上获取用户的输入失去了。

所以我的问题是:有没有办法创建一个类似于Actor#setRotation的函数,允许ImageButton根据Affine2(或Matrix4)进行剪切,同时保持点击它的能力?

1 个答案:

答案 0 :(得分:0)

在网上搜索了几个小时之后,我认为这是不可能的。我没有这样做,只是剪切Spritebatch并单独离开ImageButton,使用this page作为指导。