0: Привет. В этом видео я хотел бы рассказать о том, как можно сделать вот такой бесконечный уровень для раннера. Быстро просто. А главное, понятно. Ну что, поехали так, для начала.
1: Сначала мы создадим пустой объект, назовём его player.
2: Сразу туда добавим капсулу.
3: Удалим у неё коллайдер и na плеер, добавим корректор контроллер.
4: Дальше создадим.
5: Пустой объект, назовём его дорога.
6: И на дорогу.
7: Закинем.
8: Cube наш тоже, назовём файл.
9: Раут так отлично.
10: Ну, сделаем его.
11: Похожим на дорогу, хотя бы как-нибудь расширим.
12: Уменьши.
13: Угу.
14: По длине. Ну пусть будет 40.
15: Так здесь сбросим.
16: До нуля все e плеер тоже по нулям поставим, только чуть его надо поднять.
17: Так посмотрим, как наша камера видит не очень она видит, а так, повыше поднимем и повернём её.
18: Игра. Ну приблизительно вот так вот.
19: Посмотрим в самой игре.
20: Ну, нормально.
21: Так теперь нам нужны.
22: Создадим материалы, сразубудет изменим там какой-нибудь цвет.
23: Так, отлично. Сюда закинем. Пусть будет красный. Нам нужно ещё удалим. Пока что нам нужно.
24: Добавить сюда.
25: Пусть будет куб.
26: И назовём его триггер.
27: Триггер.
28: Сделаем его чуть побольше.
29: Так, сколько у нас там по 12?
30: Так, тогда триггер у нас будет 12, тут 8. Пусть.
31: И по z 20. Ой, нет, не это 20, а по позиции 20, чтобы он был у нас в конце нашей дороги, плитки и.
32: Уберём вообще вот это вот все.
33: И самое главное нужно поставить триггер галочку.
34: Да, все отлично. Да, можно даже его that. Пусть плоский будет у нас.
35: Все, вот теперь можно добавить сразу несколько дорог.
36: Заменим сразу им цвета.
37: Чтобы как, ой, чтобы как-то они отличались.
38: Ну хорошо.
39: Теперь переместим на 40.
40: На 40.
41: И на 40. Так, все, ой, что-то я не то делаю. Очевидно, тут 120, тут 80, вот так вот. Да, все отлично.
42: Теперь нам ещё нужно создать наш спавнер сразу.
43: Назовём, наверное, ролл спавнер.
44: И поместим его.
45: Так, в начале по нулям тут поставим, а по z он будет это наши 4 дороги, которые они, которые сразу будут спавниться у нас.
46: Точнее, они даже не будут спавниться, они просто сразу тут будут, ну, можно их сделать, чтоб они спавнились, в принципе, там ничего сложного не будет. Так, а наш раут, спавнер, мы
47: И поставим на
48: На 140.
49: А, нет, на 160, на 160, да, чтобы наша 1 заспавнишься, дорога аккуратно легла вот сюда. Так, все.
50: Отлично.
51: Так, теперь.
52: Теперь нам нужно.
53: Привести их в движение для начала.
54: Зайдём в скрипт в папочку скриптс и создадим скрипт, назовём раут.
55: Так, давайте тогда начнём. Нам нужна наша скорость. Ой, вот.
56: И назовём её скорость.
57: У нас будет двигаться дорога, поэтому
58: Мы будем делать движение для дороги.
59: Создадим новый метод, назовём его муф.
60: Двигаться мы будем с помощью трансформ транслейт.
61: Так, сюда передадим трансформ точка форвард только с минусом, потому что мы будем двигаться.
62: В отрицательном.
63: В минус, короче. Ну вот сейчас покажу.
64: Вот сюда, то есть z отрицательная.
65: Поэтому с минусом, а трансформ форвард это вектор z.
66: Так умноженный на нашу скорость и умноженный на time.
67: Фикса дельтатайм.
68: Здесь мы.
69: Фикс дельта ой фикс от update мы будем вызывать наш метод.
70: Так, хорошо.
71: Давайте тогда проверим, что у нас получилось.
72: А забыл кинуть.
73: Счета сюда.
74: Сюда, сюда.
75: Так, скорость. Посмотрим, что.
76: У нас получилось.
77: Все наши платформы, наша дорога перемещается отлично.
78: Создадим.
79: Скрипт.
80: Назовём его раут спавнер в раут спавнер. Мы будем спавнить наши дороги, так?
81: Для этого в старте мы, а нет, для этого мы должны
82: Создать лист.
83: Так как у нас будет много различных участков дорог.
84: Мы создадим лист, назовём его out.
85: Опять не то.
86: Вот так. Вот так. И мы создадим гейм обжект и назовём его просто дорога.
87: В старте мы будем спавнить нашу 1 дорогу.
88: Out инстант.
89: Здесь мы будем.
90: Спавнить.
91: Случайная. Ой, да, случайный случайный участок дороги, выбранный из листа.
92: Random ренч?
93: От нуля до.
94: Да, да, да.
95: Reus точка аккаунт - 1.
96: Так мы будем его спавнить на transform позишн.
97: Так, а и поворот сделаем.
98: Чтоб он не поворачивался никак, как есть, так исполни.
99: Так, все.
100: Хорошо, теперь создадим.
101: Публичный метод, назовём его спам.
102: Здесь мы будем спавнить уже последующие дороги.
103: Для этого можно скопировать.
104: Вот это вот.
105: А даже полностью все можно скопировать.
106: Но нам нужен вектор, вектор 3, назовём его позиция.
107: И мы будем спавнить. Последующие дороги в
108: Нам нужна ещё.
109: Наша.
110: Длина дороги.
111: Роландс назовём.
112: Так, то есть мы будем спавнить нашу дорогу в
113: На расстоянии длины дороги.
114: Последней вот этой. То есть мы заспавнили 1 нашу дорогу и последующий мы будем спавнить от неё, от последней заспавнишься сложно, но сейчас поймёте все.
115: Это вообще не сложно. На самом деле так, позиция у нас будет равна нью вектор 0 0.
116: Transform.
117: А, нет, рот точка трансформ точка z плюс наша длина, то есть
118: По игреку, по, по иксу, по игреку, по нулям.
119: Так, трансформ, позишн, конечно.
120: А по z мы будем брать вот эту вот дорогу, она у нас уже будет перемещаться, и когда мы будем спавнить нашу.
121: Следующую дорогу. Мы будем её спавнить именно в том месте, в котором нужно, чтобы у нас не было вот этих состыковок, непонятных, чтобы все чётко прилегало, поэтому мы будем вот так именно спавнить.
122: То есть позиция по z нашей последней дороги плюс длина дороги.
123: То есть даже можно разную длину использовать. Дорог. В принципе, оно, наверное, а нет, лучше, лучше все-таки одинаковую длину дорог у всех.
124: Использовать. Так хорошо сюда мы тогда впишем нашу позицию.
125: Все отлично, но пока мы нигде наш спавн не вызываем.
126: Потому что нам нужно сделать, мы будем его вызывать в плеере. Для этого создадим скрипт для плеера, для
127: Нашего игрока, назовём его player.
128: В плеере мы будем спавнить.
129: Наш следующий участок дороги, когда наш плеер пересечёт наш вот этот триггер, недаром мы его делали. Давайте
130: Тогда сделаем вот это все можно удалить. Тут будет маленький вообще код и нам нужен триггер.
131: Он триггер, энтер почему-то потерялась.
132: Так и тут мы будем.
133: Сделаем.
134: Сериализованное поле.
135: Раут спавнер.
136: Так и мы просто будем вызывать наш метод спа публичный.
137: То есть вот.
138: Хорошо, сохраним, посмотрим. У нас вышло.
139: Так для этого нам нужен
140: Раут спавнер, точнее на плеер кинем наш скрипт, и на раут спавнер мы кинем тоже его скрипт.
141: Длину поставим 40.
142: Потому что у нас 40. Ну и по умолчанию тут можно было поставить сразу 40. Ой.
143: Так и нам нужны наши префабы, которые мы будем спавнить, сделаем их. Это.
144: Засунем в префаб.
145: Так почему они все красные, непонятно. Ну да ладно, баги какие-то. Так и
146: Засунем их в наш лист.
147: Вот они у нас.
148: Посмотрим, что у нас получилось. А мне кажется, я что-то забыл. Да, я забыл плеер сюда. Раут, спавнер наш. Все.
149: Так, теперь смотрим.
150: Dali там заспавнилось.
151: Все работает.
152: Осталась самая малость.
153: И вот состыковки идеально все состыкуется, то есть ничего, никаких Лагов нет, все отлично.
154: Так, давайте тогда доделаем, уже сделаем разрушение в конце перейдём в раунд спавнер. Ой, нет, не в раунд. Спавнер не в
155: Спавнер а а а, это сохраним аврат.
156: Итог старт тоже надо убрать.
157: В раут перейдём.
158: И создадим метод destroy раут.
159: Так, отлично.
160: Теперь.
161: Здесь, если
162: Transform точка позишн точка z будет меньше ну посмотрим меньше скольки у нас будет.
163: Чтобы мы не видели.
164: Наверное, меньше - 23 поставим, посмотрим. Да, мы не видим. Значит, меньше - 23.
165: Тогда мы разрушаем наш объект.
166: Истро гейм обжект.
167: И будем вызывать его в апдейте.
168: Все.
169: Все, давайте смотреть.
170: Угу. Все прекрасно удаляется, спавнится, ничего не нагружается.
171: Единственное, можно, конечно, чтобы они не одинаковые спавнились, но я в этом видео это делать не буду, там, в принципе, ничего сложного нет.
172: Сами захотите, если сами сделаете. Думаю, это не прям уж сложно.
173: Ну а на сегодня все, всем спасибо.