当前位置: 首页 > 知识库问答 >
问题:

仅在特定区域内显示雪碧

阎淮晨
2023-03-14

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

我尝试的是检查精灵是否还在黑板上(通过检查位置),如果不是,我就不会再渲染它了。但那是

1) 不好,因为这样一来,精灵要么完全显示,要么根本不显示。

2) 不合法。

实现上述目标的优雅方法是什么?也许使用图像而不是精灵,然后有另一个舞台,它的视口只是屏幕的一部分?如果是这样的话,我很乐意解释一下如何做到这一点。

共有1个答案

阴高刚
2023-03-14

你可以使用剪辑。它的基本功能是定义一个矩形区域,并将其与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,-使用剪刀堆叠

--

编辑:对于LibGDX版本0.9.9,函数calculatescisors的参数似乎发生了变化。NathanSweet帮我弄明白了如何让它工作(带视口的CalculateScisors),然后重新引入了上面提到的函数(CalculateScisors减去参数)。

ScissorStack.calculateScissors(camera, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), batch.getTransformMatrix(), clipBounds, scissor);
 类似资料:
  • 我把我的申请分为两个主要方面。 (A)部分 零件存放容器(B) A的内容应该根据用户的需求来设置。 所以基本上我可以有1。。N个类,可用于应用程序模型中部件的类URI。 我不知道是应该用新的动态创建的部分(C)替换整个部分(A),其中包含我想要的内容,还是应该以某种方式修改现有部分(调用setContributionURI,或在Part object上调用setObject方法?)。 对我来说,修

  • 问题内容: 我在一个项目中使用Google Maps,并且只想在地图窗口中显示一张国家/地区地图,也就是说,我只希望美国在我的地图上显示,而不是Canda和Mexico等,从而删除了我所用应用程序的多余信息建造。 我发现了一些可以限制Javascript覆盖的区域的内容,但是由于地理区域通常不符合正方形,因此这仍然给了我很多额外的地图区域。 再者,我受到时间,$,php和javascript的限制

  • 我需要一些帮助/建议/指导。如果你能给我指出正确的地方。 我需要第一个应用程序屏幕加载只有当用户在一个特定的地区(例如城市,或国家)。我正在用Flutter和Dart开发应用程序。 Main.dart显示一个加载指示器,直到获取位置为止(异步)。 我想做的是能够定义这个应用程序工作的区域。 因此,如果当前位置在启用区域内,将加载第一个屏幕。其他地方显示一条消息,说明该应用程序在该地区尚未可用。 有

  • 注意:即使某些“区域”没有值,也应该显示标签0、0.1、0.2、0.3、0.4和0.5。我尝试了我的不同选项,我发现的“最佳”是控制要显示的标签数量,但它不是我想要的:

  • 我想在CardView上显示一个特定的月份,而不使用下一个和上一个箭头来导航日历。如果我想显示2010年2月,用户只能看到2010年2月。他们下个月或上个月不能去。 我遵循这个堆栈溢出答案来显示一个特定的月份,但它对我不起作用。它始终显示我的病例的当前日期和月份。我不确定是否可以禁用上一次导航。 我的XML: 我的片段类: 如果没有下一个导航,我如何只显示2月份?

  • 问题内容: 我正在iframe上工作,我需要在宽度大约为300px,高度为150px的iframe中显示页面的某些部分(例如右上角)。 例: 说我希望把一个 IFRAME 的 **www.mywebsite.com/portfolio.php 在页面上,但有IFRAME大小,只显示“ 投资组合运动 在”部分 右上角** 。 我该如何实现? 谢谢。 问题答案: 一个让你与工作完整的窗口。执行所需操作