ПредишенСледващото

Игра кула отбраната стил е изключително популярна и не е изненадващо, че няма нищо по-вълнуващо от гледане на вашата защита, да унищожи злите нашественици!

В този урок ще създадем непревземаема защита на чудовищата (изпълняващи ролята на кулите) в Unity! Ще научите как.

  • Създаване на вълни от врагове и да ги научи да следвате точките (на точки).
  • Създаване и надграждане на чудовищата и да ги използвате, за да смаже враговете на пикселите.

В края на краищата, вие получавате рамка за тази игра жанр, който в бъдеще ще бъде в състояние да се подобри!

Трябва да знаете основите единство, например, как да добавите игра Асет и компоненти да се разбере какво панелните и знам C # най-вече.

Използвам версия на OS X версия на Unity, но можете да работите и под Windows.

Описание 2D игри върху единството в стила на отбранителна кула

В този урок ще се изгради кули на защита от врагове (малки бръмбари), пълзене в черния дроб, което принадлежи на вас и вашите слуги, чудовища! Можете да поставите чудовища в стратегически места и ги proapgredit за злато.

Играчът трябва да убие насекомите, преди те да се угощават бисквитки, като всяка нова вълна от врагове по-трудно да спечелим. Играта приключва, когато успяват да оцелеят всички атаки (победа!), Или когато пет врагове направени бисквити (поражение!). Ето една снимка на играта завърши:

2D игра на единство в стила на отбранителна кула,
Игра в стила на отбранителна кула на Unity. Защита на черния дроб!

Първи стъпки с Unity

Ако не сте инсталирали Единството 5 или по-нова версия, да го изтеглите от сайта на официалния единство. В допълнение, изтеглите проекта на стартера. разархивирайте и отворете проект TowerDefense-Part1 стартер в единство.

Започването на проекта включва графични и звук на активите и събиране на анимация и някои полезни скриптове. Скриптове не се отнасят конкретно до игрите на такъв план, така че те няма да бъдат описани тук. Също така, този проект съдържа prefabs, които след това трябва да създадете герои в играта. И накрая, проектът включва сцена с фона и потребителския интерфейс.

Open GameScene. намерено в папката сцени. и изберете съотношението на 4: 3. всички се поберат на екрана. Трябва да видите следното в прегледа по раздели на играта:

2D игра на единство в стила на отбранителна кула,

Ние работим с чудовища

Чудовища могат да се поставят само на точките, отбелязани х. За да добавите сцена, плъзнете Images \ Objects \ Openspot на раздела Project Browser на сцената (Scene). В този момент, положението не е от значение.

Изберете Йерархия Openspot. след това добавете компонент, като кликнете върху Компонент инспектор за добавяне и изберете физика 2D \ Box Collider 2D. Unity ще покаже кутия ускорител със зелена линия в раздела сцена. Ще използвате ускорителя за откриване на кликвания върху това място.

2D игра на единство в стила на отбранителна кула,
Unity автоматично определя подходящия размер за ускорителя. Cool?

Сега добавете Audio компонент \ Аудиоизточник в Openspot. Регулиране на източник AudioClip в tower_place. които можете да намерите в папка Аудио и деактивирайте играят на Awake.

Трябва да се създадат повече 11 места. Въпреки изкушението да направите следните стъпки отново, Unity има по-елегантно решение: prefabs!

Плъзнете Openspot на йерархията в папката Prefabs в браузъра на проекта (Project Browser). Името му се оцветява в синьо в йерархията, за да покаже, че той е свързан с панелните:

Сега, когато имате Prefab, можете да създадете толкова копия, колкото имате нужда. Просто плъзнете Openspot на папка Prefabs в браузъра на проекта в раздела сцена. Направете това 11 пъти на сцената бяха 12 Openspot обекти.

Сега използва инспектор да се определи позицията на 12 места в следните позиции: (-5.2, 3.5, 0). (-2.2, 3.5, 0). (0.8, 3.5, 0). (3.8, 3.5, 0). (-3.8, 0.4, 0). (-0.8, 0.4, 0). (2.2, 0.4, 0). (5.2, 0.4, 0). (-5.2, -3.0, 0). (-2.2, -3.0, 0). (0.8, -3.0, 0). (3.8, -3.0, 0).

Когато сте готови, си сцена трябва да изглежда така:

2D игра на единство в стила на отбранителна кула,

поставете чудовищата

За удобство на гостите има папка в чудовище Prefab Prefab.

Сглобяеми чудовище, готов за употреба

В момента тя се състои от един празен обект игра с три различни спрайтове и анимации като subobjects.

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

Създаване на скрипт, който може да бъде поставен върху чудовището Openspot.

В браузъра на проекта, изберете Openspot в папка Prefabs. В инспектор, кликнете върху компонент за добавяне (Добавяне на компонент), след това изберете New Script (нов скрипт) и го наречете PlaceMonster. Изберете C #, като език и щракнете върху Създаване и добавяне (Създаване и добавяне). защото добавите скрипт за панелните Openspot всички Openspot'y ще включва този скрипт.

Кликнете два пъти върху сценария, за да я отворите в MonoDevelop. След това добавете тези две променливи:

Ще се създаде копие на обекта се съхранява в monsterPrefab. да се създаде чудовище и да го съхранява в чудовище да го управляват по време на игра.

Чудовище на място

Добавете следния метод за всяко място е само едно чудовище:

В canPlaceMonster (), можете да проверите дали променливата на чудовище е празен (нула). Ако все още да, то това означава, че е чудовище, и можете да поставите друг.

Сега добавете следните редове, чрез които чудовището ще се появи, когато потребителят кликне върху обекта на играта:

Този код пуска чудовището с едно щракване на мишката или сензорния екран. Е, как действа тя?

  1. Unity автоматично извиква OnMouseUp когато играчът кликне върху физическия обект на ускорител на играта.
  2. Когато се обадите на този метод поставя ново чудовище, ако canPlaceMonster () връща истина.
  3. Чудовище може да бъде създаден с помощта на метод конкретни примери. което създава панелните проба с определена позиция и въртене. В този случай, можете да копирате monsterPrefab. прилага текущата позиция и въртенето на игралното обекта, да се добави в резултат на GameObject и го запишете в чудовище.
  4. И накрая, да се обадите PlayOneShot. да играе звуков ефект свързан с компонент AudioSource обект.

Сега вашия скрипт PlaceMonster да поставите ново чудовище, но все още трябва да посочи Prefab.

Използването на желания панелните

Запазете файла, а след това се върнете към единство. За да зададете променлива monsterPrefab първо изберете Openspot в папка Prefabs в браузъра на проекта. В инспектор, кликнете върху кръга в дясно от PlaceMonster компонент (Script) в областта, и изберете Prefab Monster Monster в диалоговия прозорец.

Започнете етап и да се създаде чудовища в различни точки отбелязани х. с едно кликване или докосване на екрана.

2D игра на единство в стила на отбранителна кула,
Сега можете да създадете чудовища. Независимо от това, те са като странна бъркотия, защото всички деца на чудовища, изготвени спрайтове. Ние ще поправим това по-късно.

Кървене чудовища в Unity-игра

В изображението по-долу можете да видите как вашите чудовища изглеждат по-ужасяващи по-високи нива.

2D игра на единство в стила на отбранителна кула,
Какъв сладур! Но, ако се опитате да открадне бисквитките, това чудовище може да се превърне в убиец.

Сценарият е основа за прилагането на системата на нива на чудовища. То следи колко силен чудовището трябва да бъде на всяко ниво, и, разбира се, сегашното ниво на чудовището. Добавете този скрипт.

Изберете Prefabs / Monster в браузъра проект. Добавяне на нов C # -script име MonsterData. Отворете го в MonoDevelop и добавете следния код преди MonsterData клас.

Ние създадохме MonsterLevel клас. Той запазва цената (в злато, което предписва по-късно) и появата на различни видове чудовища.

Обектите може да бъде редактиран от инспектор, добавете линия [System.Serializable] в началото на класа. Това ви позволява да промените бързо всички стойности на нивото на класа - дори когато върви играта. Това е невероятно полезен за даване на играта си баланс.

Определяне на нивото на чудовището

В този случай, вие ще бъдете съхраняване на предварително определен MonsterLevel в Списък.

Защо не се използва само MonsterLevel []. Въпреки това, ако само защото ние се нуждаем от индекса на обекта MonsterLevel няколко пъти. Кодът за този запис не е толкова трудно, така че ще използвате IndexOf (). която изпълнява функциите на списъци. Няма нужда да изобретяваме колелото. ]

На върха MonsterData.cs. добавите използване изявление:

Тя ви дава достъп до споделени структури от данни, така че можете да използвате класа Списък в скрипта.

Общи функции са голяма част от C #. Те могат да се използват за определяне на структурата на данните за типа безопасно без да се позовава на техните видове. Това е много удобно за класове като списък и набор.

Сега добавете следната променлива да съхранява MonsterData MonsterLevel списък:

Използване на общи функции могат да се гарантира, че списъкът за нива може да съдържа само MonsterLevel обекти. Запазете файла и преминаването към единство, за да персонализирате всяко ниво чудовище. Изберете Prefabs / Monster в браузъра проект. В инспектора можете да видите нива папка в компонента MonsterData (Script). Определете размера на 3.

2D игра на единство в стила на отбранителна кула,

След това поставете на разходите за всяко ниво:

Сега се зададат стойности на AH поле визуализация. В прозореца на проекта, разширете Prefabs / чудовище. за да видите подпапки. Преместете Monster0 в визуализация елемент Елемент 0.

Повторете същото и за присвояване Monster1 да Element 1. и Monster2 да Element 2. GIF картина поставена по-долу показва този процес:

Когато изберете Prefabs / чудовище. Сглобяеми трябва да изглежда така:

2D игра на единство в стила на отбранителна кула,
Определяне на нивата на чудовища в инспектора

Определяне на сегашното ниво

Превключване обратно към MonsterData.cs в MonoDevelop и добавяне на друга променлива MonsterData.

частен променлива currentLevel The ще бъде написана ... чакай малко ... сегашното ниво на чудовището. Не сме очаквали. ]

Съвсем малко на C #, нали? Това е, което правим тук:

  1. Определя свойствата на частна променлива currentLevel. Когато се установи, собственост, е възможно да се предизвика както някоя променлива: или като CurrentLevel (вътре клас) или като monster.CurrentLevel (извън). Можете да определите поведението в привличат и създателите свойства. Използвайки само приемателно само сетер, или с помощта на двамата, можете да направите имот само за четене, запис само, или на разположение за двете от тези действия.
  2. Най-активни и, ви връща currentLevel.
  3. В инкубатора му присвоите нов currentLevel стойност. След това можете да получите на индекса на сегашното ниво. И накрая, можете превъртите през всички нива и да зададете визуализацията в активни или неактивни, в зависимост от currentLevelIndex. Това е страхотно, защото това означава, че всеки път, когато някой поставя currentLevel. Sprite се актуализира автоматично. Имоти тук са много удобни!

Добавете следното към OnEnable:

Тук CurrentLevel зададете, когато поставяте, като се гарантира, че тя показва само правилния спрайт.

Важно е да се инициализира имота OnEnable вместо OnStart. защото методите се наричат, когато е създаден prefabs.

OnEnable ще се нарича веднъж при създаването на панелните (ако Prefab е задържано в щата Онтарио), но OnStart не се нарича, докато обектът не работи.

Трябва да се провери тези данни, преди да поставите чудовището, за тази серия OnEnable.

Запазете файла и да преминат към единство. Изпълнете проекта и да осигури чудовища. Сега те се показват правилно.

2D игра на единство в стила на отбранителна кула,

ъпгрейд чудовища

Върнете се към MonoDevelop и добавете следния метод за MonsterData:

В getNextLevel получавате currentLevel индекс и максималното ниво. Ако чудовището все още не е напълно овърклокнат, връща индекса на следващото ниво, в противен случай - нула.

Можете да използвате този метод, за да се определи дали един ъпгрейд е възможно чудовище. Добавете следния метод за повишаване на нивото на чудовище:

Тук можете да получите на индекса на сегашното ниво и да се провери дали той е по-малък levels.Count - 1. Ако отговорът е да, - чудовище все още може да се изпомпва, така че ние присвоите CurrentLevel следващото ниво.

Изпитване на възможности за ъпгрейт

Запазете файла и след това преминете към PlaceMonster.cs в MonoDevelop и добавяне на този нов метод:

Тук ще разгледаме дали има чудовище, което може да бъде обновен чрез проверка на променливата чудовището до нула. Ако е така, тогава ние се сегашното ниво на чудовището MonsterData. След това, ние проверяваме дали по-високо ниво на достъп в getNextLevel () връща нула. Ако "изпомпване" чудовището е възможно, се връща истина. в противен случай - невярно.

Активиране на надграждане, използвайки злато

За да активирате опцията за надграждане, добавя друг, ако изявление OnMouseUp:

Проверете дали актуализацията е възможно посредством canUpgradeMonster (). Ако отговорът е да, тогава може да има достъп до компонента с MonsterData GetComponent () и се обадете increaseLevel (). което увеличава нивото на чудовището. И накрая, пуснете звука за AudioSource чудовище. Запазете файла и да се върнете към единство. Стартирайте играта, настройка и надграждане колкото се може повече чудовища, колкото е възможно. толкова дълго, колкото е възможно.

2D игра на единство в стила на отбранителна кула,
Етапи надграждане чудовище Unity

В следващата сесия на отбраната кула на единство, ще се въведе в играта по време на игра валута, да работят по маршрута за чудовища, както и другите.

2D игра на единство в стила на отбранителна кула,

  • единство
2D игра на Unity. Подробни насоки. част 1

Свързани статии

Подкрепете проекта - споделете линка, благодаря!