2016-08-05 4 views
0

Я хочу создать изменяемый мир (и, возможно, также процедурно сгенерированный), но я не знаю, как это сделать через скрипт.Возможная местность в Unity3D?

Есть несколько примеров, которых у меня есть несколько вопросов о:

Minecraft

Это легко сделать процедурно сгенерированный формующейс мир из кубиков, но я не знаю, как сделать это оптимально. Укрепляет ли единство ручку много кубов?

Landmark

В этой игре вы можете формировать мир, и он использует Unity как местность. Он похож на Minecraft, но он не такой кубический. (Итак, когда вы копаете в земле, вы копаете ~, как в реальной жизни. Таким образом, вы не копаете куб кубом, как в Minecraft)

Возможно ли сформировать время рельефа местности?

Спасибо за вашу помощь заранее!

+0

Какая платформа вы планируете работать дальше? – Droppy

+0

Я думаю, что только ПК – Tudvari

+3

Этот вопрос был задан раз в 1000 раз. В хранилище активов есть *** *** старшеклассников и стартовых наборов ***, или вы даже можете найти бесплатное программное обеспечение (посмотрите на форуме Unity и т. Д.). (Непостижимо, что вы можете запрограммировать его сами с нуля, это займет 2-3 года.) Просто Google «наборы для миникрафта для Unity». Такой общий вопрос для гамедева.com, не здесь – Fattie

ответ

1

Это легко сделать процедурно сгенерированный формующейс мир из кубиков

Короткий ответ, нет, это не так просто. Вы должны использовать некоторый тип шума для создания высот (как воксели шума, here's a blog tutorial)

[Есть] единство достаточно сильны ручки много кубиков?

Нет, на его собственном единстве не будет обрабатываться количество кубов, необходимых для клона minecraft, очень хорошо. Статистически говоря, вы никогда не сможете увидеть все 6 граней куба, поэтому рендеринг всех 6 является расточительным. Кроме того, каждый куб будет иметь свой собственный коллайдер, который будет быстро загромождать. Также вам не нужно отображать куб, если он заблокирован другими кубами. Все это требует сложного кода оптимизации, чтобы он работал эффективно, когда вы изменяете ландшафт и перемещаетесь по миру.

Возможно ли сформировать среду рельефа?

Да, вот некоторый код, я украл из this question:

function Start() 
{ 
    terrain = GetComponent(Terrain); 
    var nRows = 50; 
    var nCols = 50; 
    var heights = new float[nRows, nCols]; 
    for (var j = 0; j < nRows; j++) 
     for (var i = 0; i < nCols; i++) 
      heights[j,i] = Random.Range(0.0,1.0); 
    terrain.terrainData.SetHeights (0,0,heights); 
} 

и вот на TerrainData.SetHeights() справки о
https://docs.unity3d.com/ScriptReference/TerrainData.SetHeights.html

1

Вы можете изменить Unity, построенный на карте высоты местности: TerrainData.SetHeights. Вам нужно будет определить какую-то кисть, как рисовать кратер, зависит от ваших потребностей.

Смежные вопросы