Tutorials

Процедурные уровни

В этом проекте используется функция clone() на Entity для случайной генерации уровня из сущностей, созданных в редакторе.

Попробуйте это в редакторе в учебном проекте.

Приведенный ниже скрипт - это очень простая программа генерации уровней. Он берет две сущности, настроенные в редакторе: 'Grass' и 'House', и использует их в качестве плиток для уровня на основе сетки. Уровень создается путем случайного выбора одной из плиток, клонирования плитки для создания новой сущности, а затем размещения новой сущности в правильной позиции сетки.

var Generate = pc.createScript('generate');

Generate.attributes.add('numTilesX', {
    type: 'number',
    default: 10
});

Generate.attributes.add('numTilesY', {
    type: 'number',
    default: 10
});

// инициализация кода, вызываемая один раз для каждой сущности
Generate.prototype.initialize = function() {
    // Мы создали несколько шаблонов, которые являются нашими мировыми плитками
    // В иерархии редактора мы отключили шаблоны, потому что
    // мы не хотим, чтобы они были видимы. Мы просто хотим, чтобы наш сгенерированный
    // мир был видимым
    var templates = this.app.root.findByName('Templates');
    var grass = templates.findByName('Grass');
    var house = templates.findByName('House');

    for (var y = 0; y < this.numTilesY; y++) {
        for (var x = 0; x < this.numTilesX; x++) {
            // Выбираем случайную плитку, с большей вероятностью травы, чем дома
            var tile = (Math.random() > 0.8) ? house : grass;

            // Клонируем плитку
            var e = tile.clone();

            // Устанавливаем мировую позицию клонированной плитки. Обратите внимание, что из-за
            // того что наши плитки имеют размеры 10x10 в измерениях X, Z, мы должны умножить
            // позицию на 10
            e.setPosition((x - this.numTilesX / 2) * 10, 0, (y - this.numTilesX / 2) * 10);

            // Добавляем плитку в иерархию сцены
            this.app.root.addChild(e);
        }
    }
};

Issue Tracker

Если вы обнаружите ошибку или у вас есть предложение по улучшению, пожалуйста, создайте новый тикет в Issue Tracker.

Tutorial Thumbnail

Tutorial Thumbnail

Создание материалов

Материалы определяют внешний вид объектов в вашей сцене. В этом руководстве вы узнаете, как создавать и настраивать материалы.

Создание материала

Чтобы создать новый материал, перейдите во вкладку Assets и нажмите кнопку Add Asset. Затем выберите Material Asset.

Create Material

Настройка материала

Чтобы настроить материал, дважды щелкните по нему во вкладке Assets. Это откроет Material Inspector.

Material Inspector

Основные параметры

Основные параметры материала включают:

Расширенные параметры

Расширенные параметры материала включают:

Применение материала к объекту

Чтобы применить материал к объекту, перетащите материал из вкладки Assets на объект во вкладке Entity.

Apply Material

Создание шейдеров

Вы также можете создавать собственные шейдеры для материалов. Чтобы создать новый шейдер, перейдите во вкладку Assets и нажмите кнопку Add Asset. Затем выберите Shader Editor.

Create Shader

Настройка шейдера

Чтобы настроить шейдер, дважды щелкните по нему во вкладке Assets. Это откроет Shader Editor.

Shader Editor

Редактирование шейдера

В Shader Editor вы можете редактировать вершинный и фрагментный шейдеры. Вы также можете добавлять и удалять узлы, а также изменять их свойства в Node Inspector.

Node Inspector

Работа с текстурами

Чтобы добавить текстуру в шейдер, перетащите текстуру из вкладки Assets на холст Graph Editor. Затем дважды щелкните по текстуре, чтобы открыть Texture Inspector.

Texture Inspector

Работа с графами

Вы можете создавать и редактировать графы в Graph Editor. Чтобы добавить новый узел, щелкните правой кнопкой мыши на холсте и выберите Add Node. Чтобы редактировать свойства узла, дважды щелкните по нему, чтобы открыть Graph Inspector.

Graph Inspector

Пример

Вот пример проекта, демонстрирующего создание и настройку материалов и шейдеров: Materials and Shaders.

This site is translated by the community. If you want to get involved visit this page