libgdx - Transform/Shear 图片按钮

libgdx - Transform/Shear ImageButton

我目前正在使用 libgdx 开发一个 Android 游戏,并希望获得类似于以下屏幕截图中的 "friends leaderboard" 的效果:

[Image source / 运行 麻布小子! 运行, © Media Molecule & Sony Computer Entertainment]

其中 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.

我查看了 post,它建议覆盖 draw 方法并在扩展的 Actor class 中应用 Affine2。这样做会导致呈现正确的转换,但是,它不适用,因为我正在尝试扩展 ImageButton 而不是简单的 Actor,以及获取用户在 Button 上的输入的能力丢了。

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

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