我已经制作了一个android / ios游戏,它在Android上工作得很好我只发表了一个但是说我做了一个纹理渲染50px到50px其他设备上的像素密度使得纹理呈现不同有没有办法我可以制作固定的世界坐标,使图像渲染相同,但不是随机尺寸的纹理渲染,它只是缩小/向上
答案 0 :(得分:4)
您可以像这样设置Camera
:
new OrthographicCamera(viewPortWidth, viewPortHeight)
用于2D游戏new PerspectiveCamera(viewAngel, viewPortWidth, viewPortHeight)
用于3D。我现在待在2D。您设置的视口将自动放大以适合窗口/屏幕。因此,如果在1600 * 900px窗口上使用80宽度和45高度的视口,则每个单元都会按比例放大以使用20px。在800 * 450px屏幕上,一个单元只能使用10px。
默认情况下,相机的原点(P(0,0))位于屏幕中间。因此,如果在x = 0,y = 0,宽度为1,高度为1的情况下渲染Texture
,则其左下角位于屏幕中间,大小为20px * 20px(在1600 * 900的屏幕上)。
要让摄像机原点位于屏幕的左下角(我们通常需要它),您需要通过调用camera.translate(viewPortWidth/2, viewPortHeight/2)
或设置其位置camera.position.set(viewPortWidth/2, viewPortHeight/2)
来移动它。之后,你必须致电camera.update()
让它知道你移动了它。在相机上每次更改后(旋转,翻译......)
要使用此相机渲染Texture
s,您必须设置SpriteBatch
s projectionMatrix
,这就像世界的视图或类似的东西。为此,请致电:spriteBatch.setProjectionMatrix(camera.combined)
。然后,如果你用这个spriteBatch
画画,一切都应该有效。