【问题标题】:Making a custom class for objects in Flash AS3 & Away3D为 Flash AS3 和 Away3D 中的对象创建自定义类
【发布时间】:2012-11-14 23:08:43
【问题描述】:

我将在 Flash AS3 中使用 Away3D API 制作一个基于图块的 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 对我来说几乎是新的。

如何为“块”构建类?

【问题讨论】:

    标签: actionscript-3 flash class 3d away3d


    【解决方案1】:

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

    还有frustum culling

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

    Here is Away3D realisation

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

    【讨论】:

    • 是的,解释得很好,但我知道所有这些东西。 ^^ 我的任务更多的是代码。所以在 c# ( d3d, xna, opengl ) 中,我只需要创建一个列表,然后在类中定义网格、位置、材质等。但我不知道如何在 actionscript3 中做到这一点。我试图制作一个包含我的自定义类的二维数组,在那里我只是拥有一个planeGeometry。但我并没有真正工作。我也不知道如何在 as3 中创建实例以防止您写的内存问题...
    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2012-05-26
    • 2020-06-28
    • 2011-01-29
    相关资源
    最近更新 更多