2013-05-14 61 views
0

我正在制作一个游戏(libgdx & box2d),随机生成的行星上有摩天大楼 - 请参阅下图。纹理随机生成和尺寸的Rects

摩天大楼的位置,宽度和高度都是随机的。我现在正在寻找最好的方式来纹理这些。

这是关于如何最好地解决纹理随机大小的对象的一般问题,尽管您可能不需要提供代码。

我有什么选择?制作小的纹理方块并将它们平铺?拉伸它们?程序化地生成它们(这对于摩天大楼般的纹理来说是可能的 - 对于底座来说是灰色的方形,对于有/没有光线的情况下是黑色/黄色的窗口)?我需要考虑什么?

我现在真的不知道如何去做这件事。任何想法都欢迎!

谢谢!

乔纳斯

Planet with Skyscrapers

设法做到把它用做拉伸 - 现在只使用于各种规模一个纹理,但我会改变这种状况。 stretched textures over box2d objects

回答

1

正如你所说,你有很多可以解决这个问题。如果你接近这些,拉链往往看起来不太好。但是,如果他们收费,这可能是一个很好的解决方案。在我看来,生成这些确实需要时间我猜,这对于一款游戏来说不是个好主意。你甚至不得不编写很多东西,他们总是看起来像我想的那样。

我想瓷砖是不可能的,因为你的天空并不总是在瓷砖的基础上。因此,例如,您获得了32像素的瓷砖,并且您的铁塔高度为53像素,因此无法正常工作,因为您需要拉伸/切割或其中一个瓷砖。

我会采取一个很好的过滤器streched解决方案。获得超过1张照片,因此如果你有更大的塔架,也可以为更好的解决方案拍摄更大的图片。你需要注意宽度和高度。你不应该把一个非常宽的塔架搭在很多的地方,也应该把一个很薄的塔架变成一个宽的塔架。你也可以随机一点,所以你肯定有一些不同的图片。
例如,用于过滤器:

// we set the linear texture filter to improve the stretching 
splashTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 

From this tutorial
在从libgdx该条目也看看:Know Your Texture Filters!


不过这只是我的看法。


要找出过滤器默认情况下使用看看Texture方法。

getMagFilter(); 
getMinFilter() 

,因为你这样设置过滤器:

setFilter(Texture.TextureFilter minFilter, Texture.TextureFilter magFilter) 
+0

谢谢你,BennX。你写了一些关于“良好过滤器”伸展的文章。你能详细说明你的意思吗?我对图形/游戏编程非常陌生,所以我们非常感谢你指向正确的方向。非常感谢您的参与! – Jonas 2013-05-14 12:36:28

+0

我添加了一个小例子。您可以将过滤器设置为图像,以便以不同的方式烫伤。有了一些过滤器,你可能会得到一个不好的结果,但有一些其他的它可能真的很好看看它提供的Enum TextureFilter。 – BennX 2013-05-14 12:46:19

+0

谢谢,BennX!今晚我会检查一下! – Jonas 2013-05-14 12:49:38