2D Graphics, Sprites and Animation -- Godot 3 Tutorial Series

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello everybody's mic here came from scratch welcome back to our ongoing Godot 3 tutorial series today we're gonna start getting into a bit of the fun stuff specifically we're gonna talk about 2d graphics sprites atlases and animation so quite a bit to cover but hopefully it won't be too long of a chapter speaking of chapters there is also a work in progress or finished I guess depending on when you're watching this video a book that I'm developing on the exact same material if you're our patron backer right now this chapter is up and live there is also a chapter on Gd script programming and a video on Gd script programming coming very very soon so if you find the coding in this a little daunting don't worry there will be a video up any second now for GD script development so that should actually get you up to speed on that topic one other thing to talk about before I move on to too far is notifications on if you've been watching a lot of YouTube videos you're probably getting the same speech over and over again but apparently Google changed the algorithm behind the notification process and if you have not clicked that little bell icon apparently notifications doesn't mean what you think it does so if you can't just be subscribed to a station you have to be also subscribed from notifications to actually guaranteed to be notified when a new update come so if you want to be updated right away when I release a new chapter unfortunately you got to click that little bell as well annoying they'll change sorry to waste your time on that but sadly that's the state of things alright so anyways back to the tutorial series we are going to start things off with some sprite drawing now if you've never heard of it a sprite is basically a terminology for our piece of graphic does it move it actually started way back in the day Texas Instruments made a chip that handled sprites and this used to be the the bragging point for consoles and 8-bit computers basically they used to brag about how many sprites they can handle in hardware and so back then it used to be a thing now basically a sprite just means a graphic that moves so pretty much you've got a texture or part of a texture and you've got some coordinate information you put those together and you have a sprite and that's what we're going to talk about initially today but in order to pull that trick off we're gonna need some graphics and so that we can all work from the same page I sourced some great free graphics from the internet specifically I am using this night character free sprite available at game art to decom I will link this down below so you can obviously swap in whatever you want to use but this is where I'm getting the graphics from specifically we are using this guy right here as well as this guy which basically I took one of the walkie animations from the cycle and I smashed it all together using texture Packer this is something called a sprite atlas or a texture atlas we'll use in this example and then I also have a folder of frames like so that we are going I'm in their own folder yeah where did it go Oh anima there we go a folder of frames like this that we're also going to use in this particular animation so without further ado let's jump in if you want to follow on directly do go to that link like I said it will be down in the comments below I head on back over to the dough engine I've already got things set up so basically I created a world route I've saved our scene I said our scene as our run scene and we are ready to go now if you don't know how to do all that do be sure to check the earlier part of this tutorial I've walked through all of this stuff and each of these tutorials builds off the previous tutorials so I've done the stuff we've already covered now it's time to jump into the 2d world to do so just head on up over here make sure you are in 2d mode like in that now this little toolbar up here is also you can switch between these tabs quite easily using the hotkeys so you can also go to by hitting the f2 key you'll switch to 3d f1 back to 2d and f3 brings up help not what you'd expect but so f1 oops I'm missing so no f3 script to 3d f12 D F for help so asset live isn't what you would naturally expect but these three right here you can switch between using the F keys now once you're actually in this this is where your 2d editor comes in you'll notice something right off the hop you've got a couple of lines going on here so you've got this green line that's your y-axis this red line represents your x-axis so you'll notice here we're below on the x-axis and you've got this viewport here well that's actually a really important thing being shown this is where your graphics are ultimately going to be drawn this is the visible or viewable area we're not using a camera or anything in the scene so how does it know how to design that or to draw that well when you create a go scene there's actually a route above your entire scene heart hierarchy called route you'll notice it earlier when we did the the nodes tutorial that we did this get route while root is actually a viewport class so we bring in here to the scripts I'll show you quick coups run one glasses viewport so your root is one of these this is they the top-level character that holds all of your 2-d game so just do be aware that it's basically creating you a viewport into your world now how actually does it get its values well that by default well you can set it with code we're not going to do that in this particular case but instead what you probably want to do is go into your project settings like so and locate display right here window so there is your viewport settings right there so by default it is 1024 by 600 you can resize it it's got a border it's not full screen etc but if you want to switch those things out if you're on a high definition or high DPI display like on Apple retina in a mission display or HTTP I on Windows etc you can support it there and you can also tell it how it's going to handle various different aspect ratios well touch on this later on when we get into viewports and cameras etc but this will basically enable it to scale down to devices that don't actually support this resolution this is a virtualized resolution and this is how you deal with so if you're on like a samsung for example that might be 16 2 by 10 and your resolution is 6 by or 4 by 3 this tells it how to scale between the two things so this is where you do your settings once again that was in your project settings display window and that will also if you change that value this little viewport here or size will update to show you your new correspondingly sized viewport so again quickly to summarize there is a top-level node called route that is ultimately a viewport that is created for you automatically pretty powerful stuff actually and it makes to deal a lot easier to work with knowing the editor here you may notice I've been moving around at wimple you can do that with the scroll wheel zooms in and out you also can go here back to one to one you can plus or minus like so you can pan around I don't know why pans not working for me all of a sudden there we go once you're zoomed in enough you can pan around using the middle mouse button or by going into pan mode and then the left mouse button go back to the edit mode here so you've got your different selection modes here you've basically got select mode move mode and rotate mode those are also controlled by a series of hockey so you can come up here and deal with them that way or you can use Q W and E to switch between them that qwe gives a is from the Maya 3d package very common hotkeys for switching between selection moving and scaling or are rotating in this particular case so this is your level at the same time you've got the ability to turn a grid on and off like so and you can snap to that grid we won't cover that specifically so that's a quick crash course on the 2d editor now let's actually jump into dealing with sprites well first things first we're gonna need some graphics to actually work with so I'm going to just go ahead drop to my desktop we'll grab this night sprite and we drop it here and you'll see it was just automatically imported and you go up here to the import you can see the settings that it was imported as like so we don't need to change and the default settings from now but that is if you need to change them you can change them up there and click re-import another way you can bring files into here is simply by right-clicking it and showing it in file manager and you'll notice here it is simply a file system and we're actually gonna bring in the other files at the same time so we're gonna want to bring in that sheet and then this folder full of animation so I'm gonna show you the other way of bringing things in I just drag and drop them over so now we head on back over to the Godot and you'll see it is now importing all those various different assets for us so there's two approaches you can basically drop them directly into the filesystem for your project or you can drag and drop them on to this window over here you'll notice that the animations came in as their own folder you can also arrange things in your own folders here using new folder ok so now we have our sprite graphic to work with now let's go ahead and create a sprite with our root node selected create a new node and the node type we want to create is predictably enough a sprite now a few things to notice here sprite is inherited from node to D that means it gets all of the function that no 2d did as well as canvas item and no so for example no 2d or canvas item one of those two has all the positioning information so that's where it gets its particular information from and I'll show you exactly what I mean in a second once we've created one so I create a sprite right here we'll call him my sprite and you'll notice down here in the inspector it's got these various different categories so you see sprite is the top level this is the the node type that we actually created but as I said it inherited from no 2d canvas item and note and you notice as a result it gets all these various different properties from each one of those sub node types that it inherited from it's a very important concept of how nodes work in Godot I'm not gonna get back into it we covered that in the previous section so let's move on so now that we've got our sprite now we need to go ahead and apply a texture to it this can be done in two ways we can go click and load or click and new and then pick the type and then select it or we can literally drag and drop to the category that we want so there we go we now have a sprite as you can see it is positioned in the world we can switch into the move mode to move it around like so now you'll notice right off the hop it is kind of big in fact it's off of our viewport for size so we can scale that down that is what wears scale mode on audiences select I'm grab it by one of these corners and you can drag it down and scale it to fit that way or we could also rotate it like so and I'm going to undo that because I don't wish to rotate it at this point in time but that is it that is creating a sprite is really honestly that simple to deal with sprites in this game and basically if you're creating a 2-d game surprise are gonna basically be the backbone of that game now one thing to be aware of back to the import process so if I go to this night here now a lot of times some people are working with 8-bit style sprites so one of the things that happened with this import is it's actually being filtered it which is to say it's being smooth shown nicely it kind of like anti-aliasing but if you're going for that chunky 8-bit look one setting to be very aware of is you probably want to turn the filtering off and then do a really important and that will give you your original pixels pixel for pixel exactly how you meant it to be so one of the most common changes we're dealing with 2d graphics is this filtering right here alright so further ado let's head on back over to our scene head back to the scene mode and I want to show you a couple of other things here that are very important first off you'll notice that as I move this sprites around I'm still in rotate mode alright so W as I move this sprite to round its position over here is being moved so transform so here is position let me just expand that out a bit so you can see so here you see we're at 111 and 171 so let me move this guy around you'll see now we're at 498 and 359 well what exactly is that coming from well that is relative to the top left hand corner so there right there that's the called the origin so that's where x and y are at 0 and then we're moving relative to it now what you'll notice here is in this case though we're actually moving relative to the middle not to the top left so you see if you look really closely there's that little + mark right there that is the pivot point for the offset it's right here if you want to move the offset around you can but what you often end up doing is either going to do it via the center which is the default like you're seeing here so this position is relative to the center of our sprite or we can sit centered off and then suddenly it's the top left so you see here our coordinates 245 to 281 that's 245 here at 281 this way so you notice if I bring this guy back to 0-0 you'll see it well close to 0-0 that makes the coordinate system according to the top-left corner so the top left and the center are the two most common coordinate system now doing it centered has an advantage if you're doing rotation because rotations happen relative to the pivot point as well so you notice if I rotate this guy its rotating around that pivot now what you actually want to do is really up to your game but do be aware the centered taught is where that is controlled from so you know this is 0 0 so no snap right back to the middle which one you want to go with is ultimately up to you just be aware that both actually exist so now that we know our way around the 2d editor and we know how to create a sprite let's look at a little bit of the scripting involved so let's just go ahead and attach a script to this guy so did you do and again I have a tutorial coming or already out or I don't know how it's gonna work for you but there is a GD script tutorial that should be released alongside this one that will explain this entire process so I'm not going to go into a whole lot of detail so let's go ahead and create a script let's zoom that down a little bit bring your guy back over here a little bit and we want to keep all that let's give her these comments they're not needed we know what we're doing here alright so now this is a script attached to our sprite that is going to control what it does so in our ready function this is the function that's called when well it's ready when it has it's ready to be used in the game I'll show a couple of things that can be done now one of the things that we've got with our sprite is an attribute called position now you'll notice earlier on I was in here any time you want to know what a class can do just search for it right there so for example here you can see all the various different functionality in sprite now do keep in mind however that that sprite also gets all the functionality from the classes above it so for example no 2d it's got all these properties essential so they can see here it's got a vector to call position well that's what we're about to play with in our code so let's head on back over to our newly created script so position and we're going to set it as I mentioned it was a vector 2 so vector 2 I'm just going to show you how to basically Center something to the screen now remember there was that root note that peg viewport well we can automatically get ahold of that guy using the code called get a viewport like so and we'll get size X which basically will give us our windows width and get a viewport size Y diff - all right basically what this code will do we go back over here you will see we are in the top right hand corner we run our code and we immediately center to the screen so that's exactly what that code did right there so basically it shows how to set the position of a sprite or a no 2d actually and it shows you how to get the graphics of how to get the screens dimensions etc so you can position things relative now do keep in mind we have the origin set at centered so that or the offset is set to center that is why we were ultimately centered in the screen otherwise we would have been drawn relative to the top-left corner of our sprite so that is moving well let's show a couple other things how do we scale well that's just as easy scale vector to there's thirty thirty so what we're doing basically is scaling our x coordinate and our y coordinate down to a thirty percent of what they currently are we go ahead and run that and boom we are now much smaller so scaling is exceedingly easy when it comes to code and next up we've come up to rotation now rotation is also just as easy there is a method called rotate and you pass in the amount to rotate by now by default it uses radians radians are intuitive to certain people I am NOT one of set people so I'm going to use a little helper function called degrees to radians or dead to rad what this does is converts their degrees value which is probably what you think in to radians value like so so basically that turns 90 degrees into point whatever radians and then that passes the right value into the function but you will now notice we run our code we are positioned we are scaled and now we are rotated 90 degrees you could have also passed in a negative and rotated in the opposite direction or I guess I could have passed in 270 and ended up with the same result so that really is the process of animating this guy now listen I'm gonna do is we're gonna do on a frame by frame update so set prosess equals true and now let's have them at the process function and I'm gonna show you a couple of things here so first things first we're going to each frame we're gonna do a little bit of rotation same process rotation equals self notification plus deck to rad 90 times Delta now let me explain exactly why I did that in one second so very important concept alright so what this should do is now every frame process is going to be called and we're gonna rotate by a little bit so now you see we are now spinning so pretty cool pretty straightforward now why did I do this this is Delta is a value passed into process which basically says how long since the last time process was called so if for example and I'll do the math in front of you if for example your game is running at 60 frames per second that means each frame takes zero point zero one six six six six six of a second to run and that will be the value passed in as Delta well the cool thing about this is this is also the fraction of a second that each frame taste so this is saying this value this is zero point one six six it's saying in one that this is one sixtieth of a second so if you want to normalize your speed or your coordinates to run at a certain rate so in this crate I want to rotate at ninety degrees per second all you have to do is multiply it by that Delta and basically it will figure out what fraction of a second each call through update is going to or each call through process is gonna take and move by that small fractional amount by normalizing and using Delta what's cool with this system is if your machine is running at 60 frames per second that value will come back at 0.133 and it will update you know so that when a second has elapsed it will have rotated by a second but if your machine is running at 15 frames per second that value will instead be shouldn't have gotten rid of this guy zero point six which is obviously going to be like a fifth the speed so you're gonna update fifth as optic but you're gonna be updating by a lot more so by using this conversion here it allows you to run at the exact same speed on various different hard so that's a very common game development trick pretty much everybody does it a certain degree so that is why Delta is passed into process and one of those things to be aware of nothing specific to Gd script or Godot in general pretty much every single game image it takes the exact same approach now let's show you one other contest so earlier we did set the position what that did is put it directly into a certain spot it's a one-and-done kind of function it's like sticking something on the board now what if we want to move by a certain amount so instead of you know saying go to this spot what I want you to do instead say go left by one pixel up by one pixel every frame or something similar well that's where translate comes in another function translate or trance 80 if you spell wrong like I do and translate it's a vector 2 passed into it so basically we are telling it how far to move each frame what we're gonna do in this case is we're going to move 100 pixels to the left per second so once again like that and nothing on the Y so by the causing this little guy what did I miss only mr. bragin all right by calling this little guy RR right here we should be able to run it and now we are going to move to the left and over every 1 second will have moved 100 pixels total because of our normalization now the only thing to be aware of this little guy who falls on its face if your frame updates are taking more than one second but if your frame updates are taking more than one second you've got bigger problems to worry about and then finally let's just add a little bit logic in we're gonna use our positional information on our screen so position dot X is less than zero position equals vector to get same logic as before viewport size 2x and so that will get our width and then get a view you port besides that Y give 2 so halfway up our height so basically what I'm doing on this logic is basically once we get to the left hand side of the screen we are now going to jump all the way to the right hand side and continue on and that should be right hopefully there's no errors oh there is an error all right let's try it again so we moved at 100 pixels per second all the way across to the left and then we get mostly off screen and because the center the offset is currently the center so we're still seeing 1/2 you'd probably want to do your connection to 1/2 minus the remaining width if you wanted to go all the way off screen and then we kick back in to the right and spin on back so we actually showed you quite a bit here of non-coding we showed you how to directly locate something how to get the viewport dimensions how to scale something how to rotate it once and done and then we also went into the process function and showed you how to do it on a per frame basis so basically translate to move something by a certain amount and rotation instead of rotate to increment or increase the current rotation and then we also looked at how to do normalization using the Delta value passed into the process function so that's quite a bit pretty successful so let's move on from simple sprites and now we're going to do with something called a sprite atlas now a sprite atlas and a texture sheet and all those things are it's really like this guy right here so where do I call it night walk see this guy that is a texture sheet or sprite atlas the whole idea behind it is basically you can put a whole bunch of images together in a single texture file the advantage to this is it for OpenGL draft for graphics or direct 3d graphics loading and binding texture Maps is a somewhat expensive process so if you've got a lot of similar or like minded textures that are going to be used together enough then very common thing is the UI you're going to be used a lot of the components for the UI on screen at once it makes a lot of sense to load them all together into a single file and you get a performance boost that are doing so it makes sense from a logical perspective so that's why people often create atlases or texture sheets etc so now we're going to show you how to go ahead and use one of those so we start off pretty much the same process we're gonna create another sprite I'll call it oops sprite so and this guy we will call my hatless sprite and in this particular case we had earlier on we used a texture so we came we dragged to drop our single texture onto this guy and created it that way what we're going to do in this case however is use an atlas texture so a new atlas texture so once it is created come on down here and click Edit like so and then here we can load it like so and now we have to tell it what region or space to use on this guy so if I going back to it I don't have it open but my texture is 29:47 this makes absolutely no sense for most people but it is 29:47 by 1420 no I'm gonna go on a bit of a tangent here or a little often space one thing you will often see is power of two textures and this is sort of becoming a bit of a legacy but it used to be required that your texture sizes be powers of 2 so 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 and on and on it goes now there's a reason why I can come over those numbers so damn fast is because they are or at least were important now a lot of times some drivers will actually still work faster with power of 2 textures so in those cases it's often actually better to leave dead space to round up or to change the dimensions so that you match those but for most graphics hardware it's actually becoming less and less important all right so there you see the texture atlas now knows how far or how much to actually span that we're working with so now we go ahead and create one of these in our scenes or where is it in the scene all right just a sec this is gonna confuse me with this guy oh there we go I don't know why it didn't update already but there is our texture atlas well obviously that's no what we want we actually only want to use an aspect of it or a region within it and that can be done using region and right here so we could basically say only use you know this many pixels for this many pixels but in this case we're actually gonna say instead that this entire Atlas is used for an animation so that is under the animation section here and we just tell it how many frames Singers so vertical frames we have two and horizontal I don't know why to this day but I get vertical and horizontal mixed up constantly I don't know why so we got two vertical frames and we have five there you go oops still in rotate mode a so we have two vertical frames five horizontal frames and let me just bring this guy down like so all right it was not happy with that movement give me one second okay not entirely sure what went wrong there so I've recreated my guy as you can see here so I'm just gonna select my other sprite and we'll hide him so I think I just ran into a bug of sorts um I'm not a hundred percent sure what's gonna happen there but as you see we're here on our guy we can switch between frames so if I go to two we update to that particular frame of animation three we'll go back to the zero the very first frame and so so it is one way you could provide animation and let's actually show you a very quick simple hacky animation version on here and then we'll show you the right way to do animation in a second but let's attach the script to this guy all right so in ready we're going to also demonstrate here is timers timers are pretty awesome so let's go up here and let's create a timer VAR timer the timer is just a node like any other so you come on up here you can find it and all of its documentation right here it is under the type of node it's not visible so it's not under spatial or no 2d as you can see so there we're gonna go declare our timer timer equals timer dot new let's create a new timer timer dot connect we're connecting the timer to an event that event is time out and then it calls itself when the timeout occurs you could call another object in this case and we're gonna call the function tick when that timeout occurs so basically the timer is now waiting for the event timeout to happen and when it does call the function tick which by the way will create in a second add our timer to the node to our scene so oops no J timer dot wait time equals 0.2 or 5 frames per second in that case or 200 milliseconds depends on how you want to look at it and let's start our timer up so of course we need a tick function tick is here and pretty straightforward what we're going to do is if self dot frame Wells 9 frame again is that value we were playing with just a second ago right here frame right there that value and we're just gonna manipulate that using code so if we're less than nine self dot frame equal self dot frame plus one you'll notice there is no plus plus operator in GT script which is kind of annoying self dot frame equals zero so we we go-oh zero to nine frames and or zero to eight and then we start back over at zero when we were done that say if that out run our code and there is our night walking animation happening so pretty straightforward pretty simple again that is instead of using one particular sprite though we have a set of sprites all on a single image called a texture Atlas that are feeding this now also you could again have used the texture atlas you don't need to use it for animation like I did you could have Nord that part instead said I want a piece of it by specifying that rectangle down here so that's how a texture atlas can be used and now that we're done with that let's hide this guy and finally we will show you how to actually do animation so that's not how you would properly want to do animations in general instead what you want to use is an animated sprite so come on in here and I made it sprite it's the type of note so instead of sprite we're creating an animated sprite and you'll notice it has an issue here sprite frames resource must be set it's basically it's got some things that we need to define for it in order to be able to continue i remember earlier on we jumped in this folder called annum it's got a set of animations a 10 frames of jumping ten frames of running we head on back over here to our animated sprite in the properties we have this frames we want to create a new sprite frames like so and then edit them and you'll notice a new editor popped up or right down here so let's make our first animation you'll notice it's got a default we will change that default to run grab all of our run frames of animation like so and pop so there is a running animation and if you want your animation to loop if you do click yes and then it will now loop here is the speeds so this is the same as setting that 0.2 like we did a second ago so this is going to update it to speed of five frames per second across our animation and yeah that's kind of the extent of it to be honest down here we can set its animation there so now have the run animation we can turn it to playing goes on and you will see it automatically start going right there let's go back to our editing of the we could change that we could speed it up there etc but what we're gonna want to do is create another animation here and we will call this jump that cog be consistent with my yeah jump attack like so once again you probably pretty predictable frame by frame here now as it stands each one of these frames by the file name is the order that I want it if they're not what you'll often have to do is drag them over one by one so they're in the proper order nice thing is since my file names actually match the order of my animation it works out correctly for me but if your frames names don't necessarily match up to the frame sequence you may have to drag them one at a time so you'll notice the number down below it is the enth order that it appears in the animation so we now have our two animations I don't remember if I loop this guy or not I don't think it's gonna matter because we're ultimately gonna control this guy with code so if we head on back over to our animation you'll now notice we have a choice we can do the jump attack which is not oh it is looping I don't think that was looping or our run animation like so and again we could change the speed back in the animation editor now you got a couple of other options down here I'm not gonna really play with anything but you'll notice the playing that we turned it on so that we can actually see it running so it starts off animated centered is the exact same as sprite this guy doesn't inherit from sprite so it had to implement that itself you've also got the ability to change the offset so if you want to make it bottom left or bottom right corner whatever you would do that here and you can also flip the direction horizontally and vertically if you wish and this is useful for doing sprite flips so if your left animation walk and your bright animation walk are the same you can get away with it just basically by having one walk animation and then flipping it then the appropriate us otherwise it is exactly like it's bright we have a number of animations attached to it let's go ahead and create a script all right create and what we are going to do is use a animation finished call now I want to show you something here you can also do this this way so if you go to the node the signals for it you can connect them that way so I could pick this guy and then wire it up appropriate these are all the various different event signals that this particular node will handle but in this case again we're gonna handle it with code and I'm back over here so and all we're going to do is first off in already function say connect animation finish see you can get code completion for it you could connect it to another object we're connecting it to our own script here and on animated sprite animation finished Wow I think that was a code generated the first time I did this example because that is long winded all right and now we need to implement that function so and pretty simple so what we're going to do is if self dot animation so if the current name of our animation is run so then the current animation that just finishes name was run in that case we want to switch our animation up switching animations is just as a matter of that that's all that was involved and we'll do this one with a Nils like so save that out let's go back to our editor move this guy on-screen eek on screen ish and run him and nothing happens okay I screwed something up animate sprite inspector run animation playing once okay I must have fat-fingered this guy I turned looping off for some reason on my run animation that's not what I wanted so anyways now we run it and boom there's our one animation playing now we're in a run cycle run cycle ends we do our jump attack and running and jump attack etc so obviously you could have 20 30 40 different animations your jump attack you probably also obviously want to increment the position etc but essentially you just saw how easy it is to work with an animated sprite set so the biggest thing between this one and the Atlas is that we used a whole bunch of individual frames that we coordinated into sprite frames now you might be asking yourself hey can I use a texture Atlas in place of a bunch of individual files and the answer is no and why I don't know this is well as areas where Godot is actually quite a bit different than pretty much all the other game engines on the market I don't know why you can't feed this using a texture atlas but unfortunately you cannot now stay tuned later on and you'll find out that there is animation player built into the Godot engine that allows you to animate just about anything with even a lot more power than this so we're gonna get to further animation details a little bit down the road and you're gonna be pretty amazed with what actual Godot is capable from an animation perspective but as you see what we did today was actually quite simple and another topic is spinal animation basically you can do bone based animation in Godot but again we're coming up on the 40-minute mark way beyond why I want to go in today like I said we covered quite a bit today and a quick summary is of what we covered today we looked at the 2d editor we looked at bringing in sprites how to manipulate sprites have translate rotate all that we looked at normalization over time with the process function we looked then at creating a texture Atlas having a simple animation using a timer and then finally looked at the animated sprites to find multiple animations switch between them quite a bit cover actually in one topic and hopefully you can start seeing some of the power of the Godot engine in this tutorial I know this one was probably a bit more exciting then you know nodes and you know introduction and all that so this is where we're starting to get into the meat of how to actually work with the Godot engine and if you're looking at creating a 2-d game you're probably are sitting on about half of what you need to know already just from this one so like sprites animated sprites and atlases are kind of the key concept behind 2d so hopefully you did find this particular tutorial useful again if you did please of course click like and if you're into this series um do hit that subscribe and sadly that notification button to get updates when I update them should as I said have the GD script one up very very shortly and one last plug if you do enjoy the game from scratch Godot with video hopefully you would also enjoy Godot the book which is about the same pace it's generally about one or two chapters ahead of what I am at the video series but that is available in a work-in-progress form to all patron backers and will hopefully be up for pre-sale soon and I will put a link down below when it is really help the channel with that one alright that's it for now I will see you all later good bye
Info
Channel: Gamefromscratch
Views: 81,137
Rating: undefined out of 5
Keywords: Godot, GameDev, Game Engine, Sprites, Tutorial, Animation, Sprite Animation, Game Programming, GDScript, Game Development, 2D, 2D Graphics
Id: Ok3fIQstvLw
Channel Id: undefined
Length: 39min 4sec (2344 seconds)
Published: Wed Apr 04 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.