Unity - Разработване на вашата първа игра с Unity и C#
Продукти и технологии:
Unity, C#, Microsoft .NET Framework
Статията обхваща:
- въртящи се и движещи се обекти;
- анимации и терени;
- координатни системи в Unity;
- нишки и съпрограмми.
Все още ли сте с мен в тази поредица от статии? Глоба. В първата статия разгледах някои от основите на Unity (msdn.microsoft.com/magazine/dn759441). Във втората статия се фокусирах върху 2D графики в Unity (msdn.microsoft.com/magazine/dn781360). Сега ще премина към моята любима част от разработката на игри, 3D графиката. 3D светът е наистина магическо място: зашеметяващи среди, които създават ефекта на пълно потапяне в света на играта, богати звукови ефекти и красиви визуализации; дори обикновена пъзел игра с реалистична физика може да ви държи пристрастени часове наред.
3D игрите определено добавят ниво на трудност в сравнение с 2D, но стъпка по стъпка постепенно ще изградите интересна 3D игра. Нови опции за проекти за 2D и 3D в Unity поддържат 3D. Една 2D игра може да има 3D обекти и обратното.
От какво е направена 3D сцена?
Триизмерната (3D) сцена се състои главно от три основни визуални компонента: светлини (светлини), мрежови рендери (мрежести рендери) и шейдъри. Unity поддържа четири вида светлини. Ще ги намерите в менюто GameObject. Експериментирайте, като добавяте различни типове и променяте свойствата им. Най-простият от тях е източник на насочена светлина, който е като слънцето в небето.
Мрежа (мрежа) или модел е набор от върхове, които образуват полигони,от които е направен предмет. Шейдърът е компилирана подпрограма, която съдържа код за контрол на това как вашият обект ще бъде изобразен или как ще взаимодейства с източник на светлина. Някои шейдъри просто вземат светлина и я отразяват като огледало, други вземат текстура (изображение, приложено към мрежа) и могат да създават сенки и дълбочина, а някои дори ви позволяват да изрежете визуални дупки във вашите модели (живият плет е пример).
Моделите обикновено се съдържат в .fbx или .obj файлове, експортирани от друг софтуерен пакет за моделиране. FBX файловете могат също да съхраняват анимационни данни, така че може да се окажете с един FBX файл за вашия модел и друг, който съдържа множество анимации. Поддържат се и редица файлови формати на трети страни, като Autodesk Maya (.ma) и Blender. Обикновено програма на трета страна трябва да бъде инсталирана на същата система, ако искате Unity да импортира тези файлове и след това да им позволи лесно да бъдат влачени в проекта Unity като всички други файлове. Зад кулисите, Unity ще преобразува други файлови формати (при импортиране или откриване на файлови промени) във формат .fbx.
Магазин за активи
Типичната 3D игра използва много от същите концепции като 2D игра: колайдери, тригери, твърди тела, игрови обекти/трансформации, компоненти и много други. Независимо от вида на 3D играта, обикновено трябва да контролирате въвеждането, движението и героите, да използвате анимации и ефекти на частици и да изградите въображаем свят, който е едновременно фантастичен и реалистичен. Ще обсъдим някои от начините, по които Unity може да помогне за постигането на всичко това.
Контролери за въвеждане, движение и знаци
Прочетете въведените данни задвижението в 3D е малко по-сложно, защото вместо просто да се движите в равнините X и Y, сега можете да се движите в три измерения: X, Y и Z. Опциите за 3D движение включват (но не се ограничават до) движение отгоре надолу, където героят се движи само хоризонтално и вертикално; завъртете камерата или героя, когато четете въведеното от мишката, както се прави в много шутъри от първо лице (шутър от първо лице, FPS); отместване наляво и надясно при хоризонтално четене на входа; въртя се около себе си, докато чете входа хоризонтално, или просто се движи в обратна посока. Има много възможности за пътуване, така че имате много да избирате.
Когато местите обект, вие не му казвате позицията, в която трябва да се премести, както бихте очаквали. Спомнете си, че изпълнявате код на всеки кадър, така че трябва да местите обекта на малки стъпки. Можете или да го дадете на ядрото за поддръжка на физиката, като приложите сила към идеално твърдо тяло, или да създадете преходна анимация (tween) на обекта. Последното по същество означава придвижване между стойности, т.е. придвижване от точка А до точка Б. Има различни начини за създаване на съответен набор от стойности в Unity, включително използване на безплатни библиотеки на трети страни като iTween. Нафиг. 1 показва някои ръчни начини за преместване на обект в Unity. Обърнете внимание, че те не са оптимизирани за простота (за оптимизация ще трябва да съхраня препратка към преобразуването в променлива, за да избегна превключването напред и назад между управляван и естествен код).
Фиг. 1. Различни методи за преместване на обекти