2014-09-30 79 views
3

最近我从使用整数的array作为Java中的屏幕切换到使用库。我正在使用的库是LibGDX,对我而言转换是完全不同的。我已经开始掌握大部分东西了,而且我仍然自己写了一些代码。Java&LibGDX:限制Sprite的渲染范围

在这一点上,我很好奇,如果我可以限制Sprite s的绘制范围和任何其他绘图因素,比如如果一个精灵在盒子中间卡住,它不会渲染零件这是伸出(如这样:)

Example of Rendering in a Range
有没有办法在一个特定的范围来呈现,如果是部分超出范围,它不会呈现什么是超出范围,或者我必须自己做那件事?

回答

0

如果我没有误解您,您正在寻找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中抽出东西,因为它们永远不会出现在屏幕上,但是平局会带来一些性能。