Създаване на проста игра с бутони, чекмеджета и врати в Unity.

Как да създадете игра в Unity

Небреженмач 3 игри (три поредни) са сред най-популярните на пазара. Много хора играят Candy Crush, Bejeweled и други. Тези игри имат проста цел: преместете плочките наоколо, докато три еднакви плочки застанат една до друга. Когато това се случи, съответстващите елементи изчезват и на тяхно място се появяват други. След това играчът отбелязва точки.

Това ръководство ще обхваща следното:

  • Създаване на дъска, изпълнена с мозаечни елементи
  • Избиране и демаркиране на плочки
  • Идентифициране на съседни елементи с помощта на raycasts
  • Подмяна на елементи
  • Намиране на съвпадение на три или повече елемента с помощта на raycasts
  • Попълване на празни елементи
  • Запазване на резултата и броене на движенията

Забележка. Предполага се, че вече знаете как да използвате редактора на Unity, как да редактирате код и че имате основни познания по C#.

В бъдеще можете да добавяте временни режими, различни нива с дъски с различни размери, бонус точки за комбинации или анимационни ефекти.

Споделете тази статия:

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

Алексей Галкин, разработчикът на детския мобилен пъзел Fold the Adventure, написа колона за CPU за това на какво трябва да обърнете внимание, когато разработвате мобилна игра на платформата Unity: как да изберете правилните активи от Asset Store, в който услуга за съхраняване на данни за напредъка на потребителите и къде да получите звуци за игри.

Към отметки

Започнете

За да направите добра игра, имате нужда от добра идея. Но дори и да имате идея, създаването на прилична игра на базата на нея не е никак лесно. В допълнение към баналния късмет, има огромен брой неща, с които трябва да се справите. Безкраен брой решения трябва да бъдат взети за много ограничено време. В края на краищата времето е пари и бюджетът на проекта има тенденция да изчезва, преди да е направено нещо, което си струва да се похвали (да не говорим за издаването).

Тази история е за това как нашият малък инди екип създаде Fold the Adventure от оригинална идея. Откакто играта е пусната, можем да си поемем дъх и да погледнем назад през трите месеца, необходими за разработката. Въпреки дългогодишния опит в игралната индустрия, създаването на Fold the Adventure ни накара да се изпотим много поради непредсказуеми обрати на събитията и много ограничени ресурси. Добре дошли в нашето приключение!

Избор на двигател: Unity

Честно казано, не трябваше да избираме двигател. Веднага взехме Unity и не съжаляваме. Основната ни цел беше да създадем сравнително малка игра и да я стартираме на възможно най-много платформи. В същото време исках да избегна суета с програмирането в Objective C и Java. С Unity ние успяхме. И въпреки че всичко не беше толкова просто и гладко, колкото се очакваше, бяхме доволни от двигателя.

По наше мнение Unity е най-добрият игрови двигател за независима разработка в момента. Софтуерната му архитектура е добре обмислена, редакторът е добре направен и става все по-добър с всяка версия. Първите стъпки с Unity са лесни, но опитни разработчици може да го сметнат за контраинтуитивно в началото. Въпреки това както начинаещите, така и професионалистите вероятно ще попаднат на едни и същи клопки.

  • От самото начало трябва да отделите време за изучаване на основната архитектура на Unity, включително игрови обекти, скриптови обекти, сцени, префаби, активи, методи за събития и техния ред на извикване, съпрограми, синхронизация, обработка на вход, сериализация. Unity може да изглежда като лесен за използване двигател, но без да разбирате основите, можете да прекарате безкрайни часове в отстраняване на грешки и рефакторинг.
  • От самото начало формулирайте правила за структуриране, както и наименуване на активи и игрови обекти. Дори една малка игра има тенденция да се превърне в хаос без подходяща организация. Има много статии, посветени на този въпрос. Можете също така да се съсредоточите върху проекти, публикувани от разработчици в Unity Assets Store.
  • Програмирайте възможно най-малко. Вместо това, използвайте активно WYSIWYG (What You See Is What You Get) възможностите на редактора на Unity. Благодарение на лесната си разширяемост, редакторът на Unity ви позволява да превърнете играта, която разработвате, в удобен дизайнер, който може да се използва дори от тези, които не знаят как да програмират. И това значително опростява и ускорява създаването на игрово съдържание.
  • Избягвайте да използвате обичайни практики, които не се вписват добре в идеологията на Unity. Колкото и изкушаващо да е да поставите всички обекти на играта в рамките на една сцена или да съхранявате параметрите на механиката на играта в XML файлове, такъв подход значително ще усложни живота по-късно в разработката.
  • Бъдете внимателни и внимателни, когато използвате системи за контрол на версиите. Unity има тенденция да променя файловете непредвидимо. Например, извършването на промени в сглобяема конструкция включва модифициране на всички файлове със сцени, в които се използва, но само след като впоследствие бъдат запазени. Винаги използвайте принудителен текст като режим на сериализиране на активи и внимателно наблюдавайте файловете, които качвате на сървъра, за да не унищожите работата на вашите колеги.
  • Тествайте играта на възможно най-много платформи. Не забравяйте обаче, че настройките могат да бъдат дефинирани за всяка платформа поотделно. Без подобно тестване вие, като нас, може да откриете, че вашата игра се държи различно в уеб плейъра за Windows и OS X.

Активи: създайте или купете

Ако имате малък екип с много ограничено време и бюджет, тогава създаването на голям брой висококачествени игрови активи от нулата е почти невъзможно. Трябва да укротим грандиозните амбиции и да минимизираме количеството на необходимото. Но дори и да сте минимизирани, трябва да оставите нещо, което играчът ще се радва да погледне.

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

Първият и най-очевиден отговор за нас като разработчици на Unity беше Unity Assets Store. Колкото и примамлива да изглежда тази възможност, тя включва и редица трудности:

  • Активите в Unity Assets Store са достъпни за всички без изключение. Никой обаче не иска играта му да е като другите. Поне ние наистина не искахме това.
  • Почти невъзможно е да се закупи един пакет активи, който да задоволи всички нужди на проекта, и възниква проблемът със стилистичната съвместимост. За Fold the Adventure купихме няколко опаковки, от които използвахме по-малко от половината.
  • Въпреки факта, че общият брой активи в магазина на Unity Assets е доста голям, намирането сред тях на нещо подходящо за конкретни нужди може да бъде много трудно. Качеството обаче често оставя много да се желае. Прекарахме часове в търсене, като не винаги успяхме да оценим качеството на опаковката, без да я купим.

Вторият вариант беше аутсорсинг на активи. Разбира се, този път отнема повече време и пари, отколкото простото закупуване на нещо от Unity Assets Store. Въпреки това, при успешен сценарий, получените активи са уникални и с по-високо качество.

Имаше и опция за закупуване на активи от източници, различни от Unity Assets Store. Имаше обаче проблем със съвместимостта с Unity и решихме да се въздържим от подобни експерименти.

Когато решавахме кои активи да направим сами и кои не, започнахме с категоризирането им. Както се оказа, имаше относително малко активи, които бяха уникални за нашата игра и я отличаваха от другите. Решихме да ги направим сами, като прибягваме до аутсорсинг, където е възможно. Останалото е закупено от Unity Assets Store.

Ето няколко прости правила, до които стигнахме, докато търсихме и купувахме активи в Unity Assets Store

  • За да избегнете стилистични различия, препоръчително е да купувате активи от един и същи тип от един и същи автор. Това не ви пречи да купувате модели от едно студио и частици от друго, но трябва да осигурите съвместимостта на стиловете.
  • Избягвайте да използвате активи така, както са закупени. Достатъчно е да направите малки промени (например леко преначертайте текстури, преструктурирайте частици) или да използвате активи по нестандартен начин.
  • Ако планирате да пуснете играта на мобилни платформи, уверете се, че закупените от вас активи са оптимизирани за тях.

Музиката и звуците заслужават специално внимание. Те рядко се създават от инди екип самостоятелно (ако имате композитор, тогава или сте голям късметлия, или вече не сте инди). За щастие има голям брой услуги, които предоставят безплатна музика и звуци, включително Unity Assets Store. И е много евтино.

Не е достатъчно само да купите музика и звуци. Необходимо е да се уверите, че те звучат правилно в играта и не дразнят ухото. Ако сте уверени в способностите си, тогава можете да опитате да го направите сами. Потърсихме помощ от студио, което е специализирано в озвучаването. Полученият резултат беше значително по-добър от това, което можехме да направим сами, и си заслужаваше парите.

Къде да съхранявате данни: Анализирайте

Дори и вие като нас да създавате игра за един играч, пак ще ви трябва място за съхранение на данни за текущия напредък на играча, статистика за неговите действия, направени покупки и друга информация. Най-простото решение би било да използвате класа Unity PlayerPrefs за това. Той обаче запазва данни локално и очевидно не е подходящ за чувствителни неща като покупки в играта.

В търсенето на по-добро решение открихме Parse. Parse е крос-платформена BaaS услуга (Backend as a Service – платформа backend-as-a-service, която предоставя облачна сървърна инфраструктура за всички видове приложения – бел.ред.), която позволява на приложението да записва данни в облака, поддържа оторизация на потребителите, сървърни функции, насочени известия и анализи. Това не е изчерпателен списък с функционалности, но дава обща представа за това какво е Parse.

Една от причините да изберем Parse беше неговата интеграция с Facebook (първата версия на Fold the Adventure беше създадена специално за Facebook). И въпреки факта, че по-късно фокусът на разработката беше изместен към мобилни платформи, ние продължихме да използваме Parse.

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

В Parse правите всичко чрез заявки. За да получите и промените полета с данни, да създадете релации между таблици, да формирате селекция - всичко изисква заявка. На пръв поглед броят на заявките трябва да е доста голям, но всъщност повечето от елементарните операции могат да бъдат комбинирани в една заявка с помощта на метода ParseObject.SaveAllAsync. Също така, Parse ще хвърли изключение, ако ограничението за заявка за секунда бъде надвишено. Но нищо не ви пречи да изчакате известно време и да опитате отново заявката. И въпреки че играта в този случай може да изглежда на потребителя като замразена, този проблем може лесно да бъде избегнат чрез малки промени в потребителския интерфейс и логиката за запазване и четене на данни.

Единственото нещо, за което не трябва да се използва Parse, е създаването на сървър за игри. Дори ако разработвате походова игра, целта на Parse е фундаментално различна. Има и други решения, които са значително по-подходящи за тези цели.

Използването на Parse в Unity не е особено трудно и е добре документирано. По принцип трябва да изтеглите Parse SDK, да настроите играта си на сървъра Parse и проекта Unity и да направите малко програмиране. Едно очевидно предупреждение: няма да можете да използвате Parse, ако устройството, на което е инсталирана играта ви, няма достъп до интернет.

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

Настолни компютри срещу мобилни: компромиси

Въпреки постепенното сближаване през последните години, настолните и мобилните платформи все още са много различни една от друга. Това става очевидно, когато се опитвате да накарате „хубавите“ шейдъри да работят приемливо (да не говорим, че да работят бързо) на всички устройства, на които играта трябва да работи. Unity значително опростява този процес, но, за съжаление, не решава всички проблеми.

Има огромен брой статии, посветени на оптимизирането на Unity игри за мобилни платформи, така че малко ще се каже по тази тема тук.

  • Ако планирате да стартирате на мобилни платформи и да използвате сенки, тогава се ограничете до режима на предно осветление. Въпреки изгарянето на осветлението и намаляването на броя на обектите, които хвърлят сенки, не успяхме да постигнем приемлива производителност в режим на отложено осветление. Може да не сме се постарали достатъчно, но форумите на Unity в по-голямата си част са съгласни с нас по този въпрос.
  • Минимизирайте броя на обажданията за теглене. Големият брой полигони в моделите няма да повлияе толкова на производителността, колкото допълнителните извиквания за чертане. Планирахме голяма оптимизация, насочена към намаляване на броя на обажданията за теглене, за да поддържаме по-добре по-стари модели мобилни устройства, но, за съжаление, не успяхме да я направим в кратките срокове.
  • Не прекалявайте с извличането на текстури в шейдърите. Това може да доведе до значителен спад в производителността. В нашата игра бяхме принудени да използваме няколко специални шейдъра вместо един универсален - точно поради тази причина.

Освен разликите в производителността и хардуерните ограничения, има друга важна разлика между настолни и мобилни платформи. И тази разлика е режимът на въвеждане. Игра, предназначена да бъде управлявана с помощта на клавиатура и мишка, не се превежда добре в контроли с мултитъч и акселерометър. Научихме това по трудния начин. На първо място, Unity разделя работата с мишка и мултитъч. Затова беше необходимо да се създаде система, която да обедини този аспект. За тези цели използвахме системата за въвеждане от NGUI, която след малки модификации се показа много добра. Освен това ни позволи да разрешим проблема с разпределението на входа между потребителския интерфейс и контролите на играта, което ни създаваше известни проблеми по това време.

Потребителският интерфейс като цяло изискваше редица модификации, за да поддържа правилно мобилните устройства. Например, вместо да превъртаме колелцето на мишката и да държим натиснати бутони, трябваше да въведем мултитъч жестове. Някои от модификациите потенциално биха могли да бъдат улеснени чрез използване на готови решения от Unity Assets Store. Но в нашия случай това беше просто щипка и затова решихме да го напишем за час от нулата, вместо да прекарваме дни в свързване и отстраняване на грешки в система, която „прави всичко и дори повече“.

Най-голям брой проблеми предизвика контрол по време на игра. Започнахме с традиционна настройка на ASWD + мишка за управление на герои и камера, планирайки да използваме екранен джойстик на мобилни устройства. Но нещата не се получиха точно както очаквахме: играта стана почти неконтролируема. Трябваше спешно да променим контролите в играта, като същевременно направихме промени дори в механиката на играта. Чрез проба и грешка се спряхме на контролите с посочване и кликване, които са интуитивни на мобилни устройства.

Локализация: колкото по-просто, толкова по-добре

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

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

По-добре е да избягвате етикети върху текстури и да използвате например текстови полета NGUI. Ако в дадена игра се изисква говор, най-вероятно ще са необходими субтитри, тъй като локализирането на говор е не само скъпо, но и изискващо по отношение на пространството, заемано от играта.

Но минимизирането на локализираното съдържание е само началото. Следващият етап е подготовката на самата игра за локализиране. Лошата новина е, че Unity (от момента на писане) няма вградени механизми за тези цели. И въпреки че има редица специализирани решения в Unity Assets Store (например l2 Localization), ние решихме да използваме системата за локализация, която идва с NGUI.

Системата за локализация NGUI е проста и лесна за използване. Той е изграден около един CSV файл, съдържащ колона за всеки език. Наличието на такъв файл е много удобно за изпращане на низове за превод (има голям брой специализирани услуги за това) и след това вмъкване на преведената версия.

Пишете

Здравейте всички! След като се научих да правя игри на този двигател, искам да ви науча на същото. Първо, имаме нужда от самия Unity3d, всеки редактор на 3D модел и прави ръце, израстващи от раменете.

1. Проучете програмата

Като за начало препоръчвам да инсталирате Monodevelop! Нека разберем какво е Единство. Unity е мултиплатформена среда за разработка на игри. Именно заради нейната простота и разбираемост всеки трети поне веднъж е правил игри на нея.

Вижте екранната снимка по-горе:

  • Сцената е вашият творчески пясък.
  • Проект - тук са всички анимации и модели, звуци и текстури.
  • За да инсталирате модели в горната лента с инструменти, изберете Активи-Импортиране на нов актив. Можете също така Активи-Импортиране на пакет-Персонализиран пакет. Във втория случай пакетът трябва да е в разширението .unity.
  • Йерархия - всички обекти в сцената. Там създавате родители за обекта. Просто преместете обект на друг в йерархичното меню и той ще бъде прикачен. Резултатът ще бъде един вид папка.
  • Лента с инструменти - списък с инструменти. Там можете да активирате 2D, 3D режим.
  • Инспектор - функция на обект, където добавяте анимации, скриптове и др. Там можете да използвате инструментите: преместете камерата, преместете обекта, разтегнете, завъртете обекта.


Сега виждате менюто на обекта, в него можете да добавяте анимация, скриптове и др.

Мисля, че с това меню няма да имате проблеми.
Кликнете, за да създадете произволен обект.

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

2. Създайте проста игра

Първо, нека създадем територия Create-Terrain. Добавете трева и дървета. Като щракнете върху земята вдясно, ще се появи прозорец, изберете дървета, трева.

Също така създайте планини и неравности. След това заредете пакета контролер Characher в проекта. След това търсим в прозореца с проекта за стандартен контролер на активи-знаци и избираме изглед от първо лице (капсула) или изглед от трето лице (механик).
Ако първият човек, тогава просто го сложете на земята. Ако от третия, тогава трябва да изтеглите анимацията. Също така препоръчвам да зададете осветлението на сцената на Create-Directional Light.

За да добавите музика, плъзнете я до желания елемент.
Играта е готова, но как да я компилирам?

За да направите това, отидете на File-Build settings-player settings (за етикет и име). Изберете платформа и готово. За да направите това, трябва да инсталирате Android SDK. Но там трябва да посочите папката с SDK и се нуждаете не само от SDK, а от API на необходимото ниво (например за Android 4.2 - API 17). Например, за да бъде играта на Android 4.0+, трябва да инсталирате тези API.

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

Какво ще правим? Двуизмерен пъзел с колобок като главен герой, който може да мести кутии, който може да натиска бутони, който може да отваря врати, зад който е изходът от нивото, което построих. Или вие, все пак имаме урок тук.

Предполага се, че вече сте изтеглили Unity и сте си поиграли малко с редактора. Не? Сега е моментът, ще почакам.

груба скица


Излъгах, няма да чакам. Нека създадем празен проект без ненужни пакети и да изберем оформление на прозореца според вашия вкус, ще използвам Tall. Добавете сфера към йерархията, плъзнете основната камера върху нея. Сега камерата ще проследи нашата сфера, ако внезапно поиска да се разходи. Преименуваме сферата на „Играч“, плъзгаме я в Project, сега имаме готова конструкция, която можем да използваме във всички нови сцени, ако има такива. Не забравяйте да проверите координатите на сглобяемите конструкции, когато ги създавате и използвате; ако искаме да направим играчка в две измерения, тогава третата ос трябва да бъде настроена на нула за всички взаимодействащи обекти.

Сега нека добавим източник на светлина, отидете в менюто GameObject -> Create Other -> Directional light. Неговите координати нямат значение, той ще осветява нашите обекти по един и същи начин от всяко място. Въпреки това има смисъл да го повдигнем малко над сцената, така че да не пречи на избирането на обекти, така че нека му дадем координати (0;0;-10). Говорейки за сцената, нашата ос X ще расте отляво надясно, Y - отдолу нагоре, а Z - от зрителя дълбоко в екрана. Кликнете върху стрелките около куба в горния десен ъгъл на сцената и го завъртете според нуждите.

Нека добавим куб към сцената, наименуваме го „Стена“ и го плъзнете към Активи. Самотна кубична стена до сферичен колобок не е много впечатляваща, нали? Магическата клавишна комбинация Ctrl+D ще ни помогне да дублираме нашата стена, а трите полета Scale в инспектора ще ни позволят да я разтегнем до насита. Представете си нещо подобно на стая, задържането на Ctrl ще ви помогне, което ограничава движението на обектите до единични интервали. В допълнение, клавишът V ще ви позволи да плъзнете обект по неговите върхове и те ще се придържат към върховете на други обекти. Прекрасно, нали? И все още ли пишеш двигателя си? О, добре.


Запазете сцената, натиснете Play и се насладете на творението си за няколко минути. Добрите дизайнери на игри наричат ​​това тестване. Нещо липсва, нали? Хм. Може би ако се възхищавам малко повече, тогава ...

Скриптове и физика

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

Първо, трябва да подредим нашия проект, ако не искаме по-късно да се изгубим в бъркотия от готови конструкции и скриптове. Нека създадем папка “Levels”, в която ще съхраняваме сцени и папка “Prefabs” за съхранение на заготовки. Сортирайте натрупаното богатство в папки.

Сега е ред на сценариите. Ще дам примери в C #, но можете да пишете в JS или Boo. Всъщност няма смисъл да избираме последните две; те са добавени към Unity по-скоро като добавка, поддържат се по-малко, разширяват се по-малко и е по-трудно да се намерят примери за тях. Особено ужасен е Boo, който по същество не е питоничен Python. Мерзост. Виват, питоници!

Създаваме C# скрипт, наричаме го „PlayerController“, плъзгаме го върху сглобяемия Player и го отваряме с вашия любим редактор с помощта на Visual Studio. Първо трябва да изтъркате излишните отпадъци, оставете само това, от което се нуждаете.

Използване на UnityEngine; публичен клас PlayerController: MonoBehaviour ( void Update() ( ) )

Функцията Update се извиква във всеки кадър, което е много удобно за внедряване на движение, ние ще поставим кода вътре в него. Натисканията на бутони на играча могат да бъдат получени с помощта на класа Input. Unity идва с чудесни настройки за въвеждане, просто напишете Input.GetAxis („Хоризонтално“) и вече знаем дали играчът е натиснал дясна или лява стрелка на клавиатурата. Ако играчът има свързан геймпад, той може да го управлява от него, дори не е необходимо да пишем допълнителен код.

Var direction = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0);

С тази проста линия получаваме информация за действията на потребителя и създаваме вектор на движение. За да прикрепим вектора някъде, имаме нужда от Rigidbody. Изберете сглобяемия Player и добавете необходимия компонент чрез менюто Component -> Physics -> Rigidbody. Сега можем да се позоваваме на него в нашия скрипт.

Rigidbody.AddForce(посока);

Първо, нека просто да проверим как работят тригерите. Нека напишем нещо в конзолата на Unity. Функцията Debug.Log е много полезна, освен текст може да отпечатва и различни игрови обекти.

Използване на UnityEngine; публичен клас Бутон: MonoBehaviour ( void OnTriggerEnter(Collider other) ( Debug.Log("Hello"); ) void OnTriggerExit(Collider other) ( Debug.Log("Habr!"); ) )

Те хвърлиха копче на сцената. Тествано? Продължавай. Би било по-хубаво, ако нашият бутон променя цвета си при щракване. За цвета трябва да прикрепим материал към бутона. Създаване -> Материал, нека го наречем "Подложка за копчета" и го поставете върху бутона. В свойствата на материала изберете зелено за основен цвят. Сега в скрипта можем да получим достъп до цвета на материала с помощта на renderer.material.color и да го променим както желаем. Нека накараме бутона да се изчерви, когато нашият колобок влезе в него. Някак си се получи.

Използване на UnityEngine; публичен клас Бутон: MonoBehaviour ( void OnTriggerEnter(Collider other) ( renderer.material.color = new Color(1, 0, 0); ) void OnTriggerExit(Collider other) ( renderer.material.color = new Color(0, 1, 0); ) ) var direction = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0).normalized;

И не можете да го поправите. Характеристиките на двигателя на играта също могат да бъдат част от естетиката. Quake 3 не би бил същият без скачане. Това е познаването на тънкостите на механиката, което отличава начинаещите от летящите убийци на демони на професионални играчи. Но тънкостите не трябва да навредят на удобството, поради което преди сме променили съпротивлението на твърдото тяло на играча на четири. Това триене кара колобка да спира бързо, но не веднага. А високото ускорение дава усещане за контрол. В идеалния случай стартът също не трябва да се случва веднага, това би било полезно за прецизни маневри. Тези малки механични детайли допринасят за цялостната естетика.

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


Външният вид на играта също е от голямо значение. Под външен вид нямам предвид броя на полигоните в рамката. Не забравяйте, че игрите са изкуство. Кои неща са важни в свързаните изкуства? Стилистика, цвят, светлина, сянка. Опитайте се да намерите интересна цветова комбинация или създайте свой собствен комплект. Вижте Proun например. Тази игра е направена в духа на супрематизма, толкова близо до Habr. Можете да опитате да копирате някои цветови схеми, но без текстури и магьосничество с шейдъри няма да се окаже толкова красиво. Тези, които нямат търпение, вече са разгледали резултатите от опита ми, използвайки връзките по-горе, а внимателните читатели могат да ги видят отново в края на статията.

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

Заключение

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

Връзки

Прототипна версия от статията

В първата глава ще намерите основна информация за изтегляне и инсталиране Единствои подготовка на първата сцена от нашата игра.

Настройка на средата в Unity

Нека започнем с най-простото нещо: изтегляне и Настройки на Unity.

Изтеглете най-новата версия от официалния уебсайт или торент и стартирайте инсталационния файл.

За да редактирате код в Unity (4.0.1 и по-нови), използвайте редактора MonoDevelop. Ако сте в Windows, можете (и аз препоръчвам) да използвате алтернативния редактор на Visual Studio 2013 Desktop (C#) за Windows и след това да промените редактора по подразбиране на Visual Studio в предпочитанията на Unity.

Добре е да знаете: Не е възможно да използвате програмата за отстраняване на грешки на Visual Studio 2013 Express с Unity. Трябва да имате Pro версия на Visual Studio и да закупите приставката UnityVS. С версията Express ще имате по-добър редактор на код, но липсата на програма за отстраняване на грешки ще отмени всяко от предимствата му.

Mac OS X

Бележка за папката Resources: Ако сте работили с Unity преди, знаете, че папката Resources е полезна и уникална папка. Позволява ви да заредите обект или файл в скрипта (използвайки статичния клас Resources). Ще ни трябва в самия край (в главата на менюто). Просто казано, все още няма да го добавим.

Първата ни сцена от играта

Панел Йерархия(Йерархия) съдържа всички обекти, които са налични в сцената. Това е, което манипулирате, когато стартирате играта с помощта на бутона "Играй".

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


Както можете да видите тук, имаме 3 деца тук за обект Level.

IN Единствоможете да създадете празен обект и да го използвате като "папка" за други обекти на играта. Това ще опрости структурата на вашата сцена.

Уверете се, че всички те имат координати (0, 0, 0), за да можете да ги намерите лесно! Празните обекти не използват координатите си по никакъв начин, но влияят на относителните координати на техните деца. Няма да говорим за тази тема в този урок, нека просто нулираме координатите на текущите празни обекти.

Запълване на сцената

По подразбиране се създава нова сцена с обект Основна камера. Издърпайте я на сцената.

Първо създайте тези празни обекти:

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

В ниво създайте 3 празни обекта:

  • 0 - фон
  • 1 - Среден план
  • 2 - Преден план

Запазете сцената в папката Scenes. Наречете го както искате, например Stage1. Ето какво получихме:

Съвет: По подразбиране обектът на играта е обвързан с позицията на родителя. Това води до интересен страничен ефект при използване на обект на камера: ако камерата е дъщерен обект, тя автоматично ще проследява позицията на родителя. Ако това е основният обект на сцената или е вътре в празен обект на игра, той винаги показва същия изглед. Ако обаче поставите камерата върху движещ се обект на игра, тя ще следва движенията му в цялата сцена. В този случай имаме нужда от фиксирана камера, така че я поставяме в празен Render обект. Но помнете това свойство на обекта на камерата, може да ви бъде полезно. Ще разгледаме по-подробно тази тема в главата „Паралаксово превъртане“.

Току-що създадохме основната структура на нашата игра. В следващата стъпка ще започнем да правим някои забавни неща: добавяне на фон към сцената и няколко други неща!

Добавяне на фон към сцената

Първият ни фон ще бъде статичен. Нека използваме следното изображение:


Импортирайте изображението в папката Textures. Просто копирайте файла в него или го плъзнете от Explorer. За момента не се притеснявайте за настройките за импортиране.

Създайте нов обект за игра Sprite в Unity на сцената.

Какво е спрайт?

По същество спрайтът е 2D изображение, използвано във видео игра. В този случай това е Unity обект за създаване на 2D игри.

Добавяне на текстура на спрайт

Unity може автоматично да задава фон за вашия спрайт. Ако нищо не се е случило или ако искате да промените текстурата, отидете в раздела инспектор и изберете фон: (фон)


Трябва да щракнете върху малката кръгла икона вдясно от полето за въвеждане, така че Select Sprite да се появи в инспектора

Моят спрайт не се появява в диалоговия прозорец!Уверете се, че сте в раздела АктивиИзберете диалогов прозорец Sprite. Ако видите диалоговия прозорец празен, не се тревожете. Работата е там, че за някои инсталации на Unity, дори и с пресен нов 2D проект, изображенията се импортират като „Текстура“, а не като „Спрайт“. За да коригирате това, трябва да изберете изображението в панела "Проект" и в "Инспектор" да промените свойството "Texture Type" на свойството "Sprite":

И така, създадохме прост спрайт, който показва облаци в небето. Нека направим някои промени в сцената. В панела Йерархия(Йерархия) изберете Нов спрайт. Преименувайте го Background1 или нещо лесно за запомняне. Преименувайте го Background1 или нещо лесно за запомняне. След това преместете обекта на желаното място: Ниво -> 0 - Фон . Променете координатите на (0, 0, 0) .


Създайте копие на фона и го поставете на (20, 0, 0) . Това трябва да пасва идеално на първата част.

Бакшиш: Можете да създадете копие на обект, като използвате cmd + D в OS X или ctrl + D в Windows.

Слоеве спрайтове

Следващото твърдение е очевидно, но има някои неудобства: ние показваме 2D свят. Това означава, че всички изображения са на една и съща дълбочина, т.е. 0. И вашият графичен двигател не знае какво да покаже първо. Слоевете със спрайт ни позволяват да дефинираме какво е отпред и какво е отзад.

В Unity можем да променим "Z" на нашите елементи, което ни позволява да работим със слоеве. Това направихме в този урок, преди да надстроим до Unity 5, но ни хареса идеята да използваме слоеве със спрайтове. Вашият компонент има Sprite Rendererима поле с име Сортиращ слойсъс стойност по подразбиране. Ако кликнете върху него ще видите:

Нека добавим няколко слоя, за да отговарят на нашите нужди (използвайте бутона +):

Добавете фонов слой към вашия фонов спрайт:

Настройки Подреждане в слойе начин за ограничаване на подслоевете. Спрайтове с по-ниски числа се появяват пред спрайтове с по-високи числа.

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

Добавяне на фонови елементи

Също известен като реквизит. Тези елементи не влияят по никакъв начин на играта, но ви позволяват да подобрите графиката на играта. Ето някои прости спрайтове за летящи платформи:


Както можете да видите, поставихме две платформи в един файл. Това е добър начин да научите как да изрязвате спрайтове с помощта на нови инструменти Единство.

Получаване на два спрайта от едно изображение

Следвай тези стъпки:

  1. Импортирайте изображения в папката "Текстури".
  2. Изберете спрайта на платформата и отидете до панела на инспектора
  3. Променете "Sprite Mode" на "Multiple"
  4. Щракнете върху бутона Sprite Editor

В нов прозорец (Sprite Editor) можете да нарисувате правоъгълници около всяка платформа, за да нарежете текстурата на по-малки части:


Бутонът Slice в горния ляв ъгъл ще ви позволи бързо и автоматично да свършите тази досадна работа:

Единствоще намери обекти в изображението и ще ги изреже автоматично. Можете да зададете стойност по подразбиране за точката на въртене или минимален размер за всеки фрагмент. За просто изображение без артефакти това е необичайно ефективно. Въпреки това, ако използвате този инструмент, бъдете внимателни и проверете резултата, за да сте сигурни, че получавате това, което искате.

В този урок ще извършим тази операция ръчно. Назовете платформите platform1 и platform2. Сега, под файла с изображението, трябва да видите два спрайта отделно:


Нека ги добавим към сцената. За да направим това, ще извършим същите действия като за фона: създайте нов спрайт и изберете platform1. След това ще повторим тези стъпки за platform2. Поставете ги в обект 1 - Middleground. Уверете се, че тяхната Z позиция е нула.


Сглобяеми конструкции


По този начин ще създадете Prefab, който съвпада точно с оригиналния обект на играта. Ще видите, че обектът на играта, който сте преобразували в Prefab, е нов ред от бутони точно под името му:


Бележка относно бутоните „Prefab“: Когато впоследствие промените обект на игра, можете да използвате бутона „Прилагане“, за да приложите тези промени към Prefab, или бутона „Revert“, за да отмените всички промени в обекта на играта в свойството Prefab . Бутонът „Избор“ ще премести избраните свойства в актива Prefab в прозореца на проекта (те ще бъдат маркирани).

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

Сега можете да добавите още платформи, като промените техните координати, размери и равнини (можете да ги поставите на заден план или на преден план, просто задайте Z координатата на платформата на 0).

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

Слоеве

Преди да продължим, ще променим нашите слоеве, за да избегнем проблеми с реда им на показване. За да направите това, просто променете позицията на игралните обекти по оста Z в раздела Йерархия(Йерархия), както следва:

Когато превключвате от 2D към 3D режим, ще видите ясно слоевете в прозореца Scene:


Когато щракнете върху обекта на играта Основна камера, ще видите, че квадратчето за отметка Проекция е зададено на Ортографски. Тази настройка позволява на камерата да рендира 2D игра, без да взема предвид 3D свойствата на обектите. Имайте предвид, че дори ако работите с 2D обекти, Unity все още използва своя 3D двигател за изобразяване на сцената. Снимката по-горе ясно показва това.

В следващия урок:

Току-що научихте как да създадете прост статичен фон и как да го показвате правилно. След това ви научихме как да правите прости спрайтове. В следващата глава ще научим как да добавяме играч и неговите врагове.

КАТЕГОРИИ

ПОПУЛЯРНИ СТАТИИ

2023 “kingad.ru” - ултразвуково изследване на човешки органи