TechnologY In AcTIon™
Learn Unity3D Programming with UnityScript
Unity’s JavaScript for Beginners
Create exCiting Unity3D games with UnitysCript
Janine Suvak
For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them.
Contents at a Glance
About the Author ��������������������������������������������������������������������������������������������������������������xvii About the Technical Reviewer �������������������������������������������������������������������������������������������xix Acknowledgments�������������������������������������������������������������������������������������������������������������xxi Introduction���������������������������������������������������������������������������������������������������������������������xxiii
■Chapter 1: Getting Started with Unity��������������������������������������������������������������������������������1 ■Chapter 2: Game Programming 101 ��������������������������������������������������������������������������������27 ■Chapter 3: Making a Simple Scene����������������������������������������������������������������������������������61 ■Chapter 4: Using Scripts and the GameObject�����������������������������������������������������������������85 ■Chapter 5: Moving the GameObject�������������������������������������������������������������������������������109 ■Chapter 6: Starting with Coding Physics�����������������������������������������������������������������������157 ■Chapter 7: Using Advanced Physics Concepts ��������������������������������������������������������������187 ■Chapter 8: Particle Emitters and Special Effects�����������������������������������������������������������221 ■Chapter 9: Game Design and Logic—The Blueprint ������������������������������������������������������249 ■Chapter 10: Putting the Pieces Together and Building Your Game��������������������������������269 ■Chapter 11: Enhancing The User Experience: GUI and Sound����������������������������������������303
v
- vi
- Contents at a Glance
■Chapter 12: Optimizing Your Game��������������������������������������������������������������������������������337 ■Chapter 13: Where to Go from Here�������������������������������������������������������������������������������363
Index���������������������������������������������������������������������������������������������������������������������������������387
Introduction
If you have the desire to create video games but have no experience with programming or game development, this is the book for you. Unity is a powerful game development ecosystem for creating 2D and 3D games. With its basic but still powerful free version, Unity has blasted away the barriers to learning game development. While the Unity editor is visual and intuitive in nature, you will have to learn to script in order to complete your game. Not to fear—all you need is a computer, an Internet connection, and motivation. This book is written for the complete beginner in both game development and programming.
Scripting, programming, and coding are synonymous terms that all refer to the process of writing computer code to direct some portion of the game behavior. While it may seem a little daunting, as with any other endeavor you simply start at the beginning and learn one thing at a time. You can’t make a game without writing some code, but creating the code is only a part of the game development process. You’ll have just as much fun learning to find and use characters, animations, special effects, and other assets as you will writing code for directing their interaction within your game.
Unity Technologies, the maker of Unity3D, provides excellent support documentation that most often includes working sample code. When I was a beginner developer, whether in mobile apps or video games, I found that almost all of the documentation was just about as clear and useful as if it were written in hieroglyphics—pretty much incomprehensible. I was stuck in a hole where I needed documentation on how to use the documentation!
The purpose of this book is to bridge this initial gap—to give you a foundation in programming within the context of using Unity to make a simple game, while connecting what you are learning to the relevant information found in the documentation, and even to using some of the sample code. This book is meant as a launching pad: by the time you are through working on its examples, you should be able to confidently build on your newfound knowledge and skills with the many resources introduced to you throughout this book.
With that in mind, read the chapters in order. After an introduction to the basics of programming concepts and to the Unity editor in the first few chapters, the subsequent projects will begin building upon each other from one chapter to the next. To get the most out of this book, follow along and complete the projects step by step from scratch. The best way to learn and (just as important) retain what you are learning is by doing. Besides, it’s fun and definitely more satisfying to do it yourself.
xxiii
- xxiv
- Introduction
The game development industry is in constant motion, and with over half of all game developers using Unity, from individuals to large studios, you can bet that Unity Technologies is constantly pushing the envelope to provide better tools and game engine performance. In particular, during the time this book was written, several radical changes were made affecting animations, particle systems, and better assets for rapid prototyping. Any changes affecting the instructions in this book from Unity or elsewhere will be noted in the Errata section of the book’s Apress web page,
Sometimes it is helpful to have the finished project as a reference. You will be able to find the source code and finished projects for the examples in this book under the Source Code/Downloads tab of its Apress web page.
The best way to learn how to make games is by making games, so turn the page to get started!
Chapter
1
Getting Started with Unity
This is a great time to learn to develop games. Unity has emerged as one of the most popular game engines for game developers, and Unity Technologies continues to make dramatic changes to make Unity more accessible to indie developers. There are now more platforms to which Unity games can be ported (meaning it can be used on many devices), the Asset Store is available for centralized game resources, and Unity provides outstanding support that has expanded to include professional assessment and feedback for your game. There is even an entire new (at the time of writing) division that collaborates with developers and publishes games. Making games is an amazing experience and provides even more bragging rights than a high score or near-impossible headshot. Welcome to the fun!
By “games” the folks behind Unity also recognize the expanding field of “serious games”— simulations and other immersive, interactive experiences developed using Unity3D for a rising number of different industries and uses. From NASA’s Mars exploration and CliniSpace’s virtual medical training environments to CrossPlatform DeSign’s animated crime scene reconstructions and virtual industrial trainers, serious games are appearing in new venues at a rapid rate. If serious game development is the direction in which you want to go, I believe that Unity is the best tool for it and this book is the best place to get started.
This book assumes you have a computer and that you are familiar enough with using an Internet browser to download files—and that is all. If you have an interest in game development but no prior experience in Unity, programming, or digital art/content creation, you are in the right place. If you have some background in one or the other, you’ll find this book helpful for introducing you to Unity, programming, or Unity scripting.
You may have a game idea or want to help others bring theirs to life. The best games are those that provide the best user experience. The user experience comes from both the look and the feel of the game, which is another way of saying the graphics and the code. The graphics, or artwork, is vitally important for the obvious reason: this is what the user sees. It sets the mood and engages the user. The code is what is under the hood and is equally as important. The best graphics in the world cannot make up for a game that is slow, responds unexpectedly, doesn’t flow as the game advances, or simply crashes. Unity is a powerful, popular tool for game developers because it allows you to control and smoothly integrate both of these important aspects to create an enjoyable experience.
1
- 2
- CHAPTER 1: Getting Started with Unity
A common approach in beginners’ books is to walk the reader through creating a simple game, introducing and explaining its particular features along the way, and then to refer the reader to “the documentation.” Quite often the documentation reads like ancient hieroglyphics and is about as useful. As a beginner, I often found myself frustrated by this, and I wasn’t sure how to proceed beyond the context of the example game.
This book is intended to launch you into the world of game development. I would like you to learn how to use Unity while getting a solid foundation in scripting, particularly a familiarity with the pattern of programming. I’ll show you how to read the documentation and how it fits into this pattern so you can confidently use it to continue to build your skills and expand your knowledge for making bigger and better games after you complete this book.
The book’s companion web site is www.learn-unityscript.com, where you can ask questions and share your games—be sure and let me know about them! You can also reach me at [email protected]. You can find the source code for this book under the Source Code/Downloads tab on its page at www.apress.com.
What Is UnityScript?
UnityScript is a .NET-based dialect of JavaScript, so the syntax is similar to the popular web dialect of JavaScript. You will see it referred to as “UnityScript,” “JavaScript,” “Java Script,” and “Javascript” on the Unity web site and in the editor, but it is not same as JavaScript for web sites. For practical purposes, this means (1) code snippets of JavaScript found on Internet searches may not work if they weren’t written specifically for Unity, and (2) there is no speed or performance difference among C#, UnityScript, and Boo, all of which are supported by Unity.
Prerequisites
No programming, game development, or graphic art experience is required. Diving into game development is not for the faint of heart, but it is definitely fun and personally rewarding. You must enjoy learning—this is a rapidly advancing field, so there is always something new to learn, but this also means that it gets better and better over time, with more cool features for your games and improved tools with which to build them. I think developing games is as much fun as playing them, so I find the process is more like “leveling up” my skills.
Of course you must have a computer, as well as an Internet connection. At the time of this writing the current version of Unity is 4.3, and the system requirements for your computer are listed in Figure 1-1.
Figure 1-1. Unity System requirements
- CHAPTER 1: Getting Started with Unity
- 3
Meet Unity
First things first: The Unity web site is http://unity3D.com (see Figure 1-2).
Figure 1-2. Unity web site home page
You could spend days perusing the web site; the gallery of game demos and previews is especially fun. Don’t get lost in it yet, though—you have games of your own to create!
On the Unity home page you’ll see the Asset Store in the top navigation bar. The Asset Store is just that—a store full of assets for everything you might need for your game, including animation, audio, and scripts, plus one of my favorite things: sales and daily discounts! It also has a number of free assets, some of which you will use later in this book as you learn more about how the Unity editor and the Asset Store are designed to interact with each other to facilitate your workflow. The more you work with Unity, the more you will appreciate how Unity is focused on helping you build great games—fast.
On the same navigation bar you’ll also see “Community.” The Unity community is made up of the hundreds of thousands of people like you who love games so much they want to make them. This is a great place to meet and get help from like-minded people, and before you know it you’ll be helping others along as well. When you click into this area, you’ll see that there is a forum, sections for answers and feedback, and much more (see Figure 1-3).
- 4
- CHAPTER 1: Getting Started with Unity
Figure 1-3. Unity Community
In addition to video tutorials, the “Learn” section is where you will find the documentation: the Unity User Manual, the Component Reference, and the Scripting Reference (see Figure 1-4).
- CHAPTER 1: Getting Started with Unity
- 5
Figure 1-4. Additional learning resources for Unity
It is impossible to memorize the vast capabilities of a powerful development tool like Unity, and the folks at Unity are constantly improving it and adding new features and capabilities. As you follow the examples in this book, you will become familiar with these resources and comfortable with consulting them throughout the game development process.
Go ahead and select Documentation in the blue top submenu of the Learn tab (see Figure 1-5).
Figure 1-5. Accessing the Learn section of the Unity web site
- 6
- CHAPTER 1: Getting Started with Unity
Now click the “View User Manual” button, which you’ll see on the page that has loaded (Figure 1-6).
Figure 1-6. Unity Documentation resources
Under the welcome, scroll down to User Guide ➤ Unity Basics, and click Unity Hotkeys (see Figure 1-7).
Figure 1-7. Unity Hotkeys topic in the User Manual
Here you can download a PDF of common Unity keyboard shortcuts for PC or Mac. You’ll find this quite helpful to have handy as you become familiar with the Unity editor. You can see what it looks like in Figure 1-8.
- CHAPTER 1: Getting Started with Unity
- 7
Figure 1-8. Unity Hotkeys printable quick reference
Tip When using hotkeys as they are mentioned in this book, the + symbol means to hold the first key down before pressing the second. For the Mac, ⌘+X means hold the ⌘ key down, then press the X key. For the PC, Ctrl+X means hold the Control key down, then press the X key.
Setting Up the Development Environment
Now it’s time to set up your development environment so it’s ready to make some games. Go back to the main Unity home page and select Download on the right side of the top menu bar (see Figure 1-9).
- 8
- CHAPTER 1: Getting Started with Unity
Figure 1-9. The Download tab on the Unity site home page
Click the big blue button that says “Download Unity 4.3” (Figure 1-10). It will take a few minutes to download.
Figure 1-10. Download the latest version of Unity
- CHAPTER 1: Getting Started with Unity
- 9
Note The version of Unity that is shown on the site may be later if you bought this book after they have updated the software. If you have any questions, head on over to the companion web site for this book at
Double-click on unity-4.3 in your operating system’s Downloads folder (or wherever you chose to save it) to open it. Now double-click on the Unity icon in the Unity Installer window that opened up (Figure 1-11).
Figure 1-11. Unity icon in the Unity Installer window
Click Continue in the Install Unity pop-up window, and select Continue to proceed past the welcome to the Unity License terms. Choose Agree in the pop-up menu (after carefully reading all the terms and conditions, of course).
Unless you have a strong preference otherwise, let Unity use the default destination for installation. Click Install; for now let the wizard perform a standard installation without customizing or changing the install location. Depending on your computer’s security settings, you may have to enter a password to allow the installation. Then click Install Software. It will take a few minutes for the actual installation.
You’ll get a message in the Install Unity window confirming a successful installation. You can close this window by clicking the Close button. Now you can also close the Unity Installer window.
- 10
- CHAPTER 1: Getting Started with Unity
At this point a Finder window will open, displaying Unity within the Applications folder. You can drag both the Unity and MonoDevelop icons to the Dock for easy access (Figure 1-12).
Figure 1-12. The Unity package
Double-click on the Unity icon; a pop-up window for activating the Unity license will appear. Select the checkbox labeled “Activate the free version of Unity” then click the OK button (Figure 1-13).
- CHAPTER 1: Getting Started with Unity
- 11
Figure 1-13. Unity license activation
The next step is to create your Unity account (Figure 1-14). You’ll also use this for the Unity Asset Store and community forums. I recommend getting the monthly newsletter for staying on top of what’s new with Unity.
- 12
- CHAPTER 1: Getting Started with Unity
Figure 1-14. Create a Unity account
After you have created your account, a friendly thank-you appears. Click the big blue “Start using Unity” button (Figure 1-15).
- CHAPTER 1: Getting Started with Unity
- 13
Figure 1-15. Finish with Unity package download and account creation
The “Welcome To Unity” screen will appear on top of the Unity editor interface screen (Figure 1-16). The welcome screen contains links to the various topics on the Unity3D web site that you just went over. This window will appear every time you start the editor unless you uncheck the Show at Startup box found in the bottom right corner.
- 14
- CHAPTER 1: Getting Started with Unity
Figure 1-16. Unity welcome window
The Welcome Screen and these links are also easily accessible to you with the Help menu, so you can uncheck Show at Startup to skip this window (Figure 1-17), then close it to see the Unity editor (Figure 1-18).
- CHAPTER 1: Getting Started with Unity
- 15
Figure 1-17. Unity welcome window accessible from the Unity editor Help menu
Figure 1-18. The Unity editor interface
- 16
- CHAPTER 1: Getting Started with Unity
Getting Started with AngryBots
You probably wouldn’t be interested in game development if you didn’t like games, so you can guess the best part—playing! Meet AngryBots, the demo that comes with Unity. Top and center of the Unity editor you will see the play button (Figure 1-19).
Figure 1-19. Unity editor Playmode controls
Hit the play button to start the AngryBots game. Use the arrow keys or ASDW keys to move, shoot with the left mouse button, and use the mouse to look around. Go ahead and have a little fun, then click on the play button again to quit the game. The pause button is to the right of the play button, and the button to its right is used in testing to step forward through the game.
AngryBots is also great for demonstrating the views that make up the Unity editor interface. The interface is the window where you interact with the Unity editor. It is made up of a number of views that can be configured by using the Layout drop-down menu in the upper right of the toolbar. You can also resize and drag the various views around by their tabs to customize the layout, or have a view become its own window by dragging it out of the editor window area. You can always return to the basic layout by choosing Revert Factory Settings in the Layout drop-down menu. The Layers drop-down menu is useful for hiding and showing different content when your games get more complex (Figure 1-20).
Figure 1-20. Layers and Layout drop-down menu controls
In the upper left corner, you’ll see the buttons for four tools: Pan, Move, Rotate and Scale (Figure 1-21). These can also be selected with the Q, W, E and R keys as listed in the Tools table on the Unity Hotkeys cheat sheet.
Figure 1-21. Pan, Move, Rotate, and Scale tool selectors
To the immediate right of these tools are a couple of toggles that also have corresponding hotkeys you’ll find on the hotkey list you downloaded earlier: Z for the Pivot Mode toggle that switches between local space and world space, and X for the Pivot Rotation toggle that switches between center or pivot-point rotation (Figure 1-22). You’ll learn more about these technical details later; this is just an introduction to what you see on the editor.