libgdx 3d无限滚动地板

时间:2014-04-04 09:44:50

标签: java android 3d libgdx

我正在制作3D游戏,并且正在寻找将地板平面作为3D的一部分的最佳方法。如果你想象像TempleRun这样的游戏,但没有转弯,你向前移动,地板向后滚动(朝向用户)无限。

我已经让我的3D物体适当地绕X轴移动(在固定的Z平面上),但现在看着添加背景,地板等。

我一直在DecalPlane上阅读,但不确定哪种方法最好。我在每个级别都有相同的地板结构,但具有不同的纹理。是否会在未来提供更多可扩展性?例如,斜坡,山丘等。每个楼层结构(无论Decal还是Plane)都会无休止地重复,我会看看是否可以创建一个使地板褪色的雾效果距离。它也会有一个可以反复重复的花木纹理(例如草,柏油碎石,泥土)。

也许是静态结构,只需向后移动纹理?

任何想法都会很棒,谢谢。

2 个答案:

答案 0 :(得分:2)

我想说不要使用贴花,因为这些不会对libgdx的环境(灯光,阴影等)做出反应。而Plane只是代表平面的一类,根本无法渲染。

简单解决方案:转到搅拌机或您选择的任何其他3D编辑工具创建一个平面并将可填充纹理应用于它。

将其导出为.fbx并将其转换为.g3db(libGDX的格式)。

将其加载到游戏中并制作几个副本(ModelInstances)。 将它们一个接一个地放在地板上,这样就不会出现任何间隙,它们都会形成一个漂亮的重复地面。

当你的角色向前移动时,检查它在X轴上的位置(或你想要移动的任何轴),如果位置大于你在地板上的最后一个平面的位置 - 比更新地板的距离如下:

从地面移除第一个平面,并在最后一个平面之后添加它。

(使用ModelBatch渲染所有内容)

如果你有足够的这些飞机,玩家不会注意到它们出现在远处。也可以使用雾来完全隐藏这种平面过渡。

同样不仅可以应用于平面,还可以应用于重复的山丘或任何其他可填充的3d对象。

答案 1 :(得分:1)

您可以使用PlaneLike explained here)制作一些meshpartbuilder,或者使用像Blender这样的应用程序制作Model。 由于您可以在一个ModelInstance中创建多个Model并为其提供不同的Material,因此您可以一遍又一遍地使用相同的Model。因此,您可以在XZ平面上创建一个4x4米(例如)大Model(它只是1个面)。接下来,你创建10个ModelInstance,然后将它们相互添加:

  • 第一平面:x = 0-4m,y = 0-0,z = 0-4m
  • 第二平面:x = 4-8m,y = 0-0,z = 0-4m

等等。一旦你的角色处于X位置> 4,你可以translate ModelInstance firstPlane前进到第10架飞机的末端。所以它的新x将是44-48米 只要您达到新的水平或其他地方或任何其他地方,只需更改Material的{​​{1}}即可。 对于背景,我建议阅读有关SkyBox es。

的内容

希望我能提供帮助