Меню Закрыть

Unity 2d game development dave calabrese

Содержание

Обзор

A fun, easytofollow experience that takes you from an empty project in Unity 4.3+ all the way to a finished, functional 2D platformer, while giving you challenges and ideas to take what you learn in this book and expand upon it.

This book is ideal for anyone who wants to learn how to build 2D video games or who just wants to expand their knowledge of the Unity game engine. It would be helpful to know how to navigate your way around Unity and some basic C# before getting started with this book; however, if you don’t, no worries – we will point you in the right direction!

Читайте в мобильном приложении Scribd

Отрывок книги

Unity 2D Game Development — Dave Calabrese

Table of Contents

Unity 2D Game Development

Credits

About the Author

About the Reviewers

www.PacktPub.com

Support files, eBooks, discount offers and more

Why Subscribe?

Free Access for Packt account holders

Preface

What this book covers

What you need for this book

Who this book is for

Conventions

Reader feedback

Customer support

Downloading the color images of this book

Downloading the example code

Errata

Piracy

Questions

1. Introduction to the 2D World of Unity

Remembering the past to build the future

The 2D world of Unity

The perspective camera

Getting grounded

Making new friends

Let’s move it!

Gotta move it!

Make ’em run!

Summary

2. It Lives!

Cameras – they now stalk us!

Falling to your doom!

Falling fatally into death colliders

Death and resurrection – respawning

Jump to it!

Jumping for fun (and profit)

Not missing the ground

Wait, did I collide with something?

Got a glitch?

Making the world bigger

Let’s get dangerous

Bullets are better when they hit things

Summary

3. No Longer Alone

Making enemies

Make it move

Make it deadly

Let’s go huntin’!

The swarm

Summary

4. Give It Some Sugar

Expanding the world!

Parallax scrolling

Parallax layer ordering

Let’s score!

Enemies – forever!

Summary

5. The Ultimate Battle of Ultimate Destiny

Meet the king

Crown the king

Dusty platforms

Crushing defeat

Summary

6. The Finishing Touches

Game rounds

Give it a start screen

Summary

Index

Unity 2D Game Development

Unity 2D Game Development

Copyright © 2014 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: March 2014

Production Reference: 2100414

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-84969-256-4

www.packtpub.com

Cover Image by Dave Calabrese ( )

Credits

Author

Dave Calabrese

Reviewers

Greg Copeland

Fırtına Özbalıkçı

Karin Rindevall

Jack O. Snowden

Acquisition Editor

Rebecca Pedley

Luke Presland

Content Development Editor

Sruthi Kutty

Technical Editors

Akashdeep Kundu

Neha Mankare

Faisal Siddiqui

Copy Editors

Roshni Banerjee

Mradula Hegde

Project Coordinator

Mary Alex

Proofreader

Paul Hindle

Indexer

Tejal Soni

Production Coordinator

Sushma Redkar

Cover Work

Sushma Redkar

About the Author

Dave Calabrese is an independent professional video game developer who has worked in the industry since 2002. Starting as an intern and working his way up to running his own small studio, Cerulean Games, he strives to produce fun and quality entertainment while also inviting others to learn from his experience and mistakes. Dave has had the opportunity to work on branded projects for top names and produce titles for multiple platforms, including Xbox 360, iOS, PC, and Mac. Today, he continues to produce fun and original games, participate in game jams, and author books.

Special thanks to my fiancée Kelly Myers for always putting up with my shenanigans.

About the Reviewers

Fırtına Özbalıkçı is an enthusiast of video games and game development tools. He is experienced in various game engines, including the Unreal Development Kit, Source Engine, Ogre3D, and Unity 3D. Additionally, he has studied open source physics engines such as Box2D in order to achieve a greater understanding of game mechanics. He has published several game mods and trainers and is a long-term contributor to several game development communities and GitHub. His latest project is a plugin to enhance the usability of the 2D physics of the Unity3D engine.

Читайте также:  Как вконтакте удалить список

Fırtına is currently employed by a British billing company as a core developer. Previously, he worked for a visual effects company, specializing in production tools development. He graduated from the University of Bath in the United Kingdom, earning a degree with honors in Computer Science. He maintains a tiny garden in his London flat’s balcony.

I would like to thank my parents: Sonay and Erdoğan Özbalıkçı, my sister Goncagül, as well as Chelsea for their support in me being a reviewer.

Karin Rindevall is a Swedish animator and game artist with six years of experience in the gaming industry. She has worked with the Unity engine on several games released on various platforms. Her first Unity 3D title was MilMo (2008), the first 3D action adventure MMO played on a web browser. Today, she makes animation and art assets for 2D and 3D games released on PC and mobile devices at Hello There, a game studio in Gothenburg, Sweden. Their most recent game titles are Avicii | Gravity and Khaba. When Karin isn’t creating games, she runs half marathons and creates comics.

Jack O. Snowden presently works for Wargaming of America, researching best practices for game development and game design. This includes environment design and modeling, texturing, object modeling, and game design.

He has worked at Electronic Arts Canada, Edmark (Riverdeep), spent a long extended time with Nintendo Software Technology, and finally as an academic director at the Seattle Art Institute, where he ran the gaming and animation departments.

www.PacktPub.com

Support files, eBooks, discount offers and more

You might want to visit www.PacktPub.com for support files and downloads related to your book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt’s online digital book library. Here, you can access, read and search across Packt’s entire library of books.

Why Subscribe?

Fully searchable across every book published by Packt

Copy and paste, print and bookmark content

On demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

Preface

Howdy and welcome! Take a seat and grab a drink. There you go. So, you say you want to learn all about this old-fashioned 2D stuff in that new-fangled Unity game engine? Well, you’ve come to the right place. Er, book. This here book? It’s all about using those awesome 2D updates that Unity added in v4.3 to make an entire game. Yup, a whole, basic platformer, complete with parallax scrolling, enemy logic, UI, and a boss battle. Pretty sweet deal, eh?

What this book covers

Chapter 1, Introduction to the 2D World of Unity, covers the basics of getting Unity up and running for 2D games and setting up a simple, animated, sprite-based player character.

Chapter 2, It Lives!, is all about camera control, 2D triggers, player death and resurrection, firing a weapon, and a bit about state machines for good measure.

Chapter 3, No Longer Alone, adds enemies! Shoot them, get killed by them, and watch them patrol. It’s a party where everyone wants to kill you!

Chapter 4, Give It Some Sugar, shows you how to build dynamic, endless enemy generation and a bigger game world, introduces parallax scrolling, and adds a scoring system.

Chapter 5, The Ultimate Battle of Ultimate Destiny, lets you know that the enemies have a friend, and he’s angry! In this chapter, you will build an entire boss battle.

Chapter 6, The Finishing Touches, is exactly what it sounds like—the final gravy on this awesome mountain of 2D goodness. You’ll be adding in game rounds and a start screen.

What you need for this book

This book is intentionally developed for only those who need one piece of software—Unity 4.3 or newer. That’s it. Don’t have Unity? No worries, you can nab a free version of this most excellent game engine from www.Unity3D.com.

Who this book is for

This book is ideal for anyone who wants to learn how to build 2D video games or wants to expand their knowledge of the Unity game engine. To get the most from this book, having knowledge of C# and Unity is important, however, if

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

Читайте также:  Стоимость международных отправлений почта россии

Внимание, под катом скриншоты 16+!

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

Задача

Мне хотелось написать что-то новогоднее, простое как в понимании, так и в управлении. В результате дискуссии с целевой аудиторией (моим ребенком), было решено, что игра будет такой:

  • 2D (так как на телефоне удобнее играть именно в 2D игры)
  • Управление одним пальцем (максимум иногда двумя)
  • Убивалка времени (просто тыкалка, чтобы не напрягать мозг)
  • Cистема достижений (чтобы было хоть немного интересно продолжать)
  • Мультяшноcть
  • Приятная музыка
  • Без интернета
  • Андроид (легкость установки тестовых apk файлов)

Это всё вылилось в идею "Сатана Санта стреляет по оленям, которые мешают взять его мешок".

И тут всё началось…

1. Сторонние андроид библиотеки

Проблема: я потратил два дня на то, чтобы найти нужные SDK, JDK, NDK и сделать так, чтобы Unity с ними заработал. На моей машине до Unity уже присутствовали sdk из андроид студии, но с ними не завелось, пришлось искать что-то другое, устанавливать, пробовать, опять искать… два дня…

Предложение по улучшению: неплохо было бы, если бы необходимые sdk последних версий устанавливались автоматом при установке Unity, а если кому надо понизить или обновить — тут уж и пускай этот кто-то сам настраивает, ручками.

2. Векторная графика

Проблема: Unity из коробки не понимает SVG. Даже всякие маленькие JS фрэймворки типа Paper.js просто шикарно работают с вектором, а такой слон как Unity — нет.

Решение: установил какой-то бета-пакет, который, вроде как читает SVG, но в итоге — конвертит его в растр. Приемлемо, но стыдно, Unity!

3. 2D платформа

Проблема: как видно на скриншоте, есть земля, и на ней есть снежок. И это еще и Mesh и Polygon Collider. То есть это поверхность, которая взаимодействует с объектами и которую можно изменять в редакторе. Так вот в текущей версии Unity нет стандартных средств, которыми можно такое моделировать.

Решение:

  1. Можно нарисовать растр с альфой (минус — редактировать это ну совсем неудобно)
  2. Можно купить плагин, который это делает (минус — тратить деньги)
  3. Можно написать плагин самому (минус — долго разбираться, долго писать)

Я выбрал долгий, но бесплатный путь 😉 Если кому надо такой плагин — пишите, поделюсь, расскажу как пользоваться, мне не жалко 🙂

Кстати, я смотрел демо новой беты Unity, вроде как появится такая штука из коробки! Спасибо вам за это, друзья!

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

4. Rotation & Quaternion

Проблема: очень сложная система 3d позиционирования и поворотов, ненужная в 2D играх.

Решение: это просто надо понять и принять, потому что 2D игра — это 3D игра, с координатой Z = 0. Но неплохо было бы упростить эту систему в 2D режиме, товарищи 😉

Я убил кучу времени и чуть не сломал мозг, пытаясь повернуть объект в нужную сторону на нужный угол, относительно другого объекта, когда в другом движке я просто писал player.a = 45; Да и многие очевидные методы в текущей версии — depricated.

5. Дебаг

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

Решение: я просто использую print()… и понимаю, что отладка сложного проекта будет решающим фактором приобретения платной версии Unity. Маркетологам компании грустный респект 🙁

Решено! благодаря подсказке Leopotam я установил дополнительный пакет для студии, появилась кнопка «Attach to Unity debugger».

6. Тап и клик, свайп и мув

Проблема: несмотря на удобство встроенной системы пользовательского ввода, не хватает простоты обработки обычных одиночных тапов, кликов и свайпов. Хотелось бы использовать один метод, который вернет координаты одиночного клика/тапа для разных типов устройств: тач и десктопа с мышкой, например.

Решение: пришлось написать свой класс прослоечку и обернуть нужные эвенты.

Пожалуй оставлю еще один комментарий, касательно системы управления. Огромное спасибо разработчикам Unity за универсальный Input, но для тач девайсов хотелось бы универсальных контролов тоже. Например, слайд вверх — забайндить на Jump, визуализировать крестик и кнопочки, как на джойстике, ну и в таком духе. Это можно докупить платными пакетами либо, снова, писать самому, тратя время на велосипеды.

7. Путаница с координатами

Проблема: нельзя объекту присвоить координаты клика и увидеть его в нужном месте, и это немного неочевидно.

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

Читайте также:  Восстановление просроченного водительского удостоверения

WorldToScreenPoint()
ScreenToViewportPoint()
transform.TransformPoint()

и другие…

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

8. Скудный набор UI контролов

Проблема: из коробки поставляются лишь самые базовые элементы, да и то с некоторыми приходится повозиться.

Решение: Можно довольствоваться малым. Я, например, потратил много времени чтобы заставить скролиться динамический список. Можно купить крутые контролы (минус — тратить деньги).

9. Большой размер APK файла

Проблема: при билде пустого проекта, его размер равен 21.9 MB (23,061,612 bytes)

Решение: нужно экономить на всём. Я пережимал mp3 файлы, сжимал текстурки, старался ничего лишнего не включать в проект. Но при подключении дополнительных пакетов размер нещадно увеличивался, стремясь к сотне.

Google Play просит разработчиков постить приложения Теги:

    andro >Добавить метки

Привет, пикабу! Сим постом, начну небольшую серию "уроков" по созданию двухмерной игры на движке Unity. Надеюсь, кому-то будет интересно. И сразу скажу, что в первом уроке мы не будем кодить. Это вводный урок. Поехали!

А создавать мы, собственно, будем упрощённую копию игры "Электроника". Это та самая советская игра, в которой волк из мультфильма "Ну погоди" ловит яйца.

Для начала, давайте рассмотрим инструментарий, который нам понадобится:

1 — Игровой движок Unity. Это два в одном. И движок и визуальный редактор.
Скачать Unity можно бесплатно, на официальном сайте unity3d.com.
2 — Любой редактор растровой графики, поддерживающий альфа каналы. То есть позволяющий создавать прозрачное изображение. В моём случае это Photoshop.
3 — Визуальная среда разработки, поддерживающая язык C#. По факту, можно кодить и в блокноте. Но визуальный редактор сильно ускоряет процесс. Так, как он имеет подсветку синтаксиса, подсказки, а возможно даже и проверку валидности написанного нами кода. Я пользуюсь Visual Studio. По умолчанию с юнити поставляется Mono Develop.

Всё скачали? Поставили? Отлично!

Давайте посмотрим, чем нам ещё может быть полезен сайт unity3d.com.

1 — Обучающие материалы (unity3d.com/ru/learn/tutorials).
В этом разделе вы можете найти множество видео-уроков с примерами кода, разделённые на различные категории. Полностью изучив этот раздел, вы уже сможете создать что нибудь интересная. Но есть и минус — большинство материалов на английском.
2 — Руководство по движку ( http://docs.unity3d.com/ru/current/Manual/ ).
Практически полностью русифицированный раздел, в котором можно найти ответы на большинство возникающих вопросов. И не только у новичков. Но кому я это рассказываю? Настоящие кулхацкеры и гамедевелоперы не читают документацию =)
3 — API скриптов ( http://docs.unity3d.com/ru/current/ScriptReference/ ).
А вот этот раздел я всё таки советую добавить в закладки. Когда вы поймёте основы скриптинга в Unity и поймёте, по какому принципу можно обращаться к объектам и свойствам, вам можно будет не мучать гугл глупыми вопросами, а сразу идти и курить мануалы на оф. сайте. Так будет проще, ибо гугл не содержит ответов на действительно серьёзные вопросы.

С этим разобрались. Давайте запустим редактор.

Для начала, давайте узнаем, с чем нам придётся работать. На картинке выше — окно редактора Unity, пятой версии. Прошу заметить, что стандартный вид данного окна — отличается от того, что вы видите у меня. Просто потому, что мне так удобнее. Для удобства повествования я выделил в редакторе пять областей. И стрелочкой указал на ещё одно важное место. Давайте посмотрим, что есть что:

1 — Окно иерархии (hierarchy). В этом окне будут размещаться все те элементы, которые вы поместите на сцену. Каждый из этих элементов будет являться 3D объектом и иметь свое положение в пространстве вашей игры.
2 — Окно сцены (scene) и окно игры (game). Именно тут вы сможете рассмотреть создаваемое вами игровое пространство. Отличаются они тем, что по окну сцены вы можете свободно перемещаться и изменять вид (с этим сильно помогут стрелочки, что находятся прямо под моей дойкой). А в окне Game, вы видите игру так, как будет её видеть игрок.
Сейчас в этом окне у меня расположена сцена из стрелялки, сделанная в сеттинге "Марио". Я снимаю видео-уроки по её созданию. Да, квадратно, да не красиво. Это обучающий материал)

3 — Окно проекта (project). Тут будут располагаться все исходники нашего проекта. Это окно, по своему содержанию, полностью соответствует папке "Assets", в корневой директории вашего проекта. А это значит, что все новые файлы вы можете добавлять и туда, и туда.

4 — Инспектор (inspector). В этом окне отображаются все свойства выбранного элемента.
5 — Консоль (console). В этом окне будут отображаться все ошибки, а так же лог, если мы вдруг будем что-то в коде дебажить. Теоретически — это окно можно не держать открытым постоянно. Но я программист, поэтому этим окошком пользуюсь всегда.
Там же, во вкладках, у меня расположены окна анимаций (animator и animation). В этих окошках мы будем анимировать объекты. Но в этой серии уроков анимации мы не коснёмся.

6 — Кнопки воспроизведения проекта. Ражимаем "Play" и можем прямо в окошке "Game" поиграть в нашу игру.

На этом первый урок окончен. На следующем мы с вами подготовим исходники для проекта и соберём нашу сцену. Подписывайтесь, чтобы не пропустить! 😉

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.