LibGDX-绘制剪裁精灵

LibGDX-绘制剪裁精灵,libgdx,sprite,Libgdx,Sprite,我肯定忽略了一些东西,但是否有一个易于绘制的示例,例如LibGDX中只有半个精灵?我原本以为我可以用setBounds()来实现这一点,但这会扭曲精灵,不会将其剪裁。不知道这是您想要的,还是最有效的方式,但这正是我读到您的问题时所做的,我希望我能理解并为您服务: 变量类: 例如,在渲染方法中: //batch is a SpriteBatch. batch.draw(testTexture, 50, 50, 0, 0,

我肯定忽略了一些东西,但是否有一个易于绘制的示例,例如LibGDX中只有半个精灵?我原本以为我可以用setBounds()来实现这一点,但这会扭曲精灵,不会将其剪裁。

不知道这是您想要的,还是最有效的方式,但这正是我读到您的问题时所做的,我希望我能理解并为您服务:

变量类:

例如,在渲染方法中:

    //batch is a SpriteBatch.
    batch.draw(testTexture, 50, 50,
                            0, 0, 
                            testTexture.getWidth() /2,
                            testTexture.getHeight());
这是SrpiteBatch.class中的方法:

公共空心绘制(纹理纹理、浮点x、浮点y、int-srcX、int srcY,int srcWidth,int srcHeight)

现在,以您的sprite(简单测试)为例:

编辑注:


为了重新审视答案,我想说这样做会很好,就像你说的那样,只显示纹理的一个区域,但也许应该注意,纹理仍然保持相同的大小,我这样说是因为如果你使用纹理来检测碰撞,请记住,尽管显示了一半,纹理仍然比原始纹理大

还有剪刀类:


我想我试过一次…但它在桌面上运行得很好,而在android上运行得不好…所以我没有使用它。也许它同时被修复了。

它不是内置的。您需要修改纹理区域/精灵的UV。
    //batch is a SpriteBatch.
    batch.draw(testTexture, 50, 50,
                            0, 0, 
                            testTexture.getWidth() /2,
                            testTexture.getHeight());
    batch.draw(yourSprite.getTexture(), 50, 50,
               0, 0, yourSprite.getTexture().getWidth() /2,
                     yourSprite.getTexture().getHeight() );