Let's continue where we left off and build out the animator controller. So, back in Unity, I'm going to go into the animations folder, and I'm just going to create a new folder specifically for our animator. In this folder, let's create a new animator controller. Let's call it EllenController, and so we can immediately test as we go along. Let's select our EllenController and add in our animator into the controller slot. Let's make sure we remember to apply the Ellen rig avatar to the avatar slot. Now, we could open up the animator tab by double-clicking on the controller and the inspector. I'm going to dock the animator down here with the project so I could see the character and the animator at the same time. Let's go ahead and refer to our design document to see our first steps. So, we can see that we're only going to have a single base layer, and it should be set to have an IK pass. Let's quickly come into our base layer and go ahead and take the IK pass box. Now, we have a list of animator parameters that we need to add. I'm going to side off the Unity editor so I could see my parameters at the exact same time. I'm going to come over to the parameters tab and I'm just going to create these different parameters all in one go. These are tied to the script so we don't need to do anything special other than make sure that they're present in our animator, and that they transitioned properly as defined by the game design document. So, I'm going to start by creating the forward float. So, here's the float. I'm going call it Forward. Note that I'm taking care to make sure that I spell it and case it exactly the way that it appears on the design document. Create the next float for Turn. Next is a boolean and it's OnGround. Note the capital O and G. Next is another float which is Jump, and finally, another float for JumpLeg. So, I'm going to adjust this a little bit more, but I think keeping this side docked for now is going to be really helpful. So, we can see that the animator is comprised of two blend trees. One is called grounded and the other one is called airborne, and they're described here. So, let's start with the grounded blend tree, which contains seven animations and is a 2D Freeform Cartesian blend tree. So, over in Unity and the animator window, I'm going to right-click, choose create state, new from blend tree. I'm going to name this blend tree, grounded, and then I'm going to double-click on it to get into the blend tree itself. Over in the inspector, let's set the blend type to 2D Freeform Cartesian. Our parameters for this are going to be turn and forward. So, the first one is turn, forward is already set for us. Now, let's go ahead and create the seven motion fields that we know we're going to need. To make things a little bit easier, I'm also going to side dock the project view so I could see all of the animations as I work. I'm actually going to pull the project view over to this side just so the animations are a little bit closer. So, our first motion field is going to be for EllenIdle, and this is the animation that's going to be played when there is no inputs in either turn or forward. So basically, if the player isn't pressing any of the keys on their your keyboard. So, I'm going to go into the EllenIdle animation and drag an EllenIdle. I'm going to leave the positive x and y, which is turn and forward to zero, zero. Next is EllenWalkForward, and this is if there is a forward value of 0.5 and no turn value. Now, the way that the programmers designed our character controller script is Ellen will be running by default rather than walking. So, in order to see her walk, we're going to have to hold shift on the keyboard. So, let's go ahead and add in her run animation now. So, this is going to be EllenRunForward, and this is going to be a turn of zero and a forward of one. Next, let's add in run forward 45 right, and this is going to be set to one and one. So, if the player is holding, for example, W and A at the same time. Now, the next one is run forward 45 left. This is exactly the same as the right, however, it's a negative one on turn which will represent the left-side movement. So, negative one and one. Next is StandHalfTurnRight, and this is 0.5 and zero. So, this is if the player is just trying to turn the character entirely and isn't pushing forward at all. Then finally, StandHalfTurnLeft. Same story as the runs, so we have a negative 0.5 and a zero. So, this is the blend tree that we end with, and we can test this here and see how Ellen is transferring to her different animations. But let's go ahead and actually press play, and see how she does. So, we could see that without any input from the keyboard, she's just idling, which is great. Now, I'm going to press W on the keyboard to make her run forward. There she goes. Now, I'm going to press S to make her run back. You can see that she turned around and started running towards the camera, which is great. Let's have her run left, and then turn around and run right. So, this looks awesome. Her turns are really nice and snappy. She's running straight towards us. Let's hold shift and test her walking. So, she turns around and walks away confidently. She'll turn right back around and walk towards us. Let's do right and left, and this is perfect. There's no big hesitation. These all looks great. So, our grounded blend tree is now done. It's ready to go. Let's jump over and do the airborne blend tree, which is for when our character is jumping. So, I'm going to click back to the base layer, and I'm going to create a new blend tree. So, I'm going to rename this airborne. There we go. I'm going to double-click, and in our blend tree, again, this is a 2D Freeform Cartesian. So, let's set the blend type. The parameters for this one are Jump and JumpLeg. We have our three motion fields, let's add these in. The first one is EllenJumpGoesDown. I'm going to roll up these other animations just so it's easier to navigate. So, these are under EllenJump. So, EllenJumpGoesDown, specifically jump goes down too. Drag this in. The jump value is negative nine and the JumpLeg is zero. Next is jump goes up too as well. The jump value is five, JumpLeg value is zero. Then finally, the JumpPeak, EllenJumpPeak is last. The jump value is zero. Now, let's quickly get in these animation speeds. So, that's 0.5, 0.1, and 0.4. So, just like before, we want to test this. However, back in the base layer, we can see that while grounded is set to default, airborne is not. So, currently, we have no way to test and see if our airborne blend tree is working. So, let's go ahead and set up the transitions from grounded to airborne so we could actually do that. So, I'm going to scroll down to transitions in our design document. We can see that the ground blend tree transitions to airborne when OnGround bool is set to false. So, I'm going right-click on grounded, make a transition to airborne, and set this transition condition to OnGround set to false. Then the airborne blend tree transitions back to grounded when OnGround bool is set to true and the JumpFloat is less than negative two. So, airborne transitions to grounded. The conditions is OnGround is set to true and jump is less than negative two. So, let's give this a try. I'm going to press play. So, we could still move around. Now, let's go ahead and press the space button, and it's not working. So, let's take a look and figure out what's going on. There we go. So, what was happening is that while I set the conditions, I accidentally forgot to take off Has Exit Time, which means that all of our animations had to flow through before getting to the jump animations, but by the time that happened, the OnGround bool was set to false again. So, we need to do the same for the transition back to grounded. So, let's uncheck Has Exit Time. Now, let's give this a try. She jumps and she lands. There we go. So, she's looking a little bit floaty, but I think that's because of the amount that she's jumping. Let's actually come back and let's increase it by a couple. Give this a try, and there we go. So, now she jumps up and comes back down to the ground. Now, our Character Controller is set up and ready to go. We can move her around. So, the last thing that we want to do is make sure that we update that Prefab. So, I'm going to get out of play mode, then go to the EllenController and hit apply. So, now all these changes are saved and we're ready to move on to the camera.