0

我将使用 Away3D API 在 Flash AS3 中制作一个基于图块的 3D RPG 游戏。

我的问题是到目前为止我还不太了解 away3d api..

我想做一个“块”类。如果我加载瓷砖地图数据,我想做这样的事情:

viewport.addchild( tileArray[ layer ][ x ][ y ] );

所以这将是一个循环。

到目前为止一切都很好,但这必须是一个 3dObject。

用那个 3dObject 填充那个数组,我想做这样的事情。

tileArray[ layer ][ x ][ y ] = myBlocksClass.getBlock( "grassCube" );

所以 myBlocksClass 中的 getBlock 函数会返回一个 3dObject。

<edit>

这些块应该是类似于我的世界中的某种块(grassCube,dirtCube,...)所以我想在地图中加载一个块的多个实例

</edit>

我怎样才能做到这一点 ?有人可以给我任何想法或参考吗?

是的,我已经查看了所有可访问的资源/纪录片/示例,但无论如何我都无法弄清楚。

更新:

问题更多的是编码。我知道这个理论,但游戏开发的 actionscript3 对我来说几乎是新的。

如何为“块”构建类?

4

1 回答 1

1

大多数 3D 应用程序实际上都是基于图块的。例如,流行的地形实现是一组具有高分辨率混搭用于近距离和低分辨率的块。这些块(以及场景中的每个对象)都组织在场景图中。通常它的八叉树八叉树地形

还有截锥体剔除

引擎只渲染部分(或全部)在视图金字塔内的节点。

这里是Away3D的实现

特定案例的优化同样非常重要,但也非常棘手。例如,地形网格顶点顺序和块大小针对 GPU 追逐命中进行了优化,并且可能是 GPU 特定的(为特定客户端构建),同时与纹理和阴影的数量相关(如果不需要,您不想交换材质所以最好用相同的材​​料一个接一个地渲染块然后交换材料)或者如果你有 1000 个纹理立方体,你只需要一个模型,它将用不同的材料绘制 1000 次。这对 GPU 内存有好处,但它就像 10000 次绘图调用,可能会严重损害您的性能。因此,您可能希望将它们焊接到更适合八叉树节点并具有组合纹理的更大对象上。但是你显然想丢弃那些在地下并且看不到的立方体。

于 2012-11-15T04:53:37.477 回答