В этой небольшой статье познакомимся с шумом в виде OpenSimplexNoise, с тем как его подключить и получить его данные.
Брать будем «вес» шума, и применять для трансформаций неких нод. Это могут быть как тайлы, так и всякого рода рисованые элементы в виде линий, кругов и прочего.
Обычно шум используют для создания рандомных карт, рандомных расположений обьектов и так далее.
В примере выше я использовал «вес» для расстановки красных и синих элементов на сетке, и чуть ниже расставлял зеленые кубики по оси Y исходя из данных шума. Например это может быть поверхность уровня в платформере.
За работу !
Создаем шум либо через код, либо через ресурс. Я выбрал второй способ так как мне так проще.
(Я создаю Noise Texture для того чтобы засунуть эту текстуру в спрайт для наглядности. Непосредственно в Noise Texture я загружу шум. Скрин ниже)
В моем случае я сделал размеры шума 100х100.
Далее сохраняем ресурс, создаем в сцене спрайт и закидываем ресурс в текстуру.
Отлично, теперь мы можем видеть визуально наш шум.
Подключаем скрипт на корневую ноду. И начинаем писать код.
Я рисовать буду при помощи рисовалки. Вы же , в свою очередь можете применять трансформации к вашим нодам.
Для начала — подгрузим наш ресурс в переменную. Далее в ready() вынесем в переменную наш шум из ресурса.
И теперь при помощи get_noise_2d() мы можем брать «вес» пикселя по координате. Функция возвращает нам данные в диапазоне -1,1.(черный=-1,серый=0,белый=1)
Так как у нас размеры шума 100х100, то мы можем представить эту картику как массив.
Ну и далее всё что нам остается , это пробежаться по массиву и назначить эти данные на элементы draw().
В моем случае это круг (draw_circle) и квадраты (draw_rect).
Надеюсь вам был полезен этот материал.
Подписывайтесь на канал, вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !
#godot #gdscript #игровой движок #уроки #программирование