再详细一点。我不使用Block2D。瓦片大小由8x8缩放为20x20。使用没有填充的texturepacker(无论如何填充都会出现问题)。我不知道该发布哪段代码,因为我不知道问题可能出在哪里,所以这里只是简单的块类。如果有任何帮助,我将不胜感激,谢谢。
public class Block extends Sprite {
private int[] id = { 0, 0 };
public Rectangle rect;
private int textureSize = 8;
public Block(PlayScreen play,String texture, int x, int y, int[] id) {
super(play.getAtlas().findRegion("terrain"));
this.id = id;
rect = new Rectangle(x, y, ID.tileSize, ID.tileSize);
setRegion(id[0] * textureSize, id[1] * textureSize + 32, textureSize, textureSize);
setBounds(rect.x, rect.y, rect.width, rect.height);
}
public void render(SpriteBatch batch) {
draw(batch);
}
欢迎来到libgdx!
这里没有足够的代码来说明问题到底是什么,但我猜测在代码的某个地方,您混淆了像素空间和游戏空间。
当你第一次创建一个2D的libGDX游戏时,你会觉得你只是在屏幕上画像素。毕竟你的屏幕是以像素来衡量的,你的窗口是以像素来衡量的,你的纹理是以像素来衡量的。
你可能已经知道,你的游戏使用三个东西来渲染:一个视区(可以绘制游戏的屏幕补丁),一个相机(把它想象成一个真正的相机--你可以改变镜头的位置和大小来改变你的世界的“视野”),以及你的游戏对象(你可能想要或不想要绘制的东西,这取决于相机是否可以看到它们)。
现在让我们看看它们是如何测量的:
现在libGDX将所有这些尺寸都默认为1 GU==1像素,这误导了很多人,让他们认为一切都是以像素来衡量的。一旦你意识到事实并非如此,就会有一些很酷的暗示。
第一个含义是,即使我的屏幕尺寸改变了,我的相机尺寸也可以保持不变。例如,如果我有一个800x600像素的小屏幕,我可以将我的相机大小设置为40x30。这保持了一个很好的纵横比,并允许我在屏幕上绘制40x30块。
如果屏幕大小发生变化(比如说变到1440x900),我的游戏仍然会在屏幕上显示40x30块。如果纵横比发生变化,它们可能看起来有点拉长,但是libGDX有一些特殊的视图可以抵消这种影响。这使它更容易支持您的游戏在其他显示器,其他设备,甚至只是处理屏幕大小。
如果我创建一个.png 1024 x 1024的纹理,并在中间画一个124 x 124的圆,它的周围将是空的,它使用的RAM是否与我在124x124空间上画一个124 x 124的圆相同?
我希望你能帮我找到错误。干杯,Joshflux 编辑:我很确定,它必须做一些事情与窗口的大小。如果我将窗口的高度从800调整为200,那么左角的人看起来是一样的,但是中间的人要小得多。但还是不知道怎么解决...
我用libgdx和box2d做卡车游戏。在我的游戏中,1米=100像素。我的2D地形是由我生成的,是由点制作的。 我所做的,是为整个多边形创建一个polygonregion并使用texturewrap.repeat。问题是,我的游戏大小被缩小了100倍,以适应box2d单位。 所以我的相机宽度是800/100,高度是480/100。(8x4.8像素)
更新1 如您所见,在FrameBuffer上绘制的LibGDX纹理,与直接在SpriteBatcher上绘制的纹理相比,在SpriteBatcher上绘制的纹理要比原始纹理暗一些。 左侧为原图,比手机1080x1920屏幕小50%。 右侧部分是先在FrameBuffer上绘制的TextureRegion,然后在SpriteBatch上绘制,如下代码所示: 如你所见,它比直接从纹理绘制的图像暗一点。
我试图旋转纹理时,我画他们。我认为这样做比在Paint.NET中旋转图像90度并将它们保存在不同的文件中更有意义。我查看了api文档中spritebatch绘图参数,但我就是不明白。有一堆参数,比如srcX、srcY、originX等等。我也想知道如何做同样的纹理区域。以下是api文档页面的链接:http://libgdx.badlogicgames.com/nightlies/docs/api/
我刚刚决定将Slick2D改为libgdx。然而,为了能够将我的游戏移植到LibGDX,我需要帮助理解如何从我的游戏数据文件在LibGDX中创建纹理。 我的游戏数据文件是加密的,图像是用base64编码的,所以我可以把它们都保存在一个txt文件中。如何从ByteArrayInputStream创建LibGDX纹理。 编辑:我刚刚想通了,有点。我是这样做的: 然而,现在图像是垂直翻转的...我是不是