我正在创建一个小游戏,你在迷宫中。迷宫以二维数组
组织,描述x和z位置
以及 block 类型
。所以它是基于图 block 的。假设每个 block 是1 m3
。现在我的角色是 2m 高,迷宫应该是 4m 高。因此,如果该瓷砖上有墙,我会相互添加 4 个方 block 。当然,即使使用视锥体和背面剔除
,这也会对 100 * 100
米/图 block 迷宫产生巨大的性能影响。由于这是我的第一个 3D 游戏,我希望保持简单,并且不想使用高级剔除技术(八叉树或其他技术:P)。因此,我尝试创建 1*4*1
block 而不是 1*1*1
并将它们作为 Walls
添加到我的世界中。它工作得很好,性能再次完美(60 FPS),但是纹理(64*64px)
被拉伸(stretch),看起来真的很难看。
所以我的问题是:
- 是否可以每米重复纹理,而不是 拉伸(stretch)吗?
- 或者我需要修改纹理才能拥有它 4 次 一样高?
- 或者还有更好的解决方案吗?
编辑:我发现,Texture
具有TextureWrap
模式。我将其设置为 TextureWrap.Repeat
,但我无法在 Texture
上设置 UV
。如果您要从 Texture
创建 Sprite
,您可以轻松地将它们设置为 4 以重复 Texture
4 次。但我无法将 Sprite
添加到我的 Model
中,只能添加 Texture
。有没有办法重复这些Texture
?
最佳答案
如果有人在使用 ModelBuilder.createRect 方法时更改 UV 时遇到问题,那么这可能会有所帮助:
...
Model rect = modelBuilder.createRect ...
Matrix3 mat = new Matrix3();
mat.scl(2);
rect.meshes.get(0).transformUV(mat);
instance = new ModelInstance(rect);
...
这样你就会得到 2x2 纹理重复。 (我浪费了一些时间寻找这个解决方案。我用它来重复大地面上的草纹理)
关于java - 在模型上重复纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908241/