in this series you will learn everything needed to create bone arrow mechanics just like [Music] these all right to create all of this from scratch I will teach you a lot of things both beginner and intermediate level including blending animations and creating aim offsets creating Dynamic Crosshair widgets shooting Arrows with physics Collision calculating the arrows path trajectory Visual and sound effects for different actions and so much more the full project files will be available to download on my patreon uh including all of the assets that I will be using such as the bow mesh animations Visual and sound effects and so on and of course all of the tutorials that I've ever made will be available as well to download in this part we are going to be setting up our player we're going to be equipping the bow we're going to have specific bow animations and a Locomotion blend space and we're going to be setting up an aim camera that also modifies the characters movement controls and we are going to do all of this in very modular way I'm going to show show you how to set up the blend space from scratch as well as how to create an actor component which will house all of our bow mechanics so let's get started all right so I'm starting off with the third person template here and usually when creating any new project I like to begin with the three C's which is character controls and camera so let's first start by creating our player character now since this is the third person template we have the default uh third person character uh but I will be copying that and creating our own player from it so opening up our third person Blueprints and here our third person character I'm just going to copy it and paste it and call it BP player and I already have a player folder here that I created and just to um yeah I have animations that I will show you in a bit uh but yeah create a player folder and let's move this uh player character that we just created into it um and also to Right Now the default third person character is the default Pawn so we have to change that to be our player character and we do that in the third person game mode so we open up this third person game mode and just under default Pawn class here select the BP player we just created all right so now if you play Nothing should be different but now we are controlling our uh BP player blueprints now to make make our player uh character a bit unique I'm just going to change the uh color of the mesh um so over here where we have the default materials I already created two um instances of these materials to make them red uh you can do that just by uh changing the tint uh so if you go over to the material click on tint and then you can just really change it to any color you want um and let me just undo this so I've already created um two red ones so I'm going to use them here so use the red so now we have a more unique looking player character all right now that we finished the first C which is character uh now let's look at controls um for controls mostly everything will be in the character movement component and we're going to be uh adjusting some of these things as we move along but I want to explain uh a few of the most important things um that are overridden by the default mannequin so if you go here and search for rotation um these two are very important uh use controller desired rotation and Orient rotation to movement so you Orient rotation to movement basically means that wherever uh the camera is pointing so right now I'm I'm just pressing W on the keyboard and moving the the mouse so the character moves to where the camera is moving and that's Orient rotation to movement if I turn this off look what happens now I'm pressing W and the character is strafing and we don't have strafe animation so that looks very weird um and uh also um so we're going to keep this as um Oriental rotation to movement when we're not holding a bow when we're not aiming but when we aim we're going to change this and I'll show you in a bit and use controller side rotation uh does exactly that so if I am moving my camera here the player still follows the rotation but if I'm now moving left and right the player is still facing forward because the camera is facing forward whereas if I disable this and I move left and right then the player moves to the left and right all right we're going to touch on controls later on uh but for now I want to talk about animations um so the um default mesh now is using the ab Quinn um which is a child of ABP Manny but I want to create our own animation blueprint uh but I will start off with this one so we have this uh animation blueprint for Manny I'm just going to copy and paste it I'm going to call this ABP player and I'm going to move it to the animations folder of the player yeah so we have player here and animations and we're going to select it in the anim class so search for a DP player and select it um so the animations that I'll be using for now um I'm going to of course be adding more animations and showing you uh how they look like uh but the animations now are these um movement or Locomotion animations for moving forward back left and right with a bow and these animations I all got from U mixo and of course mixo animations are free to use but I just retargeted them to the unreal mannequin to be able to use them on the ue5 skeleton all right now let's open up our animation blueprint and let's see what we're working with um so for the animation blueprint um the default again uh AP Manu which we copied uh sets some variables for us to use uh ground speed a should move or shouldn't move based on how much the ground speed is and whether they're falling means jumping or in the air uh and we're going to use these variables and we're going to add a few more um but also let's look at the anim graph so the anom graph has a um Locomotion State uh which has idle and walking or running which is this blend space um but we will be creating our own blend space from the animations that I showed you and we'll also be getting rid of the um uh this uh idle State because we're going to add the idle animations in our blend space so let me show you how we are going to create this blend space all right so in our animations folder here I'm going to right click and search for blend space now you're going to have blend space 1D and just blend space uh the blend space 2D means you have two variables that uh control the blend and I'm going to select the SK mannequin uh and call it blend space bow Locomotion now we're doing a 2d blend space because we want to blend animations based on two variables and those two variables are the speed at which the player is moving so if they're idle their speed is zero then we do the idle animation and if they are um full speed then we do the walk or run animation and that's one variable the other variable is Direction so since we're going to be doing a strafing animation so there is moving left moving right uh as well as um forward and back and that's going to depend on the direction the player is facing and these two variables are going to be our axes here on the blend space so we have a horizontal and vertical axis so the horizontal axis is going to be our Direction and the direction has a value from - 180 to 180 because then you a 360° turn and we're going to keep the grid division at four and for the vertical axis we're going to call it speed and that's just going to have a minimum value of zero which is idle and maximum value of 500 which is running at full speed and then this gives us you see the names of the axis here and it divides the um uh the grid for us so I'm going to search for my bow animations here and show you how we're going to add them so first of all on the um uh horizontal axis where the speed is zero regardless of direction we're always going to use the idle animation because you're just standing still and doesn't matter where you're looking so I'm going to call I'm going to just move all of these on the four grid points so here I'm using the idle animation with the bow held in hand all right and now um when the direction is um zero or like facing straight forward and the speed is full then we want to use the uh run forward animation so I'm going to pull this and hold it here by the way if you hold shift while you're moving um an animation it snaps to points on the grid if you're not holding shifts then it's wherever your mouse is so I'm holding shift because I want it to snap to this point here so now you see that um if I hold control and I move around the graph it's going to show me the blend between the animations so here at zero I'm idle uh at full speed I'm walking forward and somewhere in the middle I'm walking slowly now we're going to do this for left and right as well so left is right here where direction is 90 and right is right here where direction is 90 and then Direction 180 and negative 180 that's uh the moving backwards so here for direction 180 and - 180 backwards so now we have a blend space that blends between uh these animations uh based on the uh direction and speed of our character now you can have multiple right now I have only full speed and idle but you can also have run walk jog Sprint as many animations you want along these uh these grids to make it if you have variable speeds but for me uh I only have one speed you're either standing still or you're running at full speed um this is of course more relevant when you have a controller and the speed is uh variable based on how uh much you press the analog stick on the controller all right so how do we use this blend space that we just created well back here in our AP player I told you we're going to get rid of the idle state so we don't need that but we're going to keep our walk run State and we're just going to whoops and we're just going to replace this blend space with a one that we created here so we're going to search for our blend space bow Locomotion and we are just going to add it here now we need the two variables that we mentioned on the graph the speed and the direction now speed we have but direction we need to calculate and that we're going to do also here in the event graph all right so to calculate direction we're going to use a function called calculate Direction now this function takes a velocity and rotation and then gives you you a direction now the velocity we've already have here is a variable calculated so we're just going to use it here velocity and the base rotation we're going to get from our character so again character we have as a uh variable here which is just our um uh owning actor cast to character so we are going to get this character variable and get the actor rotation from that all right and that gives us uh Direction so we're going to right click promote this to variable and call it Direction and we are going to do all of this we're going to add a new PIN here on this sequence and do it here and maybe we can also comment this and say Direction all right so now if I go back to my walk run State I have a direction variable that I can plug in perfect so let's play and see what this looks like so now I'm idle I'm doing the idle animation and I'm moving I am doing the uh move forward animation but of course as I mentioned in our uh character movement I have uh Orient rotation to movement which means I'm only ever going to be moving forward even if I'm looking right the character moves right so I'm always doing the forward animation I'm not strafing now if I go back now because we allow strafing since we have this direction variable in our blend space uh I can say go back to my rotation here and say use controller desired rotation instead of Orient rotation to movement so I'll check this and not this one and now you can see that we have strafe animations and now the left and right are working well um and depending on your animation you're going to want to modify the speed on your blend space so right now I have this set to 500 um I think it works well for this animation 500 maybe I would want to decrease it bit but yeah I'm not going to be too picky with how well it looks uh I think this is looks pretty fine um for now I'm going to revert this so I want Orient rotation to movement to be the default and only switch it when we are aiming the bow and we will get to that um in a bit but for now uh the next step is actually equipping and showing you the bow mesh that we'll be using so I already have a folder here called bow and it has a skeletal mesh for the bow all right so the bow I have here I modeled myself in blender and you'll see that it's a skeletal mesh that means it has uh bones and that's because it's also animated so I also have an animation for drawing the bow that I also made in blender and uh we're going to be using these animations as we aim and uh and and draw the bow uh of course if you want this specific bow with these animations you can get it on my patreon but you can also follow along with any uh bow or animations that you already have uh or you can also create your own um but first let's see how we're going to attach the bow to our mesh now to do that uh we can go to our player and see what mesh we're using here we're using skm Quin simple I'm just going to double click that and we want to get a reference pose so I'm going to say use specific animation sry not reference pose um and let's say we're going to do the uh bow aim animation and we're going to also talk about this animation in a bit um but I'm going to just use this as a reference to where the bow should be placed now I of course want the bow to be placed in the left hand here based on this animation so I'm going to look for my handore L I'm going to right click and I'm going to create a new socket uh where is create socket oh add socket and I'm just going to rename this socket to bore socket and I'm going to right click on this new socket and add a preview asset which will be my bow mesh here just so I can preview it in this window this is just a preview it doesn't actually change the character in game there is no bow yet uh we have to still spawn this uh but we can now um move this socket to the right place rotate it until we're happy with the uh positioning now I already did this before so I know what these numbers will be so I'm just going to plug them in all right so I just plugged in the numbers and this looks pretty good um so of course you can keep playing around with this until you find the uh uh right transform for your socket um but as I mentioned this doesn't spawn the bow yet and attach to the player so we still need to do that in our BP player but to be able to spawn something we need an actor for it so let's create this actor so in our bow folder I'm going to right click create a new blueprint class of type actor and call it BP bow open it up and we're going to add one component which is a skeletal mesh call it the bow mesh and over here on the right for the skeletal mesh asset I'm going to search for my skm bow um we're going to be adding an animation blueprint for the bow as well to animate it but I'm not going to do that right now uh for now let's spawn the bow and see what it looks like um in our hand so uh back here in our player um I'm going to show you uh the attachment uh in the player but this won't be the place where we're going to do it moving forward and I'm going to explain why in just a second and what's the proper way of doing it uh but let's see how we spawn and attach so let's say here on begin play um I can uh spawn actor from class and I can search for the BP bow that I just created um spawn transform doesn't matter because we're going to attach it to the player but this has to have a variable so I'm just going to say make transform so just give it a random variable or just a zero um you can also just right click and split um this also gives it all zeros so you can also do that and then um this bow uh we're going to attach it to component so attach actor to component and the component here is our mesh so it's this mesh and now we just need a socket name which is the socket we just created on our left hand called bore socket and the rules here are very important this is what to do when you attach it attach the bow to the mesh and what we want to do is snap to Target that means take the value of the um the socket so take the location rotation and scale of the socket and use that for the bow so if we play now the character is holding a bow in hand and very nice and the bow animations look perfect but as I mentioned uh this won't be the place where we do it I don't want I want all of the bow mechanics to be in a separate actor component um for example this character movement is an actor component and can be applied to any character I want to create our own custom bow mechanics actor component so that this system that we build is very modular and you can take this actor component and place it it in any project you want on any character you want and also to separate the logic of our player from the logic of our bow you don't want these to be too intertwined or dependent on each other um so let's see how we're going to do that I'm going to open up my bow folder again I'm going to right click here and create a blueprint and I'm going to create a blueprint of type actor component if you don't see it here just open all classes and search for actor components and I'm going to call this um AC for actor component underscore bow mechanics all right so now when we have our actor component uh we just need to add it to our player and you do it here in the components tab so add uh our AC bow mechanics great so now we have character movement which is an actor component as well as our bow mechanics that we just created um and we're going to move this functionality of equipping the bow to our actor component so I'm going to cut this out open up our AC bone mechanics and I'm going to create a new function just to keep things a bit tidy and call this equip bat and I'm going to paste these two things that we copied now you'll notice that um there are a few things that the player knows that this actor component doesn't which is this mesh there is no variable for mesh here um the bow socket um maybe we want this to be variable and the class of the bow that we're spawning maybe we also want this to be a variable so that we can equip any bow into any socket on any character so uh how do we make these variables and where do we actually plug the values in now I can make these variables on the um function itself this equipo function uh but I don't want them to be uh part of just the function I want them to be part of the entire um actor component so I'm not going to do that I'm going to undo that I'm just going to create them as variables here so I'm going to create one variable um call it our bow class and this is going to be of type BP bow but make sure it's class reference so that means that um we can have multiple Children of the bow class so you can have maybe wooden bow uh metal bow whatever and then the class name that you pass here is the one that will be spawned um so then I can just take this variable and plug it here and the socket as well we want this to be a uh variable so I'm going to create another variable here call it the bow socket name and this is going to be of type name so we can just plug this here as well now what's left is the mesh now the mesh I'm not going to make a variable because we can already get the mesh uh from within the actor component without having to pass anything and let me show you what I mean so back in our event graph um on begin play I'm going delete the tick for now on begin play I'm going to get uh something called an owner so right click and search for get owner now you'll see this it's under the components tab because any component has an owner and this means that this is the actor that uh the actor component is applied to so for our case here the owner will be the BP player so I'm just going to get the owner and I'm going to cast it to I could cast to our BP player but this means that this actor component will now only work with uh classes of type BP player so I'm not going to cast it to player instead I'm going to cast it to character this means that this can work with any character and the reason I'm casting at all in the first place is because the character has a mesh on it so all um classes of type character have a mesh that I can get just like this and I'm going to need this mesh to spawn the uh to attach the bow to it so I'm just going to cast to character on begin play and promote this to a very and call it our character ref so just a reference to our character uh of course before the cast it was an actor and an actor doesn't have a mesh I can't get a mesh on any actor so back in our equip bow here our parent will be our character ref that we just created oh sorry our character ref get mesh that we just created yep all right so now if I go back to my uh event graph I can call equip B here on begin play equip bow um but this is going to give me an error it's not going to work um so if I play there is no bow and I have an error um and the reason why I'm having an error is because we actually didn't set the uh values for bow class and for uh bow socket name and we're not going to set them here because of course now I'm in the uh actor component itself we want the person using the actor component or the class using the a component to set these variables so back in our player here just like we set certain values on our character movement we're going to click on our AC bow mechanics and set our values here as well so for b class we're going to click the only class that we have and socket name we're going to select bore socket because we know for this player for this mesh that's the name of the socket that we created now if I play we have a bow perfect and this um now everything that we do related to the bow will be inside um this AC bow mechanics and we'll be communicating between the player and the bow mechanics through variables and potentially events as well all right so our character now is looking pretty good uh we talked about animations we touched on controls a bit um but we still haven't discussed camera at all or the bow controls so let's start discussing the aim state so so I want that when I hold right click I aim the bow and when I let go of right click I am not aiming the bow anymore so let's see how we can do that um so again anything related to the bow will be in our actor component our AC bow mechanics so to know if we're aiming or not I'm just going to create a single variable here called is aiming and that's going to be of type Boolean and I'm going to create two um custom events one one called aim begin and one called aim um end for now these two events will just set the um the is aiming variable so the aim begin sets it to true and the aim end sets it to false and now we want to set up the input action that will trigger um the uh aim State and as I mentioned I want it to be on right click and when you hold right click so let's see how we're going to do that um I'm going to be using the new um uh input actions from UE 5.1 um so that is uh somewhere in third person input and actions so we already have jump look and move these come by default uh in the third person blueprint I'm going to create a new input action here and I'm going to call it I aore aimo for example and let's open it up all right so the only thing we want to uh modify here is the trigger so I'm going to add a new trigger and I'm going to use hold and release and this is because I mentioned we want two events when we start pressing um and when we release uh the uh uh the right click button um so the hold time threshold this is um how long do you have to hold it for before it's triggered I'm going to set this to a very low number 0.1 because I want it almost as soon as you hold um then becomes triggered and the actuation threshold this just depends like if you're using a controller how um how much do you have to press the key before it actually um uh gets triggered 0.5 means halfway through if it's like a trigger button for example I'm going to leave that as is so now we want to use this uh input action um or before we use it actually we want to assign it to the right click button so we do this in uh this uh input mapping context uh so open up IMC default and you'll see that it has some mappings here the jump is space bar the move is W ASD and so on so there's a new we're going to add a new one so let me just collapse these we're going to add a new one for our uh aim bow and we're just going to have this be our uh right Mouse button so now when I press right Mouse button it triggers the aim bow input action that we just created and we want to now use it in our player so go over here in our player somewhere and search for I a bow aim and uh uh click on this one they one under uh well this first uh function and when you expand it you'll see that it has a lot of uh execution pins U triggered is actually when it's released uh as well as completed um so since it's a hold and release uh modify that we added then it gets triggered and completed at the same time so what we want is on start so as soon as we start pressing we want to enable the aim State and when it's completed we want to um end the aim state so we're going to get our AC mechanics here and call Aim begin on start and we are going to also call Aim end on completed um and that's pretty much pretty much it but of course now if you play nothing happens because we're just setting a Boolean variable but we're not really using it or doing anything with it so that's the next step so what do we actually want to happen when we aim well we want three things to happen first of all I mentioned we want um as you aim you want the um character to move where the camera is pointing uh so that means we want to use controll or desired rotation instead of Oriental rotation to movement um we also want to change the camera to zoom in a bit to have like an aim State and of course we want the character to be in an aim um animation pose um so let's start with the aim camera first all right so to preview our aim camera I'm going to actually get our player here so get our player and pop them in the world and the reason is because I want this preview camera so if I uh now click on my player uh you'll see that we have the camera that we would see in game um you can also pin it so that it doesn't move when you click on other things um but yeah doesn't really matter I'm always going to be clicked on the player for now so the two things for now that we want to modify for the camera uh when we aim is the field of view by default it's 90 when we aim we can make it something like 60 so you see that Zooms in as I decrease this value and the other thing is that the player is now in the center of the screen where you're actually aiming and you don't want that so I want to move the player a bit to the left and to do that I'm going to modify the camera booms and the camera boom is just this red line that's connects the player in the camera so I'm going to move the camera boom's um socket offset so let's say I'm going to move it 100 on the X um 75 on the Y and let's say 45 on the Z so then our player is a bit to the right and we're zoomed in and you can always use references from actual games on how they do this mechanics so personally for me I used Horizon uh zero Dawn uh when I saw that they have this positioning of the player in the same way and also um Tomb Raider uh had the same um sort of uh camera when you uh are holding a bow and aiming they do modify some more things and we're going to modify these things as well uh but for now this is going to be enough um so we just identified the values that we want to change uh but now we need to actually add them when we aim I can remove my player now again so in our um when we start to aim in our player character I'm not going to do this in AC bone mechanics because this is related to camera which is related to player I'm going to create two custom events um one called uh aim camera begin and another called aim camera end so on the begin uh I'm going to show you the what values we're going to set but then we're going to do it in a more smooth way so if I just set the Valu so if I get my follow camera here and say Set uh field of view to 60 let's actually promote this to a variable and call it the aim fov and that defaults to 60 and then when the aim camera ends uh we can set it back to 90 um or we call it the uh initial um fov now it's good to set the initial fov not um by default here we want to get that initial fov from our uh initial camera movement settings so on begin play we get our character movement sorry not our character movement get our camera um get our field of view and then this is going to be our initial fov that way if you change it later on in the uh camera so if I go to the camera and I change it here um then it's uh the variable itself changes as well um all right so now um when we start if I just call Aim camera begin and aim camera end and I play when I press right click you see that it snaps to the new fov right away and when I remove it stops but there is no smoothing we want it to be smooth uh and we want the same for the camera boom as well so let's let's see how the camera boom values will look uh we're going to get this and say set um socket offset and again this will be our we said 17545 and promote it to a variable as well call it call it the aim boom offset and when we stop we are also going to select this to a variable promote VAR variable and we're going to call it the initial boom offset but again like I mentioned the initial values should always come from uh the camera or the boom components themselves so we're going to get the socket offset and that will be our initial boom offset as well all right um so now let's again look at it the character is moving to the right place and we are zooming in but how do we do this smoothing for that we are going to use um a timeline and let me show you how timelines work so let me move this down here a bit and also these two let's move them here so I'm going to right click and say add timeline and we're going to call this the uh aim camera timeline now a timeline basically allows you to update certain values over time um and what we're going to do is we're going to double click this to open it up and we're going to create a track so we're going to add a float track because the values that the value want to update is a float and I'll show you why uh we're going to call this the um aim Alpha and Alpha just means to value between zero and one zero means we're not aiming one means we're fully aiming and anything in between it means we're smoothing towards full AIM now the length is how long this will take um usually we want this to be pretty quick um so let's say 0.25 seconds and now I'm going to write click here and add a uh a key at Time Zero the value is zero and at and right click add another key at time 0.25 which is the end the value is one so if I click these to fit the graph you'll see that it just goes from zero to one in 0.25 seconds um and this is just a linear um uh line you can also what you can do is uh select both these points right click and say Auto this will make it more of a smooth curve so it slows in the beginning then speeds up and then slows again towards the end that might seem a bit more natural so I'm going to do that now we just set up our timeline but how do we actually use it so when aim camera begins I will say play and when aim camera ends I will say reverse now I don't actually need to set these values again because they will already be reversed uh from the values that we set here so I only need to call it once um and on update this is going to happen pre periodically over time and the aim Alpha is going to keep going from zero to one so on update we want to do these things setting our field of view and setting our camera boom but we won't we don't want to jump right away to our aim fov and our aim boom offset we want to smooth again towards that value and to do that we use a node called lurp or linear interpolate so look for lurp float this takes in two values your initial value so our initial fov let me move this a bit and our Aim fov so it takes these two values the start and the finish and the alpha which is our value between 0 and one so at zero it will be initial at 1 it will be a fov and then anything in between it will be in between and that's going to be our field of view and we're going to do the same for the boom offset but this time we're going to lurp a vector so we're going to do linear interpolate for a vector and the B value is our aim offset and the a value is our initial boom offset and the alpha is the same one let me also do this here to be a bit cleaner all right so let's see how this works when I play right click yeah see now it's smooth and when I stop right clicking it just goes back and I didn't have to implement um a specific um I didn't have to say reverse these values I just put the pin towards reverse um I think it's going actually be a bit faster um depends on yeah what you want for me this is fine for now now the next thing we need to do is actually as I mentioned right now I'm aiming but when I move the camera the character is still facing wherever they're facing when you're aiming you want the mouse or the uh aim joystick to control where your character is facing otherwise you are going to aim here you're going to shoot here and the character is going to shoot somewhere else so um how we're going to do that so for this one I I was debating whether to put it in the BP player or whether to put it in the AC bone mechanics uh but I feel like the bow mechanics will be better because again the bow mechanics apply to any character um and a character always has character movement so anything related to the bow specific character movement I'm going to keep in the bow mechanics and this um uh sort of aim movement state is character movement related so on AIM begin and on AIM end we are going to modify these values what we're going to do is we have our character ref here we're going to get it and then we're going to get our character movement component now because uh every character has to have one then by default we will have this variable and as I mentioned um to have the camera sorry to have the mesh follow the camera then we need to use um uh we need to disable first Orient rotation to movement so this will be false and then we need to call use uh controller desired rotation not not get sorry we need to set set controller desired rotation and we're going to set that to true and when we stop aiming we're just going to revert these two so this will be true and this will be false all right let's see what this looks like now if I play right now I'm not aiming so I can look around my character but as soon as I press right click perfect now the character is always looking to the dire that I'm aiming uh one thing you might also want to modify is the rotation rate so right now if I move the camera really quick you see it takes time for the character to rotate and if you are trying to do like a fast-paced aiming game where where the camera is pointing you really want the character to always be pointing as well then you might want to increase this rotation rate uh to do that it's also on character movement so I'm going to pull off here and say set rotation rate and I just need to increase the Z value here here to something like a th000 and then when we're done we set rotation rate back to the initial value again it's good to promote these two variables so I'm going to promote this to a variable and call it the aim rotation rate and I'm going to promote this to a variable and call it the initial rotation rate and as I mentioned for any initial values and it's always to always good to get them from um their single source of Truth so again on begin play whoops on begin play I'm going to get the character movement I'm going to get the rotation rate and I'm going to use that to set the initial rotation rate all right so now when I'm aiming the rotation is a lot snappier uh the larger this value the more instant it will be and when I'm not aiming then this value is um well it's not going to really do anything because we don't really rotate with the camera and that's it for part one where we set up our three C's our character controls and camera and the next part we're going to be uh looking at the bow mechanics then we're going to be adding an aim state with both aim animations for our player and our bow and we're going to start looking at the Mechanics for spawning the bow and shooting the arrows and so on so I hope you enjoyed it and if you did please consider giving a like And subscribe uh as I mentioned the beginning all of the project files will be available to download through my patreon so if you want to follow along with my specific bow and arrow and animations you can get that uh on my patreon and of course you'd be supporting me and helping the channel so thank you and I'll see you in the next [Music] one [Music]