Како створити основну Андроид игру са Унити

у овом сличном упутству ћемо размотрити како створити основно Андроид игра користећи Унити.



Захтеви:

  • Јединство
  • Добар уређивач текста као што је НотеПад ++ (опционално, али препоручено)
  • Андроид СДК
Ако га већ немате, требало би да започнете са преузимањем и инсталирањем Унити СДК-а и Андроид СДК-а. Андроид СДК нам је потребан да бисмо могли да тестирамо АПК игре у Андроид окружењу.

Покрените Унити и креирајте нови пројекат. Нека то буде 2Д пројекат.



Постоји неколико панела са којима се можете упознати - панел Хијерархија који ће садржати све наше елементе сцене (сцена = било који „ниво“ на којем тренутно радите). Затим ту је картица Гаме која се користи за играње / тестирање ваше игре док сте унутар уређивача, а с десне стране имате панел Инспецтор на којем ћете уређивати разне ствари попут осветљења, физике итд.



Прво што желимо да урадимо је да направимо сприт - ово ће бити наш главни лик (који контролишемо). Можете да нацртате сопствени сприт, попут цртања квадрата очима, или да зграбите сприте са Интернета - само проверите да ли је то .ПНГ датотека (прозирна позадина).



Превуците и испустите свој сприт на главни прозор сцене (највећи прозор) - он ће се такође појавити на табли Хијерархија са леве стране.

Дакле, сада ћемо створити неколико платформи - то могу бити једноставни квадратићи, јер ћемо моћи лако да им променимо величину како бисмо направили зидове и друге платформе.

Дакле, само створите нови квадратни „сприте“ и превуците га и испустите на прозор Сцене као што сте то урадили са својим сприте ликом.



Сада треба да наложимо Унити-у да физику да нашем главном лику - кликните на свој главни сприте лик (требало би да буде означен плавом бојом у прозору Сцене), а затим на панелу Инспецтор потражите „ГамеОбјецтс“.

Кликните на „Додај компоненту> Физика 2Д> РигидБоди2Д“. Ово ће аутоматски додати физику вашем спритеу, што бисте иначе морали сами да унесете у други пакет за развој софтвера.

Желимо да спречимо да се главни лик спритеа заврти ван контроле - зато пронађите картицу Ограничења у панелу Инспецтор (са главним спритеом који је и даље истакнут у прозору Сцене) и означите поље за потврду „Замрзни ротацију З“.

Ако притиснете дугме „Репродукуј“, ваш главни лик спритеа требало би да падне с неба и само бескрајно пада - о томе ћемо се побринути касније, али само узмите у обзир како смо лако могли да применимо физику. Физика коју смо применили зависи од облика на који се примењује - па ако на пример примените исту физику на сферу, она би се закотрљала.

Такође желимо да поправимо своју оријентацију како бисмо спречили да се лик окреће и окреће. Пронађите „ограничења“ у инспектору са изабраним играчем и означите поље да замрзнете ротацију З. Сада поново кликните на плаи и требали бисте пронаћи да ваш играч сада пада са неба у своју бесконачну пропаст.

Да бисмо спречили да наш главни сприте лик само бескрајно пада, мораћемо да додамо сударач. Ово је у основи само чврст обрис облика који ћемо додати главном знаку спритета. Означите свој главни сприте лик, кликните на „Додај компоненту> Физика 2Д> БокЦоллидер2Д.

Сада учините исто тачно са платформом коју сте раније креирали. Ваш главни лик спритеа сада би требало да се 'судари' са платформом и остане тамо.

Дакле, сада желимо да будемо сигурни да ће камера пратити ваш главни лик спритета - унутар сцене већ би требало да постоји објекат камере. Желиш да повучеш ово поврх главни лик спритета.

Ово је посебно важно ако правите 3Д тркач , нешто слично Нагиб где вам је потребна камера да стално остаје иза примарног објекта игре (вашег главног спритета).

Сада идите на таблу Хијерархија и на листи ГамеОбјецтс желите да превучете камеру испод главни лик спритета (Плаиер ГамеОбјецт). Ово ће главни лик спритеа учинити ‘ родитељ ’ камере. Дакле, кад год се Плаиер ГамеОбјецт креће по екрану, камера би требало да га прати.

Дакле, за овај водич за игру, ми ћемо само створити основну бескрајну игру типа тркача, нешто попут Рун 3 , где ће ваш главни лик трчати преко екрана и избегавати препреке (или „прећи преко“ ако ударите у препреку “. За ово ће бити потребно неколико скрипти, од којих ће већина бити дата у овом водичу.

Кликните десним тастером миша на фасциклу „Имовина“ и креирајте нову мапу - назовите је Скрипте . Сада кликните десним тастером миша на ову нову фасциклу и притисните „Цреате> Ц # Сцрипт“ и дајте јој име ПлаиерЦонтролс . Ова скрипта ће дефинисати понашање нашег главног сприте карактера.

Када двапут кликнете на ову нову скрипту, она требало би отворите у Висуал Студио-у - алтернативно (и према мојим личним преференцама), можете га уредити у нечему попут НотеПад ++.

Датотека скрипте већ треба да има мало кода „котловске плоче“ - у основи ово је скрипта коју треба оставити на миру или само прилагодити вашим потребама и уштедеће нам пуно времена. Па ћемо додати нови објекат.

Изнад црте воид Старт ():

јавно Ригидбоди2Д рб;

Следећи бит кода који треба да додамо ући ће у Старт () и користи се за проналажење крутог тела - у основи, инструирамо Унити да лоцира физику коју смо додали у ГамеОбјецтс (наш главни сприте лик) и Старт () извршиће се када се креира нови објекат или скрипта.

Дакле, пронађите физички објекат.

рб = ГетЦомпонент< Ригидбоди2Д > ();

И додаћете ову линију унутар Упдате ()

рб.велоцити = Нова Вецтор2 (3, рб.велоцити.и);

Оно што Упдате () ради је стално освежавање, тако да ће се сваки тамо додан код радити непрекидно (осим ако је објекат уништен). Дакле, оно што смо урадили је упутити скрипту да желимо да круто тело има нови вектор користећи исту брзину на И оси (рб.велоцити.и), али брзином од 3 на хоризонталној оси. У будућности можете да користите и „ ФикедУпдате () ’ што је слично, али различито, јер тамо можете контролисати количину ажурирања / освежавања скрипте.

Сачувајте скрипту и вратите се у Унити, а затим кликните на главни лик сприте да бисте је истакли. На табли Инспецтор идите на Адд Цомпонент> Сцриптс и додајте скрипту коју смо управо сачували. Сада када кликнете на дугме Репродукуј, главни лик спритеа би се требао непрекидно кретати према ивици платформе.

Стварање контрола улаза играча

Па зато што је ово бескрајна игра у стилу тркача са препрекама, морамо додати контроле за играча као што је дугме „скок“.

Поново отворите скрипту од раније, а ми ћемо додати овај додатни код:

 ако (Инпут.ГетМоусеБуттонДовн (0)) {рб.велоцити = Нова Вецтор2 (рб.велоцити.к, 5); }

То ћете ставити у методу Упдате (), а оно што у основи чини је да Унити-у каже да када играч кликне на тастер миша (што ће бити преведено као тапкање екрана на Андроиду), главни лик спритеа ће „скочити ' у ваздуху. То је зато што смо додали брзину на И оси са вредношћу 5 (већа вредност би значила већи скок, наравно).

Ако нисте превише упознати са кодирањем, користили смо Ако изјава јер Ако је у основи врста упутства „уради или не“ - што дословно каже АКО СЕ ово догоди, извршите ову наредбу . Дакле, ако играч не кликне мишем (или не додирне њихов Андроид екран), очигледно се скрипта неће покренути.

Само наставите и притисните дугме „Репродукуј“ и уверите се да исправно ради пре него што наставите.

Следеће ћемо додати наше препреке (које могу да „униште“ сприт главног јунака), резултат игре и мени „гаме овер“.

Ако сте до сада тестирали игру, једини проблем који имамо до сада је тај што ћемо притиском на дугме „скок“ које смо креирали прескочити лик без обзира на то јесу ли утемељени или не - ово је у основи Флаппи Бирдс, а не тркач попут желимо. Али то ћемо поправити.

У скрипту додајте овај бит кода горе метода Упдате ():

 јавно Трансформ гроундЦхецк; јавно Трансформ стартПоситион; јавно   пловак гроундЦхецкРадиус; јавно ЛаиерМаск вхатИсГроунд; приватни   боол на терену; А затим додајте следећи ред у методу Ажурирање изнад ако изјава: онГроунд = Пхисицс2Д.ОверлапЦирцле (гроундЦхецк.поситион, гроундЦхецкРадиус, вхатИсГроунд); А следећи ред ћете променити у следећи ред тако да укључује „&& онГроунд“ ако (Инпут.ГетМоусеБуттонДовн (0) && онГроунд) {Дакле, цела наша скрипта би у основи требало да изгледа овако: јавно   класа   ПлаиерЦонтролс : МоноБехавиоур { јавно Ригидбоди2Д рб; јавно Трансформ гроундЦхецк; јавно Трансформ стартПоситион; јавно   пловак гроундЦхецкРадиус; јавно ЛаиерМаск вхатИсГроунд; приватни   боол на терену; празнина   Почетак () {рб = ГетЦомпонент (); } празнина   ажурирање () {рб.велоцити = Нова Вецтор2 (3, рб.велоцити.и); онГроунд = Пхисицс2Д.ОверлапЦирцле (гроундЦхецк.поситион, гроундЦхецкРадиус, вхатИсГроунд); ако (Инпут.ГетМоусеБуттонДовн (0) && онГроунд) {рб.велоцити = Нова Вецтор2 (рб.велоцити.к, 5); }}}

Да бисмо објаснили шта смо урадили, створили смо нову „трансформацију“, што значи положај у простору света игре. Поставили смо његов радијус и налажемо Унити-у да провери да ли се радијус преклапа са нашим слојем „земља“ - па ако је наш радијус синхронизован са „земљом“, наш лик треба да може да скаче и ако Већ смо у ваздуху од скока, не бисмо требали моћи да скочимо поново. У основи, на терену биће тачно ако трансформација именована гроундЦхецк преклапа се са приземним слојем. Надам се да то има смисла.

Зато сачувајте скрипту и вратите се у Унити и приметићете да је Инспектору додато више опција након што сте истакли плејер. То су јавне променљиве и можемо их прилагодити по свом укусу.

Сада кликните десним тастером миша на Хијерархију и креирајте нови празан објекат, а затим га превуците тако да испод његовог спритета главног лика у главном прозору Сцене - поставите овај празан објекат тамо где желимо да детектујемо под. Преименујте објекат у „Цхецк Гроунд“, а затим га превуците испод предмета игре играча, као што смо то раније урадили са камером (да бисмо створили однос родитеља и детета између објеката). Сада ће празан објекат слиједити сприт главни лик, баш као и камера, и непрестано ће провјеравати подну удаљеност.цам

Сада одаберите сприт главног лика и идите на таблу Инспецтор - превуците објект Цхецк Гроунд у простор назван „гроундЦхецк“. Положај „трансформације“ треба да буде једнак положају овог новог објекта, а тамо где пише „Радијус“ нека буде 0,1.

Морамо дефинисати приземни слој. Само одаберите приземни терен и у Инспектору пронађите дугме за „Лаиер: Дефаулт“ (то је падајући оквир) и одаберите „Адд Лаиер“.

Сада одаберите „гроунд“ као слој за нашу платформу и поновите ово за било коју другу платформу у прозору игре. Тамо где пише „Вхат ис Гроунд“ на нашем главном објекту спритеа, такође одаберите слој тла.

Оно што смо урадили је да упутимо скрипту плејера да изврши проверу - ако мала тачка на екрану се преклапа са било чим што се подудара са слојем, лик ће скочити само ако је то тачно.

Гаме Овер на менију Цоллисион и Гаме

Дакле, да закључимо све, последње ствари које желимо да урадимо су А: Нека судар са препрекама доведе до завршетка игре и Б: Направите екран менија „гаме овер“ помоћу дугмета за поновну игру.

Оно што у основи желите да урадите је:

  1. Додајте а Плаиер објект и доделити а круто тело и а сударач по вашем избору.
  2. Додајте Непријатељ објект и доделити а круто тело и а сударач по вашем избору. (и опционално, додајте Ознака „Непријатељ“ до тога)
  3. Створити нова Ц # скрипта и додајте га као компоненту у Плаиер (или користите било коју скрипту приложену уз плејер, нема потребе да креирате нову ако је већ имате)
  4. Додајте ово у своју скрипту:
празнина ОнЦоллисионЕнтер ( Судар цолл) { Отклањање грешака . Пријава ('Судар'); // Проверите да ли уопште региструје колизију, ако успе, можете уклонити ову линију иф (цолл.гамеобјецт. ознака == 'Непријатељ') { // види да ли предмет са којим се играч ударио има ознаку звану 'Непријатељ