最近,我使用array
整数作为我的Java屏幕切换到使用库。我使用的库是LibGDX
,而我的转换则完全不同。我已经开始掌握大多数事情,而且我自己还在编写一些代码。
此时,我很好奇我是否可以限制Sprite
s的渲染范围以及任何其他绘图因素,例如如果一个精灵卡在一个盒子的中途,它就不会#39; t呈现伸出的部分(如此:)
有没有办法在特定范围内渲染,如果它部分超出范围,它不会渲染超出范围的内容,或者我自己必须这样做?
答案 0 :(得分:0)
你可以做简单的"剪辑"到LibGDX ScissorStack的矩形。
因为OpenGL是有状态的,并且许多LibGDX绘图API都会缓存,所以请确保" flush"或者"结束"你的批次在剪刀范围内。请参阅libgdx ScissorStack not working as expected和libgdx Cutting an image
答案 1 :(得分:0)
如果我没有理解你,你正在寻找camera
camera
可让您定义Viewport
(尺寸),但只会看到Viewport
内的内容。
你也可以移动它来看世界的其他地方。
例如:
OrthographicCamera cam = new OrthographicCamera(80, 45);
这定义了一个camera
,它以x为单位显示80个单位,y为45个单位。默认情况下,P(0/0)位于屏幕中间,因此camera
显示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
进行绘制,您需要将SptieBatch
s projectionMatrix
设置为camera
之一:
spriteBatch.setProjectionMatrix(camera.combined);
现在您可以使用此SpriteBatch
进行绘制
您还应该考虑使用ViewFrustum-Culling
,这意味着您不会从camera
中提取内容,因为它们永远不会出现在屏幕上,但是平局调用需要一些性能。< / p>