最近我从使用整数的array
作为Java中的屏幕切换到使用库。我正在使用的库是LibGDX
,对我而言转换是完全不同的。我已经开始掌握大部分东西了,而且我仍然自己写了一些代码。Java&LibGDX:限制Sprite的渲染范围
在这一点上,我很好奇,如果我可以限制Sprite
s的绘制范围和任何其他绘图因素,比如如果一个精灵在盒子中间卡住,它不会渲染零件这是伸出(如这样:)
有没有办法在一个特定的范围来呈现,如果是部分超出范围,它不会呈现什么是超出范围,或者我必须自己做那件事?
最近我从使用整数的array
作为Java中的屏幕切换到使用库。我正在使用的库是LibGDX
,对我而言转换是完全不同的。我已经开始掌握大部分东西了,而且我仍然自己写了一些代码。Java&LibGDX:限制Sprite的渲染范围
在这一点上,我很好奇,如果我可以限制Sprite
s的绘制范围和任何其他绘图因素,比如如果一个精灵在盒子中间卡住,它不会渲染零件这是伸出(如这样:)
有没有办法在一个特定的范围来呈现,如果是部分超出范围,它不会呈现什么是超出范围,或者我必须自己做那件事?
您可以使用LibGDX ScissorStack对矩形进行简单“剪裁”。
因为OpenGL是有状态的,许多LibGDX绘图API缓存,请务必在剪刀范围内“刷新”或“结束”您的批处理。请参阅libgdx ScissorStack not working as expected和libgdx Cutting an image
如果我没有误解您,您正在寻找camera
。
camera
可以让你定义一个Viewport
(大小),你只能看到这个Viewport
里面的东西。
您也可以移动它以查看世界的其他部分。
例如:
OrthographicCamera cam = new OrthographicCamera(80, 45);
这定义了camera
,其showes你80个单位在x和45个单位在y中。默认情况下,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();
这应该由22.5台摄像机向左移动了40台升降,从而使P(0/0)是左下角。不要忘记拨打update()
,因为这将重新计算投影和视图矩阵。
最后,这个camera
画画,你需要将SptieBatch
小号projectionMatrix
设置为camera
的一个:
spriteBatch.setProjectionMatrix(camera.combined);
现在你可以使用这个SpriteBatch
绘制。
你也应该考虑se ViewFrustum-Culling
,这意味着你不会从camera
中抽出东西,因为它们永远不会出现在屏幕上,但是平局会带来一些性能。