Процедурная генерация бесконечного уровня [Unity 3D] [Tutorial] - часть 1

  Рет қаралды 85,492

Emerald Powder

Emerald Powder

5 жыл бұрын

Как создать простой бесконечно генерируемый уровень для линейной игры, вроде раннера или side-scroller'a. Процедурная генерация уровней это вообще процесс творческий, и существует много подходов, в зависимости от геймплея, размера уровня, и количества контента в игре. Я покажу один из них, который можно применить во многих играх, где игрок бесконечно двигается по уровню
Ссылка на готовый проект: github.com/emeraldpowder/Proc...
Ссылка на вторую часть: • Процедурная генерация ...
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

Пікірлер: 150
@illyagrush5884
@illyagrush5884 4 жыл бұрын
Я влюблен в этот канал, я думаю у всех начинающих разрабов встречается такой момент, когда браться з слишком легкие проекты не хочется, так как очень скучно, а более сложные ты не тянешь, так вот с помощью этого канала я продолжил развитие)
@edenty1716
@edenty1716 3 жыл бұрын
you prolly dont care but if you are bored like me during the covid times then you can stream all of the latest movies and series on instaflixxer. Have been binge watching with my girlfriend during the lockdown xD
@wilsondeshawn6847
@wilsondeshawn6847 3 жыл бұрын
@Eden Ty Yup, I have been using InstaFlixxer for since november myself =)
@dmc9370
@dmc9370 2 жыл бұрын
@TVmine-craft я вот сообразил сетку чанков 3 на 3 которая при перечислении границы чанка создаёт в переди допольные 3 чанка и удаляет 3 с зади Вроде и принцип роботы понятно...а кодить как?!
@seldemirov
@seldemirov 5 жыл бұрын
Как же я этого ждал! Спасибо!!!!
@Trokkin
@Trokkin 5 жыл бұрын
Айес, роглайки Мне подача понравилась, голос приятный и информации ровно столько, сколько нужно чтобы понять. Даже захотелось пойти в юнити чего-нибудь сделать.
@rasfront
@rasfront 4 жыл бұрын
Красава, по существу, очень просто и понятно объясняешь. Я никогда не работал в Unity но с этим уроком примерно уже понял как это делать))
@lngn8894
@lngn8894 4 жыл бұрын
Записался на платные курсы по Unity, а обучаюсь тут) Контент топ, большое спасибо!
@borismakarevich9733
@borismakarevich9733 3 жыл бұрын
Классный полезный урок, спасибо)
@azret-magometov
@azret-magometov 4 жыл бұрын
шикарный видос, спасибо)
@SliderFF
@SliderFF 5 жыл бұрын
отличный пример использования списков, спасибо.
@alexeyrival
@alexeyrival 5 жыл бұрын
Отличный видос! Лайк-подписка-колокол, жду продолжения!
@user-sf9ib9wj7j
@user-sf9ib9wj7j 3 жыл бұрын
Шикарно!
@user-ep6jv2gf1i
@user-ep6jv2gf1i 5 жыл бұрын
Пасиба я б не сделал без тебя, тьі лучший
@user-mw4pw8vr2j
@user-mw4pw8vr2j 4 ай бұрын
Видео огонь
@Th_VOID
@Th_VOID 5 жыл бұрын
Теперь знаю как надомную генерацию сделать, спасибо)
@himerawyvern9748
@himerawyvern9748 4 жыл бұрын
Надомную?
@SidiussGD
@SidiussGD Жыл бұрын
чел, ты лучший
@RakovskiyStudio
@RakovskiyStudio 10 ай бұрын
Благодарю!!!😘
@krabbbit
@krabbbit 4 жыл бұрын
спасибо огромное
@zhivoder915
@zhivoder915 Ай бұрын
Спасибо, правда час промучался, не мог понять почему у меня вставляется не там где надо, а оказывается, что есть зависимость от Scale объекта, пришлось умножить все координаты на LossyScale
@felixromanchenko3330
@felixromanchenko3330 4 жыл бұрын
Интересная реализация, но я сделал немного иначе Разместил два триггера спереди и сзади игрока на определенном расстоянии. У переднего в функции OnTriggerExit() спавню часть уровня, у заднего в OnTriggerEnter() убираю то, что не видно
@psy_gamer
@psy_gamer 5 жыл бұрын
Сделано отлично! Но стоит использовать пул объектов, чем их создание на сцене, так игра будет более оптимизирована)
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
Спасибо! Да, полностью согласен, это идеальный пример для использования пула, где куча одинаковых объектов удаляются и снова создаются
@VirtualityLife
@VirtualityLife 5 жыл бұрын
@@EmeraldPowder Речь о встроенном Pro Builder ?
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
@@VirtualityLife Pro Builder тут тоже можно было бы применить, тогда бы было удобнее делать уровни/чанки. Но пул объектов это про то что когда вместо уничтожения объекта мы скриптом его выключаем, а вместо создания (Instantiate), которое является довольно тяжёлой операцией, ищем уже созданные и выключенные и их включаем. Вот примерно об этом статья: habr.com/ru/post/275091/ Кстати хорошая тема для какого-нибудь следующего видео
@Darth_Sottoth
@Darth_Sottoth 4 жыл бұрын
Очень интересно . Код воспроизвел в 2д варианте. Точки начала и конца расставляются, чанты тоже видно, но что то не появляются новые( Только в 3д работает? или надо искать какие то ошибки?
@oldborodach
@oldborodach 2 жыл бұрын
Спс попробую надеюсь получится. 🤔
@Djrayli2
@Djrayli2 4 жыл бұрын
подача супер, подписался. Недавно делал аналогичную генерацию, только для "удаления" и создания использовал пул. Как вариант еще попробовать вместо объектов с началом и концом чанка использовать позицию меша Mesh.bounds если не ошибаюсь. В целом генерация это круто но тяжело с оптимизацией. свет не запеч occolusion culling не включить итд. Если есть какие то варианты оптимизации напиши плиз.
@thetraveler7779
@thetraveler7779 4 жыл бұрын
👍🏻
@Anexikond
@Anexikond 3 жыл бұрын
Чанков много не бывает
@user-pm6xu3ji2z
@user-pm6xu3ji2z 4 жыл бұрын
Интересно ещё разобраться с тем, как выполняется создание больших карт с погрузкой локаций по мере приближения игрока
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Можно сделать все чанки одинакового размера, и точно таким же способом генерировать новые чанки как в этом видео, но только перед удалением сохранять в PlayerPrefs что в данных координатах стоит этот чанк. И потом если игрок вернулся назад, то смотреть есть ли уже сохранённое название чанка по текущим координатам, и если есть то спаунить не случайный подходящий, а тот что сохранён. По сути на 2д миры так же можно расширить это Но там ещё всякие техники есть со всякими шумами, хитростями с seed'ами случайных генераторов, и прочим
@user-tx9kx1yh8f
@user-tx9kx1yh8f 2 жыл бұрын
@@EmeraldPowder спасибо ;-)
@FisCut
@FisCut 4 жыл бұрын
Сделай с про билдером(что-бы менялся только рельеф плиты)
@egoregor509
@egoregor509 4 жыл бұрын
Денис, спасибо тебе! А чисто если брать 2d раннер, просто бесконечную дорогу сделать, по такому же принципу стоит делать?
@user-fy5lq3rg9f
@user-fy5lq3rg9f 4 жыл бұрын
На сколько я понял, можно сделать и так. Однако раннер на то и раннер, что там должно быть больше чанков, и более умный placer.
@user-sj5yu1ff4c
@user-sj5yu1ff4c 4 жыл бұрын
Привет, хорошие вещи делаешь, подскажи пожалуйста, текстура камня по которому ты двигаешь она бесплатная? Или ее нужно где то покупать?
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Всё из этого проекта моделил и рисовал я, скачать проект с ассетами можно по ссылке в описании
@Roman_SBB
@Roman_SBB Жыл бұрын
Подскажите как сделать подобную подсветку персонажа на сцене или светильник. Размещением локального источника внутри объекта, получается как-то не очень
@NEOMILLITARIST
@NEOMILLITARIST 3 жыл бұрын
Здравствуйте! Скажите пожалуйста как заменить рандомный метод, на строго по списку?
@didi_music_russia
@didi_music_russia 4 жыл бұрын
У меня компилятор сразу жалуется на незнание пространства имен chunk, может нужно подключать какую директиву using? Подскажи, пожалуйста.
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Chunk это класс а не пространство имен, может с опечаткой или с маленькой буквы написано?
@RazorV1991
@RazorV1991 4 жыл бұрын
Спасибо за видео! А что делать, если выходит ошибка Destroying assets is not permitted to avoid data loss?
@user-jk3ki7lf3y
@user-jk3ki7lf3y 2 жыл бұрын
у меня таже проблема
@sandrok14
@sandrok14 4 жыл бұрын
Спасибо за ваши видео! Можете пожалуйста объяснить на 6:18 минуте. Почему мы вычитаем локальную позицию а не прибавляем к старой. Я думал что при вычитании чанки должны наложиться друг на друга.
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Спасибо что смотрите) В таких случаях чтобы понять что происходит в 2д или 3д можно в одномерном пространстве порассуждать - если у нас старый чанк закончился на 100 метрах, а у нового локальное положение Begin'a == -2. Тогда чтобы они подошли друг к другу нужно поставить pivot/origin чанка в координату 102, тогда глобальное положение Begin'a нового чанка будет 100, как раз подсоединится к старому. То есть нужно подсчитать 100 - (-2), значит и в 2д/3д случае тоже отнимаем, там уже сложнее представить
@sandrok14
@sandrok14 4 жыл бұрын
@@EmeraldPowder Большое спасибо за подробное объяснение. Буду смотерть вас дальше!
@traderslick9763
@traderslick9763 5 жыл бұрын
Уважаемый автор, Я - чайник, но хотел бы освоить геймдев в юнити. Твои видео прекрасны, но я пока не знаю даже основ и хотел бы изучать юнити более систематично, что-ли. Какие учебники/плейлисты(?) ты подскажешь? Спасибо!
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
Конкретных плейлистов я наверное не подскажу. Но если есть какое-то представление о программировании, даже там со школы с Паскалём или что-то такое, то я бы советовал смотреть видюшки как люди делают простые игры, вроде клонов каких-нибудь аркад из Google Play за два-три часа целиком, и пробовать параллельно делать. После пары таких повторённых проектов уже можно с уверенностью свой небольшой сделать. У меня пока таких серий нет, где я игру целиком делаю, только планирую снять, но на русском ютубе я встречал немало таких годных видео
@traderslick9763
@traderslick9763 5 жыл бұрын
@@EmeraldPowder , понял, спасибо! =)
@mark2st160
@mark2st160 Жыл бұрын
Топ, а можно готовый скрипт, кому не трудно?) Зарание спасибо 😘
@dislore5059
@dislore5059 4 жыл бұрын
Привет. Слушай у меня проблема, сделал всё как на видосе, но ничего не пашет, делаю игру в 2д и после прохождения через тригер ничего не происходит. Что делать?
@unityrututorials1327
@unityrututorials1327 2 жыл бұрын
А если назад пойти то всё? как в разные стороны реализовать? Мне вообще надо вид сверху там в 8 сторон пулучается 4 по бокам и 4 по углам
@bilikqrup
@bilikqrup 10 ай бұрын
большое спасибо
@kreiz1747
@kreiz1747 2 жыл бұрын
что делать если чанки спавнятся в километре от точки end?
@MaximBruskov
@MaximBruskov 3 жыл бұрын
Я бы 100 лайков поставил!
@Billionaire_Motivation.mindset
@Billionaire_Motivation.mindset 8 ай бұрын
The object of type 'Chunk' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. что делать? помогите пж
@deniskharchevnikov1382
@deniskharchevnikov1382 5 жыл бұрын
расскажи пожалуйста как ты делаешь такую внешнюю обработку игры. Т е у тебя прям создается эффект ночи, если просто direction light перевернуть такого не добиться
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
В этом проекте чтобы получить такой внешний вид я поставил в камере чтобы она вместо skybox'a просто тёмным цветом рисовала задний фон, уменьшил яркость ambient lighting в настройках освещения, и сделал не такой яркий главный directional light на сцене. И ещё конечно добавил на камеру пост-процессинг, можно скачать проект и посмотреть на его настройки, но и без него выглядело бы как ночь
@aleksy920
@aleksy920 4 ай бұрын
А вот что делать, если у меня не ранер и игрок может возвращаться назад? Ну тоесть когда игрок возвращается там должен находится тот же чанк, что и раньше, а не рандомный
@feliks131
@feliks131 3 жыл бұрын
Помоги пожалуйста я не понимаю как добавить 1 чанк в переменную chunkPlacer. Зарание спасибо
@slowpoke5819
@slowpoke5819 3 жыл бұрын
Хай) не подскажешь, пожалуйста, как ты сделал тайлсеты?
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Привет, для этих ассетов просто в paint.net рисовал текстуры, а моделил в блендере, насколько я помню
@tiktak6549
@tiktak6549 2 жыл бұрын
Помоги пожалуйста, почему то при спавне нового чанка , не распознается его локальная позция.
@leagueofmusic9622
@leagueofmusic9622 2 жыл бұрын
Emerald Powder, я понимаю что видео выпущено уже давно, но если все же увидишь мой коммент, ответь, пожалуйста! Есть ли возможность делать по такому типу чанки с 4 возможными направлениями? Я попытался использовать методику из этого видео, но при попытке выставить новые чанки со смещением по оси Х, они встают уже не так как нужно, а по оси Z. Тут явно проблема с определением позиции чанка, по как ее решить я не могу понять
@EmeraldPowder
@EmeraldPowder 2 жыл бұрын
Если хочется чтобы чанк разветвлялся, например, на три направления, влево-вправо-вперёд, то тут самое главное это сделать поворот следующего чанка который к нему коннектится. То есть когда спауним новый чанк, то надо не только позицию старта задать к позиции прошлого финиша, а поворот всего чанка задать в поворот прошлого финиша. И финиши которые вправо и влево повернуть на 90 градусов в нужную сторону. Тогда всё должно работать
@leagueofmusic9622
@leagueofmusic9622 2 жыл бұрын
@@EmeraldPowder спасибо! Хорошая идея! А я нашел ещё одну, можно сделать универсальный чанк, по типу перекрестка, главное чтобы у него pivot был строго в центре, 0,0,0 в локальных координатах, но в таком случае нужно менять принцип появления новых чанков. Либо по триггерам, либо через Distance, но position.z здесь уже не подойдёт.
@bunnik9844
@bunnik9844 2 жыл бұрын
Помогите пожалуйста, я пытался сделать так, чтобы чанки не повторялись, но ничего не вышло. (я уже видел ниже ответ по этому поводу, но ничего не понял, поэтому пожалуйста по подробнее)
@VLA-dick
@VLA-dick 3 жыл бұрын
А что за программа в самом начале видео, синеватая такая по интерфэйсу? Она платная?
@funk6248
@funk6248 3 жыл бұрын
если не нашел ответа на вопрос, то в Unity в настройках цветов есть функция - Цвет редактора, когда игра запущена, автор изменил её; это сделано с целью, чтобы знать что-то ты тестируешь игру, и изменить что-либо, то при выходе из игры, сцена сбросится к первоначальным значениям до запуска игры
@user-ml5tn8qn8j
@user-ml5tn8qn8j 2 жыл бұрын
UnassignedReferenceException: The variable forward of RoomForward has not been assigned. You probably need to assign the forward variable of the RoomForward script in the inspector. У меня такая ошибка выскакивает Есть идеи почему?
@markmartynchuk4925
@markmartynchuk4925 Жыл бұрын
Есть один вопрос: я весь код написал так как на видео, но когда я нажимаю на иконку скрипта у мені не появляється строка для выбора позиции моих чанков . Что делать ?
@kostyaniekrasov62
@kostyaniekrasov62 3 жыл бұрын
Такая проблема, у меня после того как Плеер пробегает End, спавн чанков происходит не по одному, а сразу где-то штук 200. В чем проблема, может кто-то знает?
@elbarto1000
@elbarto1000 3 жыл бұрын
у меня такая же проблема. Оказалось что мой персонаж бежит в сторону минусовых коородинат. И получается орбатное действие: чанки спавнятся до того как ты пробежишь End. Для решения поменяй сторону направления движения игрока ( в противоположную сторону). Либо в коде if (Player.position.x *
@usilverr
@usilverr 5 жыл бұрын
А что делать если чанки генерируются неправильно, они смещены по оси y, тоесть они генерируются но только снизу тех чанков которые уже есть
@user-tq6sj2hm4c
@user-tq6sj2hm4c 4 жыл бұрын
Решил жту проблему засунув чанк в пустой GameObject у которого размер и позиция в префабе по нулям ;)
@beso300598
@beso300598 4 жыл бұрын
Destroy(spawnedChunks[0].gameObject); тут у меня почему то во время игры вообще пропадают все чанки, а когда 1 вместо 0 пишу то спаунится только один, но другие не спаунятся, хотя у меня весь код такой же как у тебя
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Может быть условие над ним не такое, что не когда их больше трёх проверяет а когда меньше?
@user-ny3ig6sy8t
@user-ny3ig6sy8t 3 жыл бұрын
Привет, канал отличный, У меня вопрос, я воспользовался этим скриптом и все работает ОТЛИЧНО! СПАСИБО! но когда я спауню на префабе объекто они спауняться на месте первого префаба, NavMesh для них есть, я его перезапекаю каждый раз Но они все равно спаунятся на месте первого блока :(, не могу исправить, можете поможете?
@maryjane-jq1cw
@maryjane-jq1cw 4 ай бұрын
Смени работу, геймдев это не твоё
@SashaSurovtsev
@SashaSurovtsev 4 жыл бұрын
Хочу сделать рестарт в игре, при этом надо удалить все чанки и создать стартовый чанк, но никак не выходит. при создании стартового чанка он как-то странно создается , без terraria и скриптов, которые висят на префабе стартового блока(ну они есть, просто не активны) Можешь помочь?
@user-fy5lq3rg9f
@user-fy5lq3rg9f 4 жыл бұрын
А не легче просто перезапускать сцену после рестарта?
@marfa9999
@marfa9999 4 жыл бұрын
Возможно ли сделать в 2д из тайлмапов чанки и по такому же принципу соединять их?
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Из тайлмапов не уверен как будет работать, то есть работать то точно будет, но возможно в итоге будет не очень удобно, что вся карта разбита на кучу сдвинутых в разные координаты тайлмап. Но в целом в 2д должно почти без изменений работать
@marfa9999
@marfa9999 3 жыл бұрын
Emerald Powder спасибо за ответ, все получилось. Сделала префабы тайлмап и написала такую же генерацию как у вас. Все прекрасно заработало)
@nepochat
@nepochat 4 жыл бұрын
Подскажи, пожалуйста, как исключить генерацию одного и того же чанка два раза? А то два чанка друг за другом явно палят всю генерацию
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Да, хорошее дополнение. Можно сохранять в поле номер последнего заспауненого чанка, это lastChunk=i; на 55 строке примерно, и в обоих циклах внутри добавить дополнительное условие if (i !=lastChunk)
@union-svcomunion-isthebest6650
@union-svcomunion-isthebest6650 3 жыл бұрын
@@EmeraldPowder добрый день у Вас можно игру заказать?
@Destroyer69
@Destroyer69 Жыл бұрын
Надеюсь, автор всё ещё читает комменты здесь. С данным скриптом первый чанк всё равно выбирается рандомно. Как сделать, чтобы первый чанк был одним конкретным, а после чанки рандомно генерировались?
@EmeraldPowder
@EmeraldPowder Жыл бұрын
Первый там вроде бы не рандомный, а тот что стоит на сцене, а после него уже идут рандомные. Если хочется сделать ещё несколько конкретных на старте, то можно на сцену два-три чанка положить, а в FirstChunk задать последний из тех что на сцене. Тогда рандомные начнут спауниться после него
@user-cz5dl2cl9s
@user-cz5dl2cl9s 4 жыл бұрын
Доброго времени суток. Я новичок. Попытался повторить увиденное но в 2. Столкнулся с 2мя проблемами: генерируются чанки,накладываясь серединой чанка на конец предыдущего чанка(нет смещения хотя в коде прописывал"-newChunk.first.localPositio" , 2 это когда подходит момент к удалению появляется ошибка: "Destroying assets is not permitted to avoid data loss. If you really want to remove an asset use DestroyImmediate (theObject, true);"
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Первая проблема может быть связанна с тем что у тебя у чанков scale стоит больше 1, у меня код из проекта такое не учитывает, так что надо либо домножить на scale, либо просто сделать у чанков scale=1, и сами объекты внутри увеличить А второе - скорее всего в Destroy передаёшь не объект на сцене, а префаб из папки ассетов, и юнити говорит что не может уничтожить ассет из проекта
@timany8310
@timany8310 2 жыл бұрын
@@EmeraldPowder Не будет ли большое кол-во объектов на сцене нагружать проект?И можно ли как-то сделать,это из префабов?
@emptyman3469
@emptyman3469 2 жыл бұрын
​@@EmeraldPowder Приветствую. И всё таки не совсем понятен ответ. Вот моя ошибка дословно: The object of type Chunk has been destroed by you are still trying to access it Yuor script should either check if it null or you not destroy the object. Т.е. ты говоришь что убиваем старый чанк, а его нельзя уничтожать. Опять же где ему быть как не в ассетах?
@shankovskyy
@shankovskyy 4 жыл бұрын
Пожалуйста, зумьте код. Очень тяжело смотреть в таком мелком масштабе.
@lekojoy7016
@lekojoy7016 Жыл бұрын
У меня не работает рандомный спавн, только тот чанк который последний в списке хоть я и просто скопировал код с ГитХаба
@HM703UTA1
@HM703UTA1 3 жыл бұрын
Что то я не въеду никак. Ругается на ArgumentException: The Object you want to instantiate is null. Конкретно на эту строчку. Chunk newChunk = Instantiate(ChunkPrefabs[UnityEngine.Random.Range(0, ChunkPrefabs.Length)]); Объект то спавнится, но в консоль пихает ошибку. До этого не мог определиться с рандомом. System.Random or UnityEngine.Random и спавнил просто коллайдеры. Второй день голову ломаю и думаю, как может быть null. В чем подвох то?
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Возможно в массиве chunk prefabs есть лишние пустые элементы в инспекторе
@HM703UTA1
@HM703UTA1 3 жыл бұрын
@@EmeraldPowderне, специально проверял чтоб массив был не пустой, по крайней мере до запуска игры он точно небыл пустым. Оказалось что, по какой то неизвестной причине при запуске игры весь массив очищался,. Либо очищался не полностью. И те префабы которые отсутствовали и вызывали ошибку. Проблему то решил(банально ребутнул ПК и все заработало), но до сих пор не понятно почему после заполнения листа руками, при старте, частично чистился лист...
@topmorphy4737
@topmorphy4737 4 жыл бұрын
Когда поворачиваю красную точку чтоб повернуть следующий чанк - точка повернута, а чанк нет. В чем может быть проблема?
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
У меня в проекте код чанки не поворачивает, там надо добавить чтобы когда чанк ставится, его rotation задавать в rotation точки прошлого чанка
@robloxcoreenjoyer8848
@robloxcoreenjoyer8848 4 жыл бұрын
The type or namespace name 'Chunk' could not be found (are you missing a using directive or an assembly reference?) Выдает такую ошибку как исправить подскажи
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Похоже что в проекте нет класса Chunk, который у меня в файле Chunk.cs лежит
@robloxcoreenjoyer8848
@robloxcoreenjoyer8848 4 жыл бұрын
@@EmeraldPowder я все починил,спасибо за гайд и за то что отвечаешь на коментарии
@MassEffecn
@MassEffecn Жыл бұрын
А зачем каждый раз проверять в апдейте игрока, если можно выставить невидемые обекты триггеры, и если шарик в них закатился, то строить чанк перед ним)
@user-qn2bo9rf9w
@user-qn2bo9rf9w 4 жыл бұрын
Помоги, пж!!! Я делал процедурку для бесконечного моря, сделал префаб , но только один. Все в скрипте сделал одинаково, только не делал масив(только один обьект). В общем, также сделал и удаление через Destroy, но после второго удаления происходит ошыбка, типа 'вы уже удалили оюьект типа океан, но снова пытаетесь получить к нему доступ. Что за херь?
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Один объект для префаба, или для уже заспауненых чанков? Может забыл когда сделал Destroy объекту удалить его из списка через RemoveAt? Или в крайнем случае просто проверку что объект != null добавить перед удалением, чтобы от ошибки избавиться
@user-qn2bo9rf9w
@user-qn2bo9rf9w 4 жыл бұрын
@@EmeraldPowder Здраствуй. Проблема решилась. Уже второй раз пролетаю с FirstChunk. Первый раз когда просто делал дорожку и потом думаю: "а зачем оно надо?'' и не вставил. А потом пол часа пробовал решить ошибку и никак не мог понять из-за чего она. А теперь, оказывается надо было добавить FirstChunk как геймобджект, а остальной(тот что спавнится) - как префаб. Не знаю, зачем я это пишу, и так никто не разберется в моей каше. Одним словом, спасибо что обратил внимание на коммент из видео годовой давности. Отличные видео! Даже не думай останавливатся!
@spasatilex-1280
@spasatilex-1280 5 жыл бұрын
Сделай генерацию мира как у terraria і его сохранение.
@denibundin6971
@denibundin6971 5 жыл бұрын
+
@illyagrush5884
@illyagrush5884 4 жыл бұрын
А что если с помощью пары переменных сохранить мир в PlayerPrefs?
@spasatilex-1280
@spasatilex-1280 4 жыл бұрын
@@illyagrush5884 как по мне не очень надёжный способ. ЭТО МОЁ СУБЪЕКТИВНОЕ МНЕНИЕ!
@illyagrush5884
@illyagrush5884 4 жыл бұрын
@@spasatilex-1280 Согласен, но я новичок, так что с xml, json работать не умею(
@spasatilex-1280
@spasatilex-1280 4 жыл бұрын
@@illyagrush5884 Если стараться то у тебя всё получится 😉. Живи, радуйся жизни, люби та учись, тогда у тебя будет все ок 👍(надеюсь)
@feliks131
@feliks131 3 жыл бұрын
Помоги пж у меня на if(Player.position именно на position жалуется .
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Возможно попробовать Player.transform.position
@feliks131
@feliks131 3 жыл бұрын
@@EmeraldPowderСпасибо, помогло.
@user-cf4bv7cb8h
@user-cf4bv7cb8h 4 жыл бұрын
как сделать также ток в 2д и по оси Y?
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Да в принципе менять особо даже ничего не понадобится - разве что в ChunkPlacer поменять *.position.z на *.position.y Ну и конечно сами объекты чанков сделать двумерными, и кажется должно работать
@uvwdv
@uvwdv 4 жыл бұрын
@@EmeraldPowder , Спасибо ,все заработало :)
@Bond007in
@Bond007in 5 жыл бұрын
Запутал все ппц
@EmeraldPowder
@EmeraldPowder 5 жыл бұрын
Пытался наоборот понятнее объяснить. А какая часть запутанной показалась?
@blettualet3567
@blettualet3567 4 жыл бұрын
Что за версия 2018.3.Ф1
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Можно открывать в любой версии выше этой, т.е. в любой что начинается на 2019 точно откроется
@dnz7198
@dnz7198 3 жыл бұрын
Я конечно не геймдевелопер, но с точки зрения оптимизации целесообразно ли создавать чанки из кучи блоков, вместо того чтобы загрузить готовую 3д модель нужной формы?
@fanjimmyneutron9744
@fanjimmyneutron9744 2 жыл бұрын
Лучше использовать готовую модель
@_lucky_8851
@_lucky_8851 4 жыл бұрын
как ассеты называються не могу найти
@himerawyvern9748
@himerawyvern9748 4 жыл бұрын
Он сам делал
@evil6529
@evil6529 3 жыл бұрын
Ошибка юнька пишет: The type or namespace name 'Chunk' could not be found (are you missing a using directive or an assembly reference?)
@marselous
@marselous 2 жыл бұрын
такая же проблема, если получилось решить её расскажи пожалуйста, буду крайне признателен)
@marselous
@marselous 2 жыл бұрын
уже нашёл ответ) так что можешь забить)
@gussonyy
@gussonyy 10 ай бұрын
Бро, у меня нету типа данных Chunk
@gussonyy
@gussonyy 10 ай бұрын
А, всё, я понял
@nurbolo
@nurbolo 4 жыл бұрын
Привет! выпустите видео пожалуйста только с 2D игрой и c генерацией по оси y !!!
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Привет! В принципе именно тут не слишком много изменений будет, по сути только объекты переставить. А в целом про 2D генерацию обязательно думаю сделать видео
@Top_Drop
@Top_Drop 6 ай бұрын
Неоаботает уменя выключаеца проэкт после этово
@merck8743
@merck8743 3 жыл бұрын
можешь такое же видео сделать только для 2D
@enrewardronkhall8340
@enrewardronkhall8340 3 жыл бұрын
Почему вы поля класса делаете публичными, а методы - приватными, когда по правилам ооп должно быть наоборот?
@PilotInspektor
@PilotInspektor 2 жыл бұрын
Замечание частично верное, тк не всегда методы делают public. В юнити методы чаще приватные по причине того что это юнити и я точно не скажу. (Возможно потому что нигде эти методы явно не вызываются) А вот с полями полностью согласен, как правило чтобы приватному полю можно было засетить объект/префаб/ и тд через UI используют следующую фичу: [SerializedField] private GameObject _gameObject; и вуаля ты можешь в эдиторе закинуть свой объект )
@glockman7574
@glockman7574 3 жыл бұрын
У меня ничего не вышло(
@milantor3327
@milantor3327 3 жыл бұрын
Практика, больше практики, внимательно пересмотри видео, у тебя все получится?
@krytan4iktm978
@krytan4iktm978 4 жыл бұрын
быстро очень ели понял
@Vamaka12
@Vamaka12 3 жыл бұрын
Я шяс думаю сделать бесконечную игру и сказать другу если он пройдет то куплю ему игравой комп
@motick654_gamejolt5
@motick654_gamejolt5 10 ай бұрын
Ну, ничего сложного
@mikekozlov7817
@mikekozlov7817 4 жыл бұрын
По вашему уроку зделал игру) - kzbin.info/www/bejne/aJrHZZ2HmqxoedU
@romaklassman9924
@romaklassman9924 4 жыл бұрын
Почему у тебя так мамо подпищиков
Делаю процедурную генерацию в Unity
13:15
Мы никогда не были так напуганы!
00:15
Аришнев
Рет қаралды 3,9 МЛН
MEU IRMÃO FICOU FAMOSO
00:52
Matheus Kriwat
Рет қаралды 34 МЛН
버블티로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 81 МЛН
СНЕЖКИ ЛЕТОМ?? #shorts
00:30
Паша Осадчий
Рет қаралды 8 МЛН
3D Раннер на Unity #2 - Генерация уровня
12:00
Полный разбор генерации мира Minecraft
21:01
The Perfect Pixel Art Parallax Tutorial [and Unity script!]
49:03
AdamCYounis
Рет қаралды 281 М.
Мы никогда не были так напуганы!
00:15
Аришнев
Рет қаралды 3,9 МЛН