java - libgdx 3d无限滚动地板

标签 java android 3d libgdx

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

我已经让我的 3D 对象适本地绕 X 轴移动(在固定的 Z 平面上),但现在正在考虑添加背景、地板等。

我一直在阅读 DecalPlane 但不确定哪种方法是最好的。我会在每一层都有相同的地板结构,但纹理不同。将来会提供更多的可扩展性吗?例如,斜坡、山丘等。每个楼层结构(无论是 Decal 还是 Plane)都会不断重复,我会看看是否可以创建雾化效果,使地板随着距离而褪色。它还将具有可向后重复的可平铺纹理(例如草地、柏油碎石路、泥土)。

甚至可能是一个静态结构,简单地向后移动纹理?

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

最佳答案

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

简单的解决方案:使用 blender 或您选择的任何其他 3d 编辑工具创建一个平面并将您的可耕作纹理应用于它。

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

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

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

从地面移除第一个平面并将其添加到您拥有的最后一个平面之后。

(用 ModelBatch 渲染一切)

如果您拥有足够多的此类飞机,玩家将不会注意到它们出现在远处。还使用雾来完全隐藏平面的这种过渡。

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

关于java - libgdx 3d无限滚动地板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22859197/

相关文章:

java - Vaadin 在新标签页中打开链接

java - 将一个字符串变成多个数组?

android - 通知从 Android 应用程序发送的 HTTP 请求

javascript - 改进 three.js 场景中的光照

math - 两次旋转之间的误差?

java - 旋转平面,使其法线与另一个平面的法线方向相同

java - 静态类中的列表会生成警告,其他数据类型不会

Java for 循环ArrayList、indexoutofboundsException

android - 更改 LinearLayout 中分隔线的颜色

android - 使用 Android SDK 我在我的 JPEG 中没有看到任何 EXIF