gpt4 book ai didi

java - LibGDX:仅在特定区域内显示 Sprite

转载 作者:行者123 更新时间:2023-12-01 18:36:41 26 4
gpt4 key购买 nike

我编写了某种棋盘游戏。物体应该能够从板上滑落。这意味着该指定区域之外的对象部分不应再显示,以使该项目看起来好像正在从棋盘上移开。

我尝试的是检查 Sprite 是否仍在棋盘上(通过检查位置),如果不是,我将不再渲染它。但那是

1) 不好,因为这样 Sprite 要么完全显示,要么根本不显示。

2)不优雅。

实现我上面描述的目标的优雅方法是什么?也许使用图像而不是 Sprite ,然后使用另一个舞台,其视口(viewport)只是屏幕的一部分?如果是这样,我很高兴能得到一些关于如何做到这一点的解释。

最佳答案

您可以使用剪辑。它的基本作用是定义一个矩形区域并将其与 spritebatch 相关联。您应用剪刀,只会绘制与 spritebatch 关联的矩形内部的区域。

来自 Wiki 的示例代码(版本 0.9.9 之前):

Rectangle scissors = new Rectangle();
Rectangle clipBounds = new Rectangle(x,y,w,h);
ScissorStack.calculateScissors(camera, spriteBatch.getTransformMatrix(), clipBounds, scissors);
ScissorStack.pushScissors(scissors);
spriteBatch.draw(...);
spriteBatch.flush();
ScissorStack.popScissors();

来源:https://github.com/libgdx/libgdx/wiki/Clipping%2C-with-the-use-of-scissorstack

--

编辑:对于 LibGDX 版本 0.9.9,函数calculateScissors 的参数似乎发生了变化。 NathanSweet 帮助我弄清楚了如何让它工作( CalculateScissors with ViewPorts ),然后重新引入了上面提到的功能( CalculateScissors Less Parameters )。

ScissorStack.calculateScissors(camera, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), batch.getTransformMatrix(), clipBounds, scissor);

关于java - LibGDX:仅在特定区域内显示 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com