Такое бы только, с расстановкой объектов внутри тайлов ( только 3д, например, комнат). А ещё круто было бы посмотреть на исполнение алгоритма Maze and Rooms - очень интересный алгоритм
Да, Maze and Rooms это вроде больше концепция, там можно применять разные алгоритмы чтобы раскидать комнаты по карте, потом разные алгоритмы чтобы лабиринт корридоров сгенерить. Как раз что-то среднее между этим видео и видео про генерацию подземелий думаю дальше сделать, чтобы комнаты спаунились вместо 2д клеточек
7:12 Зачем учить плохому? Ты не используешь GameObject, а сразу берешь Cell, так почему бы не заменить переменную CellPerfab на тип Cell и тогда не надо будет вызывать грузовик (в плане нагрузки) GetComponent, а сразу получать нужный компонент при спавне, если лабиринт очень большой это сэкономит значительное время 9:37 Еще одна ошибка, ну или скорее нарушение структуры кода. Да, такой флаг это оптимально по производительности. Но ты создаешь лишнюю переменную в классе, который, как сам сказал в начале, может использоваться другими генераторами. Намного проще было добавить все клетки в лист и потом просто производить проверку List.Find(Cell) == null Но опять же это не ошибка, а скорее просто придирка, которая важна только если работаешь в компании или с командой Хотя если если смотреть на твой код с точки зрения рефакторинга, то и класс генерации по хорошему статик, чтобы новые объекты не плодить и много чего еще. Так что наверное опущу. В остальном отличный урок
IndexOutOfRangeException: Index was outside the bounds of the array. MazeGenerator.RemoveWallLeftBotton (MazeGeneratorCell[,] Lab) (at Assets/LabGenerator.cs:54) LabGenerator.GeneratorLabirint () (at Assets/LabGenerator.cs:35) WallSpawn.Start () (at Assets/WallSpawn.cs:11) Не могу, почему ошибка .
не могу воспроизвести вообще код, начала с "решетки", не воспроизводит, решила, что проблема в коде и просто начала в той же последовательности шлепать твой код, все проставлено, не работает, что делать? может ли это быть из-за версии?
Здравствуйте , а вы можете подсказать как увеличить стены лабиринта ? Я пытался увеличить размеры стен , но не выходило . Может кто нибудь знает , как это сделать?
Когда можешь идти куда-то не возвращаясь назад, и прийти в ту же клетку. То есть если удалить какую-нибудь стену между двумя коридорами в моём лабиринте, то скорее всего получится цикл. С ними запутанее выглядит лабиринт, и не проходится если просто всегда сворачивать только направо или только налево
Можно вместо линий сделать модельки стен какие-нибудь, поменять координаты в MazeSpawner, и будет 3D. Но чтобы красиво было конечно надо ещё добавить разнообразия, что-нибудь вроде чанков из видео про подземелья можно сюда вставить вместо клеточек, и тогда будут получаться большие и запутанные карты
Добавить в Cell рядом со стенами ссылку на пол, какой-нибудь public GameObject Floor; А в MazeSpawner.Start() смотреть, если x == maze.GetLength(0)-1, и тоже самое с y, значит сейчас последний ряд ячеек, и выключать/уничтожать c.Floor, так же как и стены выключаются
Здравствуйте ваш урок прекрасен , но можно ли задать вопрос? как мне сохранить генерированный лабиринт в сцене? чтоб один и тот ж лабиринт грузился ? как мне его сохранить через плеер префс?
Самый красивый способ, хотя он не всегда подходит, это сохранять сид генератора перед созданием лабиринта. То есть примерно напписать перед тем как запускать первый раз генератор: int seed = Random.Range(-100000,100000); PlayerPrefs.SetInt("seed", seed); Random.InitState(seed); А перед тем как запускать второй раз (при загрузке), int seed = PlayerPrefs.GetInt("seed"); Random.InitState(seed); Ну и отдельно тогда сохранить всякое вроде положения игрока, и прочего что есть в геймплее
Привет! Видео классное! Мне понравилось, всё понятно объясняешь. Правда у меня не получается полноценный лабиринт. Дружище, не знаю слышишь ли ты меня, я писал в твоём дискорд чате в #помощь (gengiank). Надеюсь ты там увидишь и сможешь помочь. К видео однозначно лайк)
когда я смотрю эти видео у меня острое чувство неполноценности
А почему именно неполноценности?
Невероятно интересно! Спасибо.
Как всегда отлично вышло, спасибо за урок! Пожалуйста, продолжайте.
Спасибо, как всегда лучший! 👍👍👍
Изменил алгоритм под свои нужды (каждая клетка либо стена, либо нет) работает отлично.
топчик.) Написал месяц назад где то генератор лабиринтов похожий на с++ + SFML, а сейчас решил разобраться с юнити вообще. И тут такой подгончик.)
Коротко и по делу, в самый раз
Спасибо, качественно делаешь! Можешь в будущем рассказать про Tilemap и с чем его едят? :)
Спасибо! Как раз записываю в заметки что можно интересного рассказать про Tilemap, как наберётся обязательно сделаю видео
@@EmeraldPowder можете помочь а как сделать для 2 или более играку
17:34 за это лайк, спасибо)
Спасибо, я теперь понял как писать алгоритм
Такое бы только, с расстановкой объектов внутри тайлов ( только 3д, например, комнат). А ещё круто было бы посмотреть на исполнение алгоритма Maze and Rooms - очень интересный алгоритм
Да, Maze and Rooms это вроде больше концепция, там можно применять разные алгоритмы чтобы раскидать комнаты по карте, потом разные алгоритмы чтобы лабиринт корридоров сгенерить. Как раз что-то среднее между этим видео и видео про генерацию подземелий думаю дальше сделать, чтобы комнаты спаунились вместо 2д клеточек
@@EmeraldPowder, согласен) жду с нетерпением) просто как совместить думаю комнаты и лабиринты
Спасибо за идею, мне нужно для 3д мира, и я все делал в ручную, но теперь я заполню локацию комнатами и буду удалять не нужное))
блин... как до этого дойти своим умом?? спасибо за видео!
7:12 Зачем учить плохому? Ты не используешь GameObject, а сразу берешь Cell, так почему бы не заменить переменную CellPerfab на тип Cell и тогда не надо будет вызывать грузовик (в плане нагрузки) GetComponent, а сразу получать нужный компонент при спавне, если лабиринт очень большой это сэкономит значительное время
9:37 Еще одна ошибка, ну или скорее нарушение структуры кода. Да, такой флаг это оптимально по производительности. Но ты создаешь лишнюю переменную в классе, который, как сам сказал в начале, может использоваться другими генераторами. Намного проще было добавить все клетки в лист и потом просто производить проверку List.Find(Cell) == null
Но опять же это не ошибка, а скорее просто придирка, которая важна только если работаешь в компании или с командой
Хотя если если смотреть на твой код с точки зрения рефакторинга, то и класс генерации по хорошему статик, чтобы новые объекты не плодить и много чего еще. Так что наверное опущу.
В остальном отличный урок
возможно глупый вопрос, но почему из полей Height и Width вычетают 2?
Спасибо, очень интересно!
IndexOutOfRangeException: Index was outside the bounds of the array.
MazeGenerator.RemoveWallLeftBotton (MazeGeneratorCell[,] Lab) (at Assets/LabGenerator.cs:54)
LabGenerator.GeneratorLabirint () (at Assets/LabGenerator.cs:35)
WallSpawn.Start () (at Assets/WallSpawn.cs:11)
Не могу, почему ошибка .
в функции ты обращаеся к списку по индексу который юольше чем длина самого списка
@@f1f1stashka так а пофиксить-то как
не могу воспроизвести вообще код, начала с "решетки", не воспроизводит, решила, что проблема в коде и просто начала в той же последовательности шлепать твой код, все проставлено, не работает, что делать? может ли это быть из-за версии?
а как заполнить этот лабиринт например мусором, листьями, камнями и так далие?
Console. WriteLine("need more") ;
Интересно он будет работать с Navigation Mesh
Помогите мне пожалуйста я никак не могу сделать 0:28 эту сцену с маленьким зелёным шариком..
...
Скачай готовый проект, там можно поразбираться как всё устроено, что отвечает за движение игрока, что за генерацию лабиринта
Расскажи пожалуйста про obj pool
Здравствуйте , а вы можете подсказать как увеличить стены лабиринта ? Я пытался увеличить размеры стен , но не выходило . Может кто нибудь знает , как это сделать?
Как можно сделать чтоб Width и Height можно было менять в редакторе юнити а не только в скрипте?
Десять человек, не нашедших выхода из лабиринта поставили дизлайки.
Привет, спасибо тебе за урок!
Что такое циклы в лабиринтах?
Когда можешь идти куда-то не возвращаясь назад, и прийти в ту же клетку. То есть если удалить какую-нибудь стену между двумя коридорами в моём лабиринте, то скорее всего получится цикл. С ними запутанее выглядит лабиринт, и не проходится если просто всегда сворачивать только направо или только налево
А как разделить сцену на клетки?
Такое же бы да в 3D.
Можно вместо линий сделать модельки стен какие-нибудь, поменять координаты в MazeSpawner, и будет 3D. Но чтобы красиво было конечно надо ещё добавить разнообразия, что-нибудь вроде чанков из видео про подземелья можно сюда вставить вместо клеточек, и тогда будут получаться большие и запутанные карты
спасибо
Как удалять пол на крайних клетках, как в первом видео стены?
Добавить в Cell рядом со стенами ссылку на пол, какой-нибудь public GameObject Floor; А в MazeSpawner.Start() смотреть, если x == maze.GetLength(0)-1, и тоже самое с y, значит сейчас последний ряд ячеек, и выключать/уничтожать c.Floor, так же как и стены выключаются
За урок однозначный лайк. Только "кюррент" ухо режет.
Но чёрт возьми, каааак? Как можно додуматься до этого всего????? Долго ты это делал, подскажи пожалуйста =)
Все навыки с опытом приходят, если долго пытаться всякие игрушки делать, то рано или поздно научишься такое быстро придумывать )
ПОЧЕМУ У ТЕБЯ ТАК МАЛО ПОДПИСЧИКОВ???
А в каком формате ты создавал проект ? 2D или 3D ?
2
Здравствуйте ваш урок прекрасен , но можно ли задать вопрос? как мне сохранить генерированный лабиринт в сцене? чтоб один и тот ж лабиринт грузился ? как мне его сохранить через плеер префс?
Самый красивый способ, хотя он не всегда подходит, это сохранять сид генератора перед созданием лабиринта. То есть примерно напписать перед тем как запускать первый раз генератор: int seed = Random.Range(-100000,100000); PlayerPrefs.SetInt("seed", seed); Random.InitState(seed);
А перед тем как запускать второй раз (при загрузке), int seed = PlayerPrefs.GetInt("seed"); Random.InitState(seed);
Ну и отдельно тогда сохранить всякое вроде положения игрока, и прочего что есть в геймплее
@@EmeraldPowder а можно для чайников объяснить как это впихнуть в ваш скрипт? Ps. мне очень нужна система сидов.
а можно мне пожалуйста скрипт движения с этого ролика
ALT+Колёсико вверх
Когда ты уже *УВЕЛИЧИШЬ* текст, надо жмуриться что-бы увидеть что ты там пишешь
Не работает метод по удалению стен
прости, сам сделал опечатку спасибо за видос
Не дырка, а отверстие
Моск обиделся и ушёл. Как можно всё это знать?)
Спасибо) На самом деле если долго смотреть на гифку в википедии то алгоритм генерации совсем не кажется сложным
Б563
Привет! Видео классное! Мне понравилось, всё понятно объясняешь. Правда у меня не получается полноценный лабиринт. Дружище, не знаю слышишь ли ты меня, я писал в твоём дискорд чате в #помощь (gengiank). Надеюсь ты там увидишь и сможешь помочь. К видео однозначно лайк)
Когда я увидел что ты удалил МоноБехавиор я понял что это не мое