我正在制作一个游戏(libgdx& box2d),随机生成的行星上有摩天大楼 - 见下图。
摩天大楼的位置,宽度和高度都是随机的。我现在正在寻找纹理这些的最好方法。
这是关于如何最好地解决纹理随机大小的对象的一般性问题,尽管你可能不需要提供代码。
我有哪些选择?制作小纹理正方形并拼贴它们?伸展他们?程序生成它们(这对于类似摩天大楼的纹理是否可能 - 基础的灰色方块和有/无光的黑/黄色窗口)?我该怎么办?
此刻我真的不知道如何解决这个问题。欢迎任何想法!
谢谢!
纳斯
管理要做拉伸完成 - 现在只使用一种纹理适用于所有尺寸,但我会改变它。
答案 0 :(得分:1)
正如你所说,你有很多可拥有权来解决这个问题。如果你接近那些,拉伸往往看起来不太好。但是,如果他们是票价,它可能是一个很好的解决方案。在我看来,生成这些确实需要时间我猜,这对游戏来说不是一个好主意。你甚至需要编写很多东西,我猜他们看起来总是simelar。
我认为Tileing是不可能的,因为你的skytower并不总是在瓷砖的基础上。因此,例如你有32px瓷砖,你的塔高53px它不能很好地工作,因为你需要拉伸/切割或其中一个瓷砖。
我采用带有良好过滤器的拉伸解决方案。获得超过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)