Текст в Blender Game Engine

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

Добавяне на текст

Blender може да използва текст в реално време в двигателя на играта. Създайте нова сцена, превключете към изгледа на камерата, позиционирайте 3D курсора в горния ляв ъгъл и добавете обектТекст. Най-вероятно ще се подравни спрямо глобалните координати. Можете ръчно да го завъртите, но е по-добре да отидете в Потребителски предпочитания и в раздела Редактиране да промените опцията Подравняване къмПреглед. По този начин новосъздадените обекти ще бъдат подравнени с текущия изглед, а не с глобалните координати. Сега стартирайте играта (P ) и ще видите своя текст в нея:

game

Промяна на разделителната способност на шрифта

Не е трудно да се види, че качеството на надписа оставя много да се желае. Можем да го подобрим по два начина. Можете да преместите текста далеч от камерата и да увеличите размера му (ако е необходимо) или да напишете малък Python скрипт. По-добре е да използвате втория начин :)

Добавете прозорецТекстов редактор, създайте нов файл, наречен „text_res “ и поставете следния скрипт в него:

cont = bge.logic.getCurrentController() own = cont.owner own.resolution = 5

Когато текстът все още е избран, отидете до прозорецаLogic Editor. Добавете сензор Always и го свържете към контролера на Python. За контролера укажете да използвате скрипт, наречен „text_res “. Когато започнете играта, ще забележите, че текстът е станал много по-добре изглеждащ. Променете стойносттаresolution, докато постигнете желания резултат, но не задавайте твърде високи стойности, в противен случай играта ще започне да заеква.Стойността 1 е разрешението по подразбиране. Започнете със стойност 2 и така нататък, докато постигнете резултата:

играта
Това е много по-добре:
engine

Персонализиране на външния вид на шрифта

Можете да промените цвета на шрифта, като промените цвета на обекта. За да направите това, отидете в раздела Обект и променете параметъраЦвят на обекта. Самият шрифт може да се промени в раздела за шрифтове:

game

Добавяне на текст към играта (HUD)

След като вече знаем как да добавяме и персонализираме текст, нека създадем сцена на игра, която ще има Head-Up Display (HUD). Освен това ще научите как да форматирате дълги редове текст (да създавате тирета) с помощта на Python и логически блокове.

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

Натиснете P, за да започнете играта. Придвижването по него става с W, A, S, D + мишка, а можете също да клякате с Ctrl.

В центъра на сцената има кутия с амуниции. Веднага щом го вземете, той ще изчезне. Нашата цел ще бъде да покажем количеството събрани амуниции. За да направим това, имаме нужда от нова сцена, която ще действа като HUD: Преименувайте новата сцена на „HUD “. Превключете към изглед отпред и добавете камера към сцената. Преместете камерата далеч от центъра на координатната ос. Сега превключете към изгледа на камерата и добавете текст в горния ляв ъгъл, както направихме в началото на урока. Променете надписа на „Амуниции: “ и по избор коригирайте разделителната способност, цвета и шрифта за текста. След това дублирайте надписа, преместете го малко надясно и променетего на „0 “. Този втори текст ще действа като брояч всеки път, когато кубът (нашият герой) влезе в контакт с амуниции.

С маркиран “0 ” в прозорецаРедактор на логика в панела със свойства, добавете ново свойство за него “Добавяне на свойство на текстова игра “. Променете типа на Integer (цяло число). След това нека настроим HUD изхода към сцената на играта:

blender
Превключете към сцената на играта и изберете камерата. В прозореца на Logic Editor свържете сензора Always, контролера And и актуатора Scene. Променете режима на задвижване наДобавяне на сцена с наслагване и използвайте сценатаHUD : Сега стартирайте играта и трябва да видите генерирания текст в сцената на HUD:
engine
Изберете кутията с амуниции в центъра на сцената. Ще забележите, че той вече има логически блокове, отговорни за неговото завъртане и изчезване, когато се сблъска с нещо.

Добавете актуатор за съобщения и го свържете към същия контролер като сензора за сблъсък. Въведете „муниции “ в полето Тема. Сега, когато се сблъскате с герой, амунициите ще изчезнат и ще изпратят съобщението „ammo “:

blender
Превключете към сценатаHUD и изберете брояча. Добавете сензор за съобщения и въведете “муниции ” в полето Тема. Свържете го към контролера And, а контролера към актуатора Property. Променете режима му наAdd, Property наText и задайте Value на1. Цялата тази група добавя един към променливата Text, когато получи съобщението „муниции“: Върнете се на сцената с играта, стартирайте я и вземете кутията. Броячът трябва да се промени от 0 на 1. Можете да дублирате кутията за доставки няколко пъти, да я поставите в различни части на сцената и да се опитате да ги съберете всички.

Сричкопренасяне

Ако вашата игра съдържа дългидиалогови прозорци, тогава най-вероятно ще искате да ги показвате в параграфи. Можете да направите това ръчно, като добавите „\n“ към кода на скрипта или можете да използвате отделен модул за тази цел. С този модул можете да вземете дълги редове и да ги разделите на отделни редове с определена дължина. Използването на моноширинни шрифтове дава най-добри резултати, тъй като дължината на реда се определя от броя на знаците в реда, а не от ширината на пиксела на реда.

Отидете на сцена HUD. Точно под етикета „Амуниции“ добавете нов текстов обект. Ако е необходимо, редактирайте разрешението. В раздела за шрифтове променете шрифта на шрифт с едно пространство, като например Courier. В прозореца на Logic Edotor добавете ново свойство „Add Text Game Property “ и оставете типа String (низ). Създайте нов текстов файл, наименувайте го „text_wrap “ и поставете следния скрипт в него:

import textwrap cont = bge.logic.getCurrentController() own = cont.owner startmessage = "Добре дошли в този урок за текст в двигателя на играта." own["Текст"] = textwrap.fill(startmessage, 20)

Добавете сензор Always и го свържете към контролер на Python, който има указания скрипт „text_wrap “. Стартирайте играта и вижте резултата. Променливатаstartmessage съхранява нашия текст за извеждане. Променливатаown[“Text”] променя текстовия обект и използва функциятаtextwrap.fill(startmessage, 20), за да го изведе в редове от 20 знака:

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

Изберете етикета и добавете сензор за забавяне, контролер И и актуатор за видимост към него. Задайте Delay на200 и в актуатора за видимост изключетеVisibility. Тази връзка казва, че след 200 „отметки“ (споредпо подразбиране 60 „отметки“ = 1 секунда) надписът ще изчезне от екрана. Стартирайте играта и проверете дали работи.

blender
Този урок приключи! Можете също така да използвате всякакви други функции за манипулиране на текст: capitalize(), lower(), upper() и т.н.