【问题标题】:LibGDX - Draw clipped spriteLibGDX - 绘制剪裁的精灵
【发布时间】:2015-06-21 09:08:30
【问题描述】:

我肯定忽略了一些东西,但是在 LibGDX 中是否有一个容易绘制的例子,例如只有半个精灵?我原本以为我可以用 setBounds() 来做到这一点,但这会扭曲精灵并且不会剪辑它。

【问题讨论】:

  • 不是内置的,需要修改TextureRegion/Sprite的UVs。

标签: libgdx sprite


【解决方案1】:

不知道这是否是您想要的,或者是最有效的方式,但这就是我碰巧读到您的问题,我希望我能理解并为您服务:

变量类:

Texture testTexture = new Texture (Gdx.files.internal("badlogic.jpg"));

以渲染方法为例:

    //batch is a SpriteBatch.
    batch.draw(testTexture, 50, 50,
                            0, 0, 
                            testTexture.getWidth() /2,
                            testTexture.getHeight());

这是 SrpiteBatch.class 中的方法:

public void draw (Texture texture, float x, float y, int srcX, int srcY, int srcWidth, int srcHeight)

现在以你的精灵为例(简单测试):

    batch.draw(yourSprite.getTexture(), 50, 50,
               0, 0, yourSprite.getTexture().getWidth() /2,
                     yourSprite.getTexture().getHeight() );

编辑说明:

重新查看答案,我认为这样说会很好,只显示你所说的纹理的一个区域,但也许应该注意纹理保持相同的大小,我这样说是因为如果您使用纹理来检测碰撞,请记住,虽然显示一半,但纹理仍然与原始纹理一样大

【讨论】:

    【解决方案2】:

    还有剪刀类:

    http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ScissorStack.html

    我想我尝试过一次……但它在台式机上运行良好,而不是在 android 上运行良好……所以我没有使用它。也许它同时修复了。

    【讨论】: