2012-11-14 47 views
0

我將用Away3D API在Flash AS3中製作基於圖塊的3D RPG遊戲。爲Flash AS3和Away3D中的對象製作自定義類

我的問題是,我真的不明白的Away3D API至今..

我希望做一個「塊」級。如果我加載瓷磚地圖數據,我想這樣做:

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

所以這將是一個循環。

到目前爲止這麼好,但這必須是3dObject。

用這個3dObject填充數組,我想做這樣的事情。

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

所以getBlock functon在myBlocksClass中應該返回一個3dObject。

<edit>

那些塊應該是某種塊的像的Minecraft(grassCube,dirtCube,...) 所以我要加載一個塊的多個實例中的地圖

</edit>

我該怎麼做?任何人都可以給我任何想法或參考嗎?

是的我已經看過所有的可撤銷的資源/ documentarys /例子,但我無論如何也無法想象它。

UPDATE:

問題是更多的代碼。我知道這個理論,但是遊戲開發的actionscript3對我來說幾乎是新的。

如何構造「塊」的類?

回答

1

大多數3D應用程序實際上都是基於圖塊的。例如,受歡迎的地形實現是一組高分辨率麥克風,用於近距離和低距離。這些塊(以及場景中的每個對象)都按場景圖組織。通常爲octreeOctree terrain

Allso有frustum culling

和發動機使得只有那些部分(或全部)查看金字塔內部節點。

Here is Away3D realisation

具體案件的優化allso非常重要的,但很棘手。例如地形網格頂點順序和塊大小,針對GPU chace命中進行了優化,並且可能是GPU特定的(針對特定客戶端構建的),並且同時與紋理和陰影的數量相關(如果不需要,則不想交換材質所以最好是用相同的材​​料逐塊渲染塊,然後交換材料)或者如果您有1000個紋理立方體,您只需要一個模型,將使用不同材質繪製1000次。這對於GPU內存來說很好,但它的10000次繪製調用卻可能會嚴重影響你的性能。所以你可能想要將它們焊接到更大的物體上,這些物體很適合八叉樹節點並具有組合紋理。但是你顯然想要拋棄那些地下的,不可見的立方體。

+1

耶很好解釋,但我知道所有的東西。 ^^ 我的問題是更多的代碼。我只需要創建一個列表,並在類中定義網格,位置,材質等等。但我不知道我可以如何在actionscript3中做到這一點。我試着做一個2d數組來保存我的自定義類,在那裏我只有一個planeGeometry。但我真的沒有工作。我也不知道如何在as3中使用實例來防止你寫的內存問題... – Ace