Цел: Преобразувайте своя функционален прототип в излъскана игра!

Имаме примерен проект, който е функционален прототип, но сега е време да го пренесем на следващото ниво (игра на думи!) и да превърнем този прототип в произведение на изкуството.

Този прототип започва в 3D, но нашата цел е да го променим на 2D игра за космическа стрелба.

Уверете се, че сте задали изгледа на сцена от 3D на 2D. Плъзнете фоновото изображение в йерархията, преименувайте го и коригирайте размера с инструмента за правоъгълник, за да пасне на изгледа на играта. Уверете се, че съотношението в прозореца за изглед на играта е настроено на 16:9 вместо Free Aspect или каквото и да е.

След това плъзнете новия спрайт на играча в йерархията и го преименувайте на Player. Актуализирайте етикета, за да бъде Player (ако е приложимо за вас).

Плъзнете скрипта на Player върху него и всички необходими готови елементи в този скрипт, така че всичко да функционира правилно.

Като алтернатива можете да Копирате компонентот скрипта Player на стария обект на плейър и да Поставите стойности на компонента в скрипта на новия Player. Всички сглобяеми конструкции и стойности ще бъдат точно както са били в оригинала.

Мащабирайте спрайта на играча, за да пасне по подходящ начин на изгледа на играта и след това можете да изтриете стария обект на играча.

Ако вече нямате Фонови Сортиращ слой на преден план, създайте ги и поставете фона на Фоновия сортиращ слой и плейъра върху Сортиращ слой на преден план.

Когато числото Подреждане в слояе 0, това означава, че на този слой за сортиране това е първият спрайт, който е изчертан. Ако има друг спрайт на същия слой за сортиране и номерът му Ред в слоя е 1 или по-висок, той ще бъде изчертан върху или след спрайта, който има 0.

Следващото е да конвертирате вражеския 3D обект в спрайт. Ще използваме друг начин за трансформиране на 3D обект в 2D от нулата. Отворете сглобяемия изглед и изтрийте Cube (мрежест филтър), Mesh Renderer, Box Collider и Rigidbody.

Добавете компонент Sprite Renderer и плъзнете вражеския спрайт. Променете слоя за сортиране на преден план. След това добавете компонент Rigidbody 2D и задайте Gravity Scale на 0, защото ние контролираме поведението чрез код.

Накрая добавете Box Collider 2D, поставете отметка на Is Triggerи регулирайте колайдера, за да отговаря на краищата на спрайта.

Отидете до плейъра и добавете Box Collider 2D и настройте колайдера, за да отговаря и на краищата на спрайта.

Тъй като нашият прототип беше в 3D, сблъсъците се обработват с OnTriggerEnter и приемат Box Collider, които и двете са за 3D. Нека направим промяна в нашия код, така че сблъсъците да се регистрират сега с новата ни 2D настройка!

И накрая, трябва да възстановим лазерния обект (който играчът стреля) от 3D в 2D. Плъзнете лазерния спрайт в йерархията, преименувайте го на Laser и добавете Box Collider 2D. Променете кутийния коллайдер, за да отговаря на краищата на спрайта. Регулирайте мащаба на спрайта на 0,2f.

Нулирайте позицията на трансформация. Добавете Rigidbody 2Dи задайте Гравитационната скала на 0, тъй като ние контролираме поведението му чрез код. Добавете скрипта Лазер и задайте този обект като сглобяем Лазер. Задайте етикета на Лазер.

Уверете се, че където и да е първоначално сглобяемият лазер е включен отново като в скрипта Плейър.

Поставете отметка на Is Triggerна всички Box Collider 2Ds за играч, враг и лазер. Ние контролираме цялото поведение чрез код.

Трябва да се отбележи, че ако Is Triggerне е отметнато на Player или Laser, лазерът ще има странно поведение и ще лети в различни посоки, вместо право нагоре. Това е така, защото Box Collider 2D ще обработва повърхностни сблъсъци, вместо да преминава през сблъсъци. Лазерът и играчът ще се сблъскат физически, когато стреляте с лазер.

За да потвърдите, че лазерът изстрелва от лазера в точка, която има смисъл, нека влезем в нашия скрипт на Player и коригираме отместването в нашия метод FireLaser.

Играта е напълно функционална в 2D!