====== Lab 1: Playing with Unity ====== {{:public:t-vien-15-3:lab1-image.png?500|}} ===== Goal ===== The goal of this lab is to simply get familiar with the basics of Unity through exploration. There are a few things that you should look into - listed below - but otherwise, you are free to make whatever you like. Sort of like playing in a sand box. ===== Preparation ===== You need to install Unity 3D on your own machine before you start. You get the latest version from the [[http://unity3d.com/unity/download|Unity 3D download page]]. ===== Procedure ===== - **The Unity Interface** The first thing to get familiar with is Unity's user interface. You can look up the purpose of each element on the screen in [[http://docs.unity3d.com/Documentation/Manual/LearningtheInterface.html|Unity's "Learning the Interface" documentation]] or by wathcing their [[http://unity3d.com/learn/tutorials/modules/beginner/editor/interface-overview|"Interface Overview" learning video]] (use headphones for watching videos! ;-) ) - **Make a Ground** When you start a new project, the only GameObjects you have are the ''MainCamera'', giving you a point of view into the environment you are constructing, and the ''DirectionalLight'', which illuminates all objects from a particular direction (the position of the light source does not matter, only its orientation). Now add a third object, which will serve as your ground. From the main menu select **GameObject->3D Object->Plane**, this will add a large flat object to the scene. If you now selct your ''Main Camera'' object from the Hierarchy panel, you may see from the little Camera Preview pop-up window that this ground is not visible due to the relative position of these two objects. You can place objects precisely in the world by adjusting the ''Position'' property of the object in the **Inspector** pane. From **Hierarchy** select ''Main Camera'' and then in the **Inspector** give the camera the position (0,1,-3) in the **Transform** component. Now select the ''Plane'' and give it the position (0,0,0). You should now be able to see the ground in the camera preview. Press the **Play** (in the play control panel above the scene) button to confirm that when you run your environment you will see the ground below you and the sky behind it. Press the **Play** button **again** to **stop** running the scene (there is no stop button!). - **The 3D Scene Interface** While you are developing it is very important to be able to navigate the 3D scene you are constructing and to be able to adjust the properties of objects (e.g. position) from within the scene itself. The quickest way to start navigating the scene is to press and hold the **right mouse button** and then use the familiar game control buttons **W, A, S, D** to move. But understand that you are simply moving the point of view of the developer in the world and not changing what the user sees when they enter the world - they will always be bound to a particular camera. Get familiar with this 3D navigation and how you can interactively manipulate game objects by reading [[http://docs.unity3d.com/Documentation/Manual/SceneView.html|Unity's "Scene View" documentation]] - **Add Lights and Objects** Select **GameObject->3D Object->Cube** and place the cube so that you can see it from the camera when you play the scene. Then select the ''Directional Light'' object you already have in the **Hierarchy** panel, and play with its orientation to see how that changes the way things look. You can switch between position (straight-arrows in a cross) and orientation (two round arrows) manipulation of objects in the tool-bar right above the **Hierarchy** panel. Bring in more objects, both lights and geometry, and experiment with their placement (manipulating them in the scene view) and properties (through the **Inspector** panel). - **Examine Shadows** Select your ''Directional light'' and change the ''Shadow Type'' property to ''Hard Shadows'' or ''No Shadows''. Feel free to play with other settings and choose something you are pleased with. - **Enable Walking** Select **Assets->Import Package->Characters** and press **Import** when the package browser window opens. From the **Project** panel, select the ''Assets->StandardAssets->Characters->FirstPersonCharacters->Prefabs'' and you should see that it contains two "pre fabricated" (Prefabs) character controllers. Drag the ''FPSController.prefab'' onto your plane in the **Scene** view (it will get added in that location and also appear in the **Hierarchy** view. You then have to position this object such that it is standing on top of your ground and facing your other objects. When you press **Play** you can now walk around your environment in first person. - **Add Physics** You can easily add physical behavior, such as obeying the laws of gravity, to any object. Select an object in the **Hierarchy** and press the **Add Component** button in the **Inspector** view. From the menu that appears, select **Physics->RigidBody**. - **Add Materials** Import the **Prototyping** asset package. In the **Projects** view, click on the little filter icon immediately to the right of the search field. Select **Materials**. You should now see only materials on the right-hand side of the **Project** view. Find ''NavyGrid'' and drag it onto your plane in the **Scene** view. To adjust the scale of the texture, make sure the ''plane'' is selected, expand the ''NavyGrid'' material in the **Inspector** panel and change the ''tiling'' parameters under **Main Maps**. - **Add Audio** You can add the emission of audio as a behavior to any object. Select the emitting object in the **Hierarchy** view and press the **Add Component** button in the **Inspector** view. From the menu select **Audio->Audio Source**. Find audio clips in your **Project View** and drag them into the **Audio Clip** property of the **Audio Source** component you have just added. Bringing audio clips into your project from other places on your hard-drive is a simple matter of dragging them from your disk browser into the **Project** view (they will then get imported into the project). - **Play with Camera Effects** Import the **Effects** asset package. Press the little arrow next to the ''FPSController'' object in the **Hierarchy** to reveal the ''FirstPersonCharacter'' sub-object. Select it. Use the **Add Component** button in the **Inspector** view to add a new **Image Effect** below the ''Camera''. - **Register in the Unity Asset Store** For additional assets, including more models and materials, you can browse the Unity Asset store by selecting from the main menu **Window->Asset Store**. You will have to register there to actually download assets, but it is definitely worth it. After they are downloaded, you can press an **Import** button right there in the **Asset Store** to add the assets to your **Project** panel. - **Go wild** Make any kind of environment you wish. - **Building your Project** When you are done, you can build your project as an independent application that others can run. Select **File->Build Settings..**. Press the **Add Current** button to add your current scene to the list of built scenes. Choose your target platform in the **Platform** list (e.g. PC) and press **Build**. Provide a filename and pick a folder and press **Save**. You will end up with an EXE file you can run, but there will also be a folder with the same name at the same location that contains all the assets. Make sure to distribute that folder along with the EXE file if you wish to share it. ===== Handing In ===== There are two options for handing each lab in after completion: (1) Zip up the EXE file along with the data folder and upload into MySchool (make sure you just build the scene you were working on), or (2) take a screen shot and upload it into MySchool. MySchool will be open for upload until midnight on the same day as the lab. If you miss that deadline, you can email this (or a link) to the instructor.