SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs...

Post on 31-Dec-2015

213 views 0 download

Transcript of SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs...

1

SE 320 – Introduction to Game Development

Lecture 8: Animations, GUIs, Debugging and IDEs

Lecturer: Gazihan Alankuş

Please look at the last two slides for assignments (marked with TODO)

2

Topics Today

• Animations– Sources – Scripting

• GUIs– GUIText and GUITexture– OnGUI magic

• Debugging– Really debugging with breakpoints in MonoDevelop– Making the game pause before the next Update with

Debug.Break()• Visual Studio and ReSharper

3

Animations• Why do we need them?

– Setting position/rotation in the Update() function can be limiting– Sometimes you want to visually design how things will move

• What are they?– Some motion information in a component called Animation

• Where do they come from?– Create visually in Unity

• Unity Window->Animation

– Create in modeling/animation tools• Blender, 3DS Max, Maya, etc.

• How can we use them?– In code, you tell Unity which animation to start

• The “activate trigger” script is an example

4

Update() vs. Animations

• In Update(), you can animate objects by setting their properties in code (location, rotation, scale, etc.)– Pros

• Your calculations can be advanced (procedural animations, etc.)• Motions can depend on user input or other events in the game

– Cons• For simple motions it can be too much work

– E.g., a platform that does the same motion over and over

• It can be difficult to adjust the motion so that it is – visually pleasing– exactly how you want it to be

5

Update() vs. Animations

• With animations, you can visually design how things will move– Pros

• It’s easier to make things move how exactly you want them to

• It’s easy to adjust speeds throughout the motion, implement curved motions and make motions visually pleasing

– Cons• Static motions, cannot react to user input or other events

in the game (blending, switching, mixing can help)

6

Animations in Unity

• You record the motion• You start playing that motion in game

7

Animations in Unity

• You record the motion• You start playing that motion in game

8

Recording Animations in Unity

• Window -> Animation opens the Animation pane

• Add an animation component to the game object you want to animate (or let Unity do it for you while recording)

9

The Animation Panetimeline (can drag with mouse)curve for z (position in time)

keyframes (pinned values in time)

record, play, etc.

other objects in your scene

10

Keyframe Animation

• “I want the bus to be at this bus stop at 7:40, then I want it to be at this other bus stop at 7:45”– The bus driver does whatever is necessary to obey

this. • You say “I want my cube to be here at time 0, I

want it to be there at time 5, I want it to be there at time 8”– Unity calculates the motion that is necessary to make

it happen

11

Example

12

How to Create a Keyframe Animation

1. Select the object you want to animate2. Open the animation pane and press record (top-left

corner)3. Make your object how you want it at the beginning of the

animation4. Drag to a future time5. Move/rotate/scale the object to how you want it at this

time6. Repeat 4-5 until you are done.

• Any time, you can drag time or press play to review the current state of the animation

13

Some Details

• Pressing the record button – automatically adds an animation component if the object

does not have one already– adds a new animation file if there was not one already in

the animation component• You can have many animations for an object – In code you can play any of them, blend between them, etc.

• Practice with the animation pane to find alternative ways of doing things (adding keyframes manually, dragging keyframes, etc.)

14

Animations in Unity

• You record the motion• You start playing that motion in game

15

How to Play Animations

• Automatically (easiest)– When “Play Automatically” is

checked, Unity will play the animation in the “Animation” property.

• From code– animation.Play(“animationName");– animation.CrossFade(“animationName2");– Read the entry for the Animation class in the scripting

reference• Can change speed, stop, mix, etc.

16

Animations vs. Update()

• Animations are static but easy, you tell them to play and they play for many frames

• Changing position in every Update() call is messy

• Is there anything in between?– Yes! Tweening.• GoKit: https://github.com/prime31/GoKit

http://forum.unity3d.com/threads/133823-Prime31-GoKit-Tween-Library-Live

17

GoKit

• Tell Unity to move an object to a certain point in four seconds, without having to do it in the Update() function– transform.positionTo(4f, new Vector3(10, 10, 10 ));

• Many options to make it prettier. Look at the wiki– https://github.com/prime31/GoKit/wiki

18

Topics Today

• Animations– Sources – Scripting

• GUIs– GUIText and GUITexture– OnGUI magic

• Debugging– Really debugging with breakpoints in MonoDevelop– Making the game pause before the next Update with

Debug.Break()• Visual Studio and ReSharper

19

GUIs

• Display scores, lives, etc. Any kind of textual or image-based output on the screen.

• GUIText and GUITexture– Add them through Game Object -> Create Other.• Can be difficult to make them work otherwise.

– Call their functions to do whatever you want to do with them • guiText.text = newScore + “ points”; //for example

20

More Complex GUIs

• OnGUI() function of MonoBehavior– This is not the kind of functions you are used to!– Unity does unusual things with it. You have to read the

documentation carefully.• Calls it every frame but creates only in the beginning

void OnGUI () { if (GUI.Button(new Rect (10,10,150,100), "I am a button")) {

print ("You clicked the button!"); }

}

21

GUIs

• You can use buttons for input (menus, etc.)• You can use text and images for output.

22

Topics Today

• Animations– Sources – Scripting

• GUIs– GUIText and GUITexture– OnGUI magic

• Debugging– Really debugging with breakpoints in MonoDevelop– Making the game pause before the next Update with

Debug.Break()• Visual Studio and ReSharper

23

Debugging

• Debug.LogError• Debug.LogWarning– These let you display messages that won’t get lost in

many others• Debug.DrawRay()• Debug.DrawLine()– These let you draw things in the scene view to see what

exactly is going on in the game• Debug.Break()– This lets you make Unity pause itself after this frame

24

Debugging with MonoDevelop while Coding in Visual Studio at the Same Time

• Do this once after you created your Unity project– Edit->Preferences->External Tools is where you set the IDE that Unity will fire

• Select Visual Studio– Double-click a script, this will create the Visual Studio project

• Select MonoDevelop– Double-click a script, this will get the project in MonoDevelop’s recents

• Select Visual Studio again

– Close everyting• Do this at every run

– Run MonoDevelop without running Unity– Select the project that is already in the recent projects– Run->Debug

• This will run Unity

– Set a breakpoint in MonoDevelop and see how it stops at that breakpoint– Run Visual Studio by either

• running it from the start menu, • Or ensuring Edit->Preferences->External Tools is Visual Studio and double clicking on a script.

– This does not affect MonoDevelop2/10/2012

25

The BEST Development Environment for Unity Scripting that I Know of

• Visual Studio + Resharper for coding– I asked for a classroom license. I also sent an e-mail. Still

waiting. In the meantime go ahead and install the 30 day version.

• MonoDevelop for occasional line-by-line debugging (explained towards end of presentation)

• If you are using any other way, you would certainly develop a better game if you listen to me

• (If you disagree, talk to me before discarding my advice… I have worked on large projects.)

2/10/2012

26

No Homework!

• Good luck at the exam!