在Flash AS3和&amp ;;中为对象创建自定义类。 Away3D中

时间:2012-11-14 23:08:43

标签: actionscript-3 flash class 3d away3d

我将使用Away3D API在Flash AS3中制作基于磁贴的3D RPG游戏。

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

我想制作一个“块”类。如果我加载tile-map-data,我想做这样的事情:

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

所以这将是一个循环。

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

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

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

所以myBlocksClass中的getBlock功能会给我一个3dObject。

<edit>

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

</edit>

我该怎么做?有没有人可以给我任何想法或者参考?

并且我已经查看了所有可用的资源/文档/示例,但无论如何我都无法搞清楚。

更新

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

如何为“块”构建类?

1 个答案:

答案 0 :(得分:1)

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

还有frustum culling

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

Here is Away3D realisation

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