Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Unity Game Development Essentials RUS

.pdf
Скачиваний:
6559
Добавлен:
12.04.2015
Размер:
8.03 Mб
Скачать

1

Автор перевода : Sok@l

Автор : Will Goldstone Источник : Unity Game Development Essentials

1

Добро пожаловать в Третье

Измерение

Прежде, чем начать работать с любым трехмерным пакетом, крайне важно понять окружающую среду, в которой Вы будете работать. Поскольку Unity - прежде всего трехмерна на основе средство разработки, много понятий всюду по этой книге примут определенный уровень понимания трехмерного развития и двигателей игры. Крайне важно, что Вы оборудуете себя пониманием этих понятий прежде, чем нырнуть в практические элементы остальной части этой книги.

Понимание трехмерного пространства

Давайте смотреть на ключевые элементы трехмерных миров, и как Unity позволяет Вам развивать игры в третьем измерении.

Координаты

Если Вы работали с каким-нибудь трехмерным пакетом прежде, Вы вероятно будете знакомы с понятием Оси Z. Ось Z, в дополнение к существующему X для горизонтального и Y для вертикального, представляет глубину. В трехмерных применениях Вы будете видеть информацию относительно объектов, вынутых в X, Y, Z формат - это известно как Декартовский координационный метод. Измерения,

вращательные ценности, и позиции в трехмерном мире могут все быть описаны таким образом. В этой книге, как в другой документации трехмерных, Вы будете видеть такую информацию, написанную с круглой скобкой, показанной следующим образом:

2

(10, 15, 10)

Это главным образом для опрятности, и также вследствие того, что в программировании, эти ценности должны быть написаны таким образом. Независимо от их представления Вы можете предположить, что любые наборы трех ценностей, отделенных запятыми, будут в X, Y, Z заказ.

Местные координаты вращения против Глобальных

Решающее понятие, чтобы начать смотреть является различием между Местными и Глобальными. В любом трехмерном пакете мир, в котором Вы будете работать, технически бесконечен, и может быть трудно отследить местоположение объектов. В каждом трехмерном мире есть пункт происхождения, часто называемого нолем, поскольку это представлено позицией (0,0,0).

Все глобальные позиции объектов в трехмерном пространстве расположены относительно глобального ноля. Однако, чтобы сделать более простыми вещи, мы также используем Местное координаты (также известный как Local Rotation), чтобы определить объектные позиции относительно друг друга. Местные координаты предполагают, что у каждого объекта есть свой собственный нулевой пункт, который является пунктом, из которого появляются его ручки оси. Это обычно - центр объекта, и создавая отношения между объектами, мы можем сравнить их позиции относительно друг друга. Такие отношения, известные как

родительско-детские отношения, означают, что мы можем вычислить расстояния от других объектов, используя Местные координаты, с позицией родительского объекта, становящейся новым нулевым пунктом для любого из его детских объектов. Для получения дополнительной информации о родительско-детских отношениях, см. Главу 3.

Y

Векторы

Вы будете также видеть трехмерные векторы, описанные в Декартовских координатах. Как их 2-ые копии, трехмерные векторы - просто линии, оттянутые в трехмерном мире, у которых есть направление и длина. Векторы могут быть перемещены в глобальные координаты, но остаться неизменными непосредственно. Векторы полезны в контексте двигателя игры, поскольку они позволяют нам вычислять расстояния, относительные углы между объектами, и направление объектов.

Камеры

3

Камеры являются существенными в трехмерном мире, поскольку они действуют как портами вида для экрана. Имея в форме пирамиды поле зрения, камеры могут быть помещены в любом пункте в мире, оживили, или были свойствены характерам или объектам как часть сценария игры. С приспосабливаемым Полем зрения (FOV) трехмерные камеры - Ваш порт вида на трехмерном мире. В двигателях игры Вы заметите, что эффекты, такие как освещение, пятна движения, и другие эффекты применены к камере, чтобы помочь с моделированием игры глазного вида человека мира - Вы можете даже добавить несколько кинематографических эффектов, которые человеческий глаз никогда не будет испытывать, такие как вспышки линзы, смотря на солнце!

Большинство современных трехмерных игр использует многократные камеры, чтобы показать части мира игры, что камера характера в настоящее время не видны в подобных кинематографических условиях. Unity делает это с непринужденностью, позволяя много камер в отдельной сцене, которая может быть подготовлена, чтобы действовать как главная камера в любом пункте во время времени выполнения. Многократные камеры могут также использоваться в игре, чтобы управлять предоставлением специфических 2-ух и трехмерных элементов отдельно как часть процесса оптимизации. Например, объекты могут быть сгруппированы в слоях, и камерам можно поручить видеть объекты в специфических слоях.

Многоугольники, края, вершины, и меши

В строительстве трехмерных форм все объекты в конечном счете составлены из связанных 2-ух мерных форм, известных как многоугольники. При импортировании моделей от применения моделирования Unity преобразовывает все многоугольники в треугольники многоугольника. Треугольники многоугольника в свою очередь составлены из трех связанных краев. Местоположения, в которых встречаются эти вершины, известны как пункты или вершины. Зная эти местоположения, двигатели игры в состоянии сделать вычисления относительно точек падений ракет, известных как столкновения, используя сложное обнаружение столкновения с Коллайдерами Меша, такой как в стреляющих играх, чтобы обнаружить точное местоположение, в котором пуля поразила другой объект. Комбинируя много связанных многоугольников, трехмерные применения моделирования позволяют нам строить сложные формы, известные как меши. В дополнение к построению трехмерных форм у данных, хранивших в петлях, может быть много другого использования. Например, это может использоваться как поверхностные навигационные данные, делая объекты в игре, следующим за вершинами.

В проектах игры для разработчика крайне важно понять важность счета многоугольника. Счет многоугольника - общее количество многоугольников, часто в ссылке на модель, но также и в ссылке на весь уровень игры. Чем выше число многоугольников, тем больше работы Ваш компьютер должно сделать, чтобы отдать объектына экран. Это - то, почему, в прошлое десятилетие, мы видели, что увеличение уровня

4

деталей от ранних трехмерных игр до таковых сегодня просто сравнивает визуальные детали в игре, такой как Землетрясение Ида (1996) с деталями, замеченными в игре, такими как Механизмы Эпопеи войны (2006). В результате более быстрой технологии разработчики игры которые теперь в состоянии содержать намного более высокий счет многоугольника, и эта тенденция неизбежно продолжится.

Материалы, структуры, и шейдеры

Материалы - общее понятие ко всем трехмерным применениям, поскольку они обеспечивают средства установить визуальное появление трехмерной модели. От основных цветов до рефлексивных основанных на изображении поверхностей материалы обращаются со всем.

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

В Unity использование материалов легко. Любые материалы, созданные в Вашем трехмерном пакете моделирования, будут импортированы и обновлены автоматически двигателем и созданы как активы, чтобы использовать позже. Вы можете также создать свои собственные материалы на пустом месте, назначая изображения как файлы структуры, и выбирая шейдериз большой встроенной библиотеки. Вы можете также написать свои собственные шейдеры, или использовать написанные членами сообщества Unity, давая Вам больше свободы для расширения вне включенного набора различных материалов.

Кардинально, создавая структуры для игры в графическом пакете, такие как Фотомагазин, Вы должны знать о решении. Структуры игры, как ожидают, будут квадратными, и измерены к отношению 2 x 2. Это означает, что числа должны работать следующим образом:

128 x128

256 x 256

512 x 512

1024 x1024

Создание структур этих размеров будет означать, что они могут успешно умножатся – накладыватся на модель без потери качества, двигателем игры. Вы должны также знать что, чем больший файл структуры который Вы используете, тем больше мошности обработки Вы будете требовать от компьютера игрока. Поэтому, всегда не забывайте пытаться изменить размеры Вашей графики к наименьшей власти 2 возможных измерений, не жертвуя слишком многим в качестве.

Физика Твердого тела

Для разработчиков, работающих с двигателями игры, двигатели физики обеспечивают сопровождающий способ моделировать ответы реального мира для объектов в играх. В Unity двигатель игры использует двигатель

5

Nvidia PhysX, популярный и очень точный коммерческий двигатель физики.

В двигателях игры нет никакого предположения, что объект должен быть затронут физикой во-первых, потому что требуется большая обработка данных, и во-вторых потому что это просто не имеет смысла. Например, в трехмерной ведущей игре, имеет смысл для автомобилей быть под влиянием двигателя физики, но не окружающими объектами, такими как деревья, стены, и так далее - они просто не должны быть. Поэтому, делая игры, компонент Твердого тела дан любому объекту, который Вы хотите под контролем двигателя физики.

Двигатели физики для игр используют систему динамики Твердого тела создания реалистического движения. Это просто означает, что вместо объектов, являющихся статичным в трехмерном мире, у них могут быть следующие свойства:

Масса

Сила тяжести

Скорость

Трение

Как власть аппаратных средств и увеличений программного обеспечения, физика твердого тела становится более широко прикладной в играх, поскольку это предлагает потенциал для более различного и реалистического моделирования. Мы будем использовать динамику твердого тела как часть нашей игры в Главе 6.

Обнаружение столкновения

В то время как более решающий для двигателей игры чем в трехмерной мультипликации, обнаружение столкновения - способ, которым мы анализируем наш трехмерный мир для межобъектных столкновений. Давая объект компонент Коллайдера, мы эффективно помещаем невидимую сеть вокруг его. Эта сеть подражает своей форме и отвечает за сообщение о любых столкновениях с другими коллайдерами, заставляя двигатель игры ответить соответственно. Например, в игре боулинга с десятью кеглями, простой сферический коллайдер окружит шар, в то время как сами кегли будут иметь или простой краткий коллайдер, или для более реалистического столкновения, использовать коллайдер меша. На воздействии коллайдеры любых затронутых объектов сообщат двигателю физики, который продиктует их реакцию, основанную на направлении воздействия, скорости, и других факторов.

В этом примере, используя коллайдер меша, чтобы соответствовать точно к форме модели булавки было бы более точным, но более дорог в обработке условий. Это просто означает, что это требует больше мошности обработки от компьютера, стоимость которого отражена в более медленной работе следовательно дорогой термин.

Существенные понятия Unity

6

Unity делает процесс производства игры простым, давая Вам ряд логических шагов, чтобы построить любой мыслимый сценарий игры. Известный тем, что был "не типом игры", определенным, Unity предлагает Вам чистый холст и ряд последовательных процедур, чтобы позволить Вашему воображению быть пределом Вашего творческого потенциала. Устанавливая его использование Объекта Игры (ИДУТ) понятие, Вы в состоянии сломать части своей игры в легко управляемые объекты, которые сделаны из многих отдельных Составных частей. Вы в состоянии бесконечно расширить свою игру в логической прогрессивной манере. У составных частей в свою очередь есть параметры настройки переменной( var ) по существу, чтобы управлять ими Регулируя эти переменные, у Вас будет полный контроль над эффектом, который Компонент имеет на Ваш объект. Давайте смотреть на простой пример.

Unity путь

Если бы я желал иметь живой шар как часть игры, то я начал бы со сферы. Это может быстро быть создано через меню Unity, и даст Вам новый Объект Игры с мешем сферы (сеть трехмерной формы), и компонент Renderer, чтобы сделать это видимым. Создав это, я могу тогда добавить Твердое тело. Rigidbody (Unity именует фразы наиболее с двумя словами как термин отдельного слова) является компонентом, который говорит Unity применять свой двигатель физики к объекту. С этим прибывает масса, сила тяжести, и способность применить силы к объекту, или когда игрок командует этим или просто когда это сталкивается с другим объектом. Наша сфера теперь упадет к основанию, когда игра будет работать, но как мы заставляем это подпрыгнуть? Это просто! У компонента коллайдера есть переменная под названием Физический Материал - это - урегулирование для Rigidbody, определяя, как это будет реагировать на поверхности других объектов. Здесь мы можем выбрать Бодрый, доступное, заданное, и вот! Наш живой шар готов, только в нескольких щелчках.

Этот подход для самой основной из задач, таких как предыдущий пример, кажется лёгким сначала. Однако, Вы скоро найдете, что, применяя этот подход к более сложным задачам, они становятся очень простыми в достижении. Вот еще краткий обзор тех ключевых понятий Unity:

Активы

Они - стандартные блоки всех проектов Unity. От графики в форме файлов изображения, через трехмерные модели и звуковые файлы, Unity обращается к файлам, которые Вы будете использовать, чтобы создать Вашу игру как активы. Это - то, почему в любой папке проекта Unity все используемые файлы хранятся в детской папке под названием Активы.

Эта книга состоит из кодовых файлов и активов, загруженных на нашем вебсайте (www.packtpub.com/files/code/8181_Code.zip <http://www.packtpub.com/files/code/8181_Code.zip>) и доступный для извлечения здесь. Пожалуйста извлеките файлы из уже упомянутой

7

ссылке, чтобы использовать в своих интересах коды актива, неотъемлемую часть развития игры Unity.

Сцены

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

Объекты Игры

Когда актив используется в сцене игры, это становится новой Игрой, Упомянутой объектом в условиях особенно Unity в scripting-использовании законтрактованного термина "GameObject". Все GameObjects содержат по крайней мере один компонент для начала, то есть, компонент Transform (преобразовать). Преобразователь просто говорит двигателю Unity позицию, вращение, и масштаб объекта - все описанные в X, Y, Z координата (или в случае масштаба, размерного) заказ. В свою очередь, компонент может тогда быть обращен в scripting, чтобы установить позицию объекта, вращение, или масштаб. От этого начального компонента Вы положитесь на объекты игры с дальнейшими компонентами, добавляющими требуемые функциональные возможности, чтобы построить каждую часть любого сценария игры, который Вы можете вообразить.

Компоненты

Компоненты входят в различные формы. Они могут быть для того, чтобы создать поведение, определяя появление, и влияя на другие аспекты функций объекта в игре. 'Прилагая' компоненты к объекту, Вы можете немедленно применить новые части двигателя игры к Вашему объекту. Общие компоненты производства игры прибывают как встроенные с Unity, таким как компонент Rigidbody, упомянутый ранее, вниз к более простым элементам, таким как огни, камеры, эмитенты частицы, и больше. Чтобы построить далее интерактивные элементы игры, Вы напишете сценарии, которые рассматриваются как компоненты в Unity.

Сценарии

Будучи рассмотренным Unity, чтобы быть Компонентами, сценарии - основная часть производства игры, и заслуживают упоминания как ключевое понятия. В этой книге мы напишем наши сценарии в JavaScript, но Вы должны знать, что Unity предлагает Вам возможность написать в C# и Boo (производная языка Питона) также. Я хотел демонстрировать Unity с JavaScript, поскольку это - функциональный язык программирования, с простым слежением за синтаксисом, с которым некоторые из Вас, возможно, уже столкнулись в других программах, таких как развитие Adobe Flash в ActionScript или в использовании JavaScript непосредственно для веб разработки.

Unity не требует, чтобы Вы изучили, как кодирование его собственного двигателя работает или как изменить его, но Вы будете использовать

8

scripting в почти каждом сценарии игры, который Вы развиваете. Красота использования Unity scripting состоит в том, что любой сценарий, который Вы пишете для своей игры, будет достаточно верным после нескольких примеров, поскольку у Unity есть свое собственный встроенный ряд Classes scripting инструкции поведений для Вас . Для многих новых разработчиков, схватившихся с scripting, может быть перспектива укрощения, и тот, который угрожает отпугнуть новых пользователей Unity, которые просто приучены только проектировать. Я введу в scripting один шаг за один раз, с умом к показу Вас не только важности, но также и власти эффективного scripting для Ваших игр созданных наUnity.

Чтобы написать сценарии, Вы будете использовать автономный редактор сценария Unity. На Mac это - приложение по имени Unitron, и на PC, Uniscite. Эти отдельные приложения могут быть найдены в прикладной папке Unity на Вашем PC или Mac и будут начаты любое время, Вы редактируете новый сценарий или существующий. Исправление и экономия сценариев в редакторе сценария немедленно обновят сценарий в Unity. Вы можете также назначить своего собственный редактора сценария в предпочтении Unity, если Вы желаете.

Prefab

Развитие Unity приближается к стержням вокруг понятия GameObject, но у этого также есть умный способ хранить объекты как активы, которые будут снова использованы в различных частях Вашей игры, и затем 'порождены' или 'клонированы' в любое время. Создавая составные объекты с различными компонентами и параметрами настройки, Вы будете эффективно строить шаблон кое для чего, что Вы можете хотеть породить многократные случаи, с каждым случаем, тогда являющимся индивидуально поддающимся изменению. Рассмотрите корзину как пример - Вы, возможно, дали объекту в игре массу, и написали подготовленные поведения для ее разрушения; возможности, Вы будете хотеть использовать этот объект не раз в игре.

Prefab позволяют Вам хранить объект, полный компонентов и текущей конфигурации. Сопоставимый понятию MovieClip в Adobe Flash, думайте о prefab просто как о пустых контейнерах, которые Вы можете заполнить объектами, чтобы сформировать шаблон данных, который Вы вероятно переработаете.

Интерфейс

У интерфейса Unity, как много других производственных условий, есть настраиваемое расположение. Состоя из нескольких мест dockable, Вы можете выбрать, какие части интерфейса и где появляются. Давайте смотреть на типичное расположение Unity:

9

Поскольку предыдущее изображение демонстрирует (показанная версия PC), есть пять различных элементов, с которыми Вы будете иметь дело:

Сцена [1] - где игра построена

Иерархия [2] список GameObjects в сцене

Инспектор [3] - параметры настройки для в настоящее время отбираемого актива/объекта

Игра [4] - окно предварительного просмотра, активное только в способе игры

Проект [5] - список активов Вашего проекта, действия как библиотека

Окно Scene и Иерархия

Окно Scene - то, где Вы построите полноту своего проекта игры в Unity. Это окно предлагает перспективу (полный трехмерный) вид, который переключаем к орфографическому (вершина вниз, сторона на, и фронт на) виды. Это действует как полностью предоставленный вид 'Редактора' мира игры, который Вы строите. Перемещение актива к этому окну сделает это активным объектом игры. Вид Сцены привязан к Иерархии, которая перечисляет все активные объекты в в настоящее время открытой сцене в возрастании на алфавитный порядок.

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]