Java & LibGDX:限制精灵的渲染范围

4

最近我从使用Java中的整数数组作为屏幕转换成了使用一个库。我使用的库是LibGDX,对我来说这种转换非常不同。大多数事情我已经开始掌握了,而且我仍在自己写一些代码。

目前,我想知道是否可以限制Sprite的渲染范围和其他绘图因素,例如如果精灵卡在盒子的一半上面,它不会渲染超出范围的部分(如下图所示:)

Example of Rendering in a Range
有没有一种特定的渲染方式,如果超出范围,就不渲染超出范围的部分,或者我必须自己处理?

2个回答

2

0
如果我没有误解你的意思,你正在寻找相机
相机可以让你定义一个视口(大小),你只能看到这个视口内的东西。
你也可以移动它来看世界的其他部分。

例如:

OrthographicCamera cam = new OrthographicCamera(80, 45);

这定义了一个相机,它在x轴上显示80个单位,在y轴上显示45个单位。默认情况下,它的P(0/0)位于屏幕中央,因此这个相机在x轴上显示从-40到+40,在y轴上显示从-22.5到+22.5的对象。
您可以移动它,使得P(0/0)位于左下角:

camera.position.x = -40;
camera.position.y = -22.5;
camera.update();

这将通过40个单位向左移动相机,并向下22.5个单位,使P(0/0)成为左下角。不要忘记调用update(),因为这会重新计算投影和视图矩阵。

最后,要使用这个camera进行绘制,您需要将SptieBatchprojectionMatrix设置为camera之一:

spriteBatch.setProjectionMatrix(camera.combined);

现在你可以使用这个SpriteBatch进行绘制。
你还应该考虑使用ViewFrustum-Culling,这意味着你不会绘制那些超出camera范围的物体,因为它们永远不会出现在屏幕上,但是绘制调用会消耗一定的性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接