Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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 2

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 3

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 4

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

6 Animations in Unity You record the motion You start playing that motion in game 6

7 Animations in Unity You record the motion You start playing that motion in game 7

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

9 The Animation Pane 9 timeline (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 10

11 Example 11

12 How to Create a Keyframe Animation 1.Select the object you want to animate 2.Open the animation pane and press record (top-left corner) 3.Make your object how you want it at the beginning of the animation 4.Drag to a future time 5.Move/rotate/scale the object to how you want it at this time 6.Repeat 4-5 until you are done. Any time, you can drag time or press play to review the current state of the animation 12

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

14 Animations in Unity You record the motion You start playing that motion in game 14

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

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-Livehttps://github.com/prime31/GoKit http://forum.unity3d.com/threads/133823-Prime31- GoKit-Tween-Library-Live 16

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 https://github.com/prime31/GoKit/wiki 17

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 18

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 19

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

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

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 22

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 23

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 MonoDevelop 2/10/201224

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/201225

26 No Homework! Good luck at the exam! 26


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

Similar presentations


Ads by Google