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

26
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 1

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

Page 1: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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)

Page 2: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 3: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 4: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 5: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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)

Page 6: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

6

Animations in Unity

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

Page 7: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

7

Animations in Unity

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

Page 8: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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)

Page 9: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 10: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 11: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

11

Example

Page 12: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 13: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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.)

Page 14: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

14

Animations in Unity

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

Page 15: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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.

Page 16: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 17: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 18: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 19: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 20: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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!"); }

}

Page 21: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

21

GUIs

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

Page 22: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 23: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 24: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 25: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

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

Page 26: SE 320 – Introduction to Game Development Lecture 8: Animations, GUIs, Debugging and IDEs Lecturer: Gazihan Alankuş Please look at the last two slides.

26

No Homework!

• Good luck at the exam!