БытьБертрамом

Какпрыгнутьизсостояниялёжа

Есливычиталимоипредыдущиистатьи,тознаете,чтояоченьчастобросаюпроектынеоконченными。 Иногдадоводядокакого-то«приемлемого»состояния,ночащевсегопростотеряякниминтерес токачествонеделатмнечести,以及ярешилпопробоватьнемногопоборотьсясним。 Дляэтогоявыбралто,чемя,вероятно,смогузаниматьсяотносотоеере Такого,чтобыможнобылосказать,чтояимдоволен。

Конечно,что-топодобное,Ludum Dare,нотамбылилюди,которыесделалито,чтонемо, Нуисрокитам,конечно,совсемдругие。 Вэтотразмнеточнопридётсяпройтинесколько«волн»потериинтересаисправитьсясними。 Вкачестведополнительногоусловия(сразунескажешь,усложняющегоилинаоборот)ярешее Вэтотраз,правда,наволнеэнтузиазма,материалнастатьюнабралсявсеголишьзатридня,такчт Такжеяпостараюсьвыйтинановыйуровеньстатей,подготавливаядлякаждойкакможнобольшематериал。 Этопроцесситеративный,итаккакименновыпотребляетеэтотвидконтента,выражаттсвоимысл。

Уменяужеестьмножествоидейкакповизуальномустилю,такипомеханикеигры。 И,сразуоговорюсь,чтояделаюигрудлясебя和анедлятогочтобыпродатьиличто-топодобное。 Такчтоянетолькобудуиспользоватьминимумготовогоматериала(да,япланируюдажерисоватьсам) Еслиуменяпоявятсятестеры(аскакого-томомента,яхочуначатьписатьна书签交易) – будетчудесно,ноявсе-такипостараюсьделатьне«чтобыбыло»,анасовесть。

Почемуярешилделатьименноигру? Да,банально,ноуэтогорешенияестьдванеоспоримыхплюса。 Во-первых,созданиеигрыохватываетмножествообластейкакпрограммирования,такиприменениятворческойэнергии,азначитестьшанснеутонутьврутине。 Во-вторых,чтотоженемаловажно,您在игрестьболееилименеепонятныекритерииготовности。 Расплывчатые,нохотьчто-то。 И,в-третьих,игра—этоотносительноуниверсально,почтикаждыйсможетхотябыпретоообъём

Шестерёнки

Покаяневзялсязаграфикуипрочиевизуальныештуки,акакпоказалапрактика,нестоитснихначинать,яиспользуюготовыеспрайтыизнабора肯尼资产2.ПоэтомупокамоимглавнымгероембудетБерти。

UnityрешилсноваобратитьсякдвижкуC ++,它是Unity, Неточтобыэтовызвалокакие-топроблемы,нонемногожаль。 Покауменявсёвголовенеустоялось,небудураскрыватьвсекарты,ноиграбудетдвухмерная,пов。 Исчегоначинаетсянашбуфет? Правильно,суправления。

ОткройлюбуюобучающуюстатьюпоUnityитеберасскажуткаксделатьуправление。 Дачеготам,каждыйшкольниксообразит,чтодостаточнопроверятьвиилленажаталикнопкаидвига Тристрочки。 Илинет?

Ещёдоначаланаписаниякода, Аяпомимопрочегохочусделатьсложныесистемыбояидвижения。 Недавноярассказывал,чтописалсистемуклавиатурныхсочетаний,основаннуунапоследовательныхнаж。 Таквот,вигревсёбудеткудасложнее,ведьтамгораздострожеделообстоитсзадержкамикуда Такчтоявспомнилкогда-тодавнопрочитаннуустатью,прото,чтофайтингиосновываютоенаконечн。 Уменяотэтоготарминаканцеляритслучается,такчтоябудусбиватьсянаанглицизмы。

Таквот。 Основнаяидеявтом,чтоперсонажвкаждыймоментвременинаходитсявнекомсостоянии,котороеотвечаетзаегоповедение,атакжезавозможныеизмененияэтогосостояния。 Инымисловами,еслиБертипрыгнулиещёлетит,оннеможетпобежатьилипрыгнутьещёрае(илиможет。 Вмоейсхемеэтоозначает,чтосостояниязанимаютсятем,чтослушаютнажатиякнопокидругиепараметрыгероя,чтобывнужныймоментпереключитьсостояниенакакое-тодругое。 Самжеперсонаж,以及только«перемещает»изображениевнужныевнужныеконнееконтроллердвижения。 Здесьневерныкакслово«перемещает»,таки«изображение»。 Нообэтомпозже。

Следуеттакжеотметить,чтосостоянияоченьпомогутмне,когдаязаймусьанимациейизвуками,таккакименно«вход»всостояние – этотоместо,гденачинаетсязвукилиочереднаястадияанимации。

Признаюсь,янестализобретатьвелосипед,ивзялготовуюреализациюстейт-машины。 Правдаонавсегопорядкастастрочекибольшаячастьизнихмнененунна。 ,уженемногоизменилеёи,вероятно,скороотнеёивовсеничегонеостанется。 Такчтоясебяпростил。

Попячемся

Точтоздесьработаетуженесколькоразполностьюпереписано。

Апоканачнём。 Иначнёмсшаговвперёд-назад。 Почему-тоязахотелчтобынаправлениевзглядаперсонажабыловажно,ноприэтомсамрагрлоспо。 墨西哥 Такчтоуменя,каквфайтингах,будутшаги«назад»и«вперед»。 Опять-таки,думаяобанимации,эторазумно。

Всемизвестно,чтолюбаядороганачинаетсясодногошага。 ПоэтомузададимБертрамусостояниеIDLEизаймёмсяшагами。 Насамомделе,сразупридетсядуматьобудущем,чтобынепереписыватьлишнийраз。 Чтовыожидаете,нажимаянакнопкунаправления? Логично,чтото,чеммыуправляем,сразуначнетдвигаться。 Амыдержимкнопку,чтобыдвижениепродолжалось。 Ивсебылобыпросто,нерешияпридуматьсебесложностей。 Например,яхочуперекаты。 :точастыйкейс:дваждыбыстронажимаешьстрелкуиперсонажделаетрывоквуказаннуюсторону。 Обычноэточто-товродекувырка,частоещеизащищающегоотполучаемогоурона。 Оченьважныйтактическийприём,позволяющийрватьдистанциюиуклонятьсяотударов。 ПоэтомумнеипонадобилисьэтинесколькотехническиесостоянияSTEPиBACKSTEPОнинетольконачинаютдвижение(заэтимследитконтроллер,анесостояние),онитакжезапускаюттаймер,поистечениюкоторого,есликнопканебудетотжата,состояниесменитсянаWALK,тоесть,непрерывноедвижение。

Такмынаучилисьходить

Еслижепроизойдётещёоднонажатие, томыпереключаемсянасоответственноDASHилиBACKDASH 。 Посути,этототжесамый«шаг»,ночутьдольшеибезусловнопереходящийвIDLE。 Язрзз

/ хранитсяНаправлениевконтроллере。 Шагизапоминаютнаправление,накотороепроизойдётпереключениепривходевсостояниипостоянногодв。 Направлениевлияетназнакизменениякоординат,атакжеотрисовкуспрайтаипригодитсявбудущемдляопределениятого,спинойилилицомБертистоиткстене。

Для«рывков»явременносделалдеформациюспрайта。 Добавляетдинамики。

Физикапротив

Механикудвижениямнепришлосьпереписыватьраз,наверное,пять。 Хотяпервыйвариант,всеголишьперемещалобъектвуказанныекоординаты,ужетамбылонемножко。 Всёделов,чтоясразурассматривалБертрамакакобъект,лежащийнаплоскости,аневисящий。 Унасбылтвёрдыйпол,детекторстолкновенийигравитация。 Казалось,добавьдвижениевверхивотутебяпрыжки。

Неа。 Еслипропуститьвсюболь,которуюяиспыталвпроцессе,тодвижениесейчасработаеследующимом Двеэтипеременныеуправляютсяконтроллером,которыйменяетихвзависимостиоттекуооноон Силазадаётвекторперемещенияпоземлеионадействуетвремя,покаактивированосостояниедвиж。 Импульсотвечаетзапрыжки(коихуменяажтри),иотрабатываетмгновенно(нупочти)。 Такимобразомполучается,чтовсёсложное,вродепрепятствий,наклонныхплоскостей,гравити Оноченьособенный,новцелом,значительнолучшевсего,чтосделалбыя。

Пришлось,правда,вбитьпарукостылей,нокудабезэтого。 Например,инерцияотдвижения,которуюприходитсягаситьприокончаниидвижения。 Даещёигаситьплавно,чтобывыгляделореалистично。 Азналибывы,скольковремениянемогпонять,почемуБертиотскакиваетотполаприприземлени! Уматериаловжовпоказателе«отскакиваемости»! Аннет,этогонедостаточно,ведьеслисильностолкнутьдватвёрдыхпредмета,онивсёравноотско。 ТакчтокогдаБертикасаетсяземли,附近的国家, Скореевсего,большаячастьэтихкостылейвызванамоимнезнаниемтонкостейдвижка,нотаккаквсёравноещёнесколькоразвсёэтопридётсяпеределать,пустьпокаживёттак。

Насамомделепрыжокизтрёхсостояний:собственноJUMP, MIDAIR (когдавзлётослабеваееиечее Такоеразделениенетолькопозволяетдобавлятьновыедвижениявпрыжке,ноиболеетонре Есликратко,тосхемавыглядиттак:

  • Бертистоитназемле,нажатакнопкапрыжка
  • ПереходимвссостояниеJUMP,задаемимпульс,направленныйвверх
  • УскорениезамедляетсядоуказаннооопорогипMIDAIR,ускоряемпадение,таккакеннее
  • Начинаембыстропадать,переходимвсостояниеFall
  • Всё,мыназемле,переходимвIDLE(илиWALK和еслинажатакнопкадвижения)

Звучитпростоилогично,нетакли? Ага,когдачитаешьужеготовыйвариант。

ЕгоВоздушество

Редкокогдаприразработкеоднойединственнойфичивсплываетстолькобагов

Следующиедва«движения»ясделалотключаемыми,вероятнеевсего,онинебудутдоступныигроанигроан。 Этодвойнойпрыжокиуправлениенаправлениемпадения。 Первоеяреализовалввиде«мгновеннооосостояния,котороесрабатываетнаодинкадриеатандопо Авотсуправляемымпадениемтакнеполучилось,таккакпришлосьбывводитьнекийфлагсостояния,отвечающийзато,нажаталикнопкадвиженияипроверятьеговконтроллере。 Аястараюсьизбегатьподобногосвязыванияиограничиваюсьтолькопроверкойтипасостояния,котораяопределяеттолько,являетсялитекущеесостояниеэкземпляромтогоилииногокласса。 Поэтомуясделалсвязьвобратнуюсторону,тоестьсостояниедёргаетметодконтроллера,которыйдобавляетсилудвижения,ровнокакэтоделаетперемещениепоземле。 Таккакэтоименноприданиесилы,以及неперемещениевкоординаты,

Длянаглядностиясделалотображениевекторадвиженияиположенияотносительноточкистартапрыжка

ЛордБертрам,междупрочим,вмолодостибылниндзя。 Насамомделенет。 Онвыработалумениелазатьпостенам,когдазабиралсяпоплющувокнолюбимой。 Такилииначе,пришлосьделатьемуещёодну«умелку»-прилипаниекстенам。 ДляопределениястоитлиБартинатвёрдойземлеяприменяюотдельныймаленькийобработоинстолкнов Такимжеобразомянахожуикасаниястен。 Контроллерпосигналунетекторовопределяет, Есливпаденииподнимаетсяэтотфлаг,тосостояниеменяетсянаWALLSTICK,вкоторомнетолькозамедленнопадение,ноисновавозможносделатьпрыжокиликонтролировать падение ,дажееслиспособностинеактивированы。 Таккакприэтомещёпроисходитразворотвторонуотстены,можновзобратьсянавысотоеве

Воттакойунасполучился«ПринцПерсии»

Первыевпечатления

Вообще,разрабатыватьигруоченьвесело,особеннотечасти,которыесразувидно。 Прыгает—хорошо。 Непрыгает—плохо。 Ноприэтомещёибагисразувидно。 Зачастую,оченьзабавные。 Жальидеяснять«неудачныедубли»пришлаужевконцеэтойитерации,такчтоязаписалбуквалнин。 Ведьименноэтимразработчикзанятбольшуючастьвремени,«играет»всвоёдетище,таккаквиграхдажемалейшиекосякиуправлениясразубросаютсявглаза。 Поэтомуприходитсятестировать,тестироватьиещёразтестировать。 Иэтопритом,чтоскороопятьвсёпеределывать。

Дальшеяподумываюнаконецзанятьсяграфикой。 ТоестьсделатьспрайтыдляБерти,попробоватьанимациюиуженачатьделатьвсёостальноерраках Такчтонепереключайтесь!

PSПриразработкепрототипанепострадалниодинглазастик,以及такженебылоупотребленониодногоо。

PPSВозможно,стильэтойстатьинесколькоотличаетсяотобычных,таккакяписалееурывками。 Болеетого,япыталсяизбегатьслишкомнеправильныхоборотовислов,以及которыебыругалсяспелл​​е。 Нефакт,чтоэтопошлонапользу。 В«ё»икавычках-лапкахянесколькоболееуверен。 Ноэтоужевамрешать。