Hello welcome to the 11th tutorial in the calc has to do a Flappy Bird c++ tutorial series. And in this part we're going to be looking to make our bird also clean our case flight will be continuing on from the previous tutorial so if you don't have the source code or the B link in the description, maybe wondering is the title of the video mistake I'll say fabbi instead of fluffy, but it's not because the name of the birdie Flappy Bird in a flappy but it is fabbi. So let's get on with this tutorial. Firstly, we will disable gravity and we are going to implement our own gravity system. So to disable gravity, just go here, where we've got the same region created with physics is saying get physics world. We set gravity.
I'm going to specify a vector and we're going to put zero for the x axis and you guessed it zero for the y axis. We don't want gravity to affect objects. And now when the screen is touched the bird will move up. So, we will declare the untouched begin method, which will basically detect when the screen has been touched allowing us to move the bird. So here we do on touch. Again, a game like the on contact begins on touch, move on touch, and the doctors canceled and the multiple touch functions as well but we just need when the player has touched the screen so close to do call on touch asterik Touch closest to the quote unquote non event.
Man spell is currently here so touch and now we can just copy and paste this dance here We'll put it there we weren't implemented with a few of the things we should do before we implemented. But we will spray here so we don't forget. And now in our init method, like we do with the contact listener, we're going to create a touch listener to to detect when the touch has occurred. Auto, I'm going to call it touch listener. Chord event listener. Touch one by one, aka, single touch, and then create.
Now we're going to do listener, touch listener, sets one touches to true, then when do touch listener, on Twitch. On touch beacon, equals cc misko callback is complete on the court system is called callback two because there are two parameters specified Game scene not gaming the same thing thing, Conan Conan on touch began. Then for the event, we are going to know we got the wrong method here, we just need the target. So this lets me cola. And now we're going to do director calm, get instance, get a dispatcher. event listener scene graph priority, I'm going to put touch listener.
And finally to the node, we're going to put this and before we actually implement this function right here, let's create a fly method, a four method, stop folding method and it forms a variable in the earth class. Almost go to the height and void for DT void void DT and in here it's coming in like FA W is going to put is falling equals true and this is the variable that we're just going to create a bool is colon. Now let's initialize the foreign variable to true in the constructor. So if we go to our bird dot cpp and in our constructor here, at the end input is equal to true. We will now create free hash define for the following Following fly, aka rising speed and the flying duration, so if we go to a definition fall into cache define the word underscore fall and score speed, I don't put the G five again, this is gonna saturate the screen.
So it's pretty much everything has been done wrong so far they've been repaired on the scope from the point of view of freedom five, and then hash define. Again, you can chain these to fit your need and the sort of game that you want that that's a great thing about define, you can easily change your game. You know, to ratio, the direction to be 0.25 point let's implement the fall and fly method. So if we go to a bird dot cpp and we do voice Bird column column for Windows dt. And in here when the F true equal is fallen Flappy Bird position. x is going to be visible size dot width divided by two.
Origin dot x. And the reason we just set in this position again is to prevent you from moving about when it collides with an item. Flappy Bird set position. Why? For this do Flappy Bird get position, one minus and what we're going to take away from it Bird underscore folding speed coined by visible size, dot height. And now we're going to do else.
Basically, if the bird is rising and informative, not true, we can copy and paste from the only thing that we're going to need to change. See if we can just guess it before I did. Okay, just pause the video. Okay, if you didn't guess it or if we did, great young thing about changes, they see what's going to add to the wide position instead of taking away and that is it for the fall method. Now let's implement the flight method. So void bird fly is four equals true Thinking here for a moment.
Actually, you know what, I'm going to put this in line because it's not really doing much is fooling equals true that should be false. Anyway, what we're going to do is go to dot h, and for the fly we're also going to get rid of the DT here. Don't need this mistake here don't need the DT here. For this one is for equals false. We need to fix a better CBP aka data flow DT here, which we need to get rid of. We should never declare stop flying and update method in game scene header.
So if you go to a gig c dot h and they will be private void only stop line and this will take to float DT because it is going to be cold. Then we're going to be void the void void of that void instead of void void update and the new float dt. Now let's implement the methods to make it easier to copy and paste it. Go to a game theme dot cpp and what we need to do is put some curly braces here. And the final thing is we'll copy and paste this so it's a little quicker in C colon colon gainsaying colon, colon, and for the stop flight method. What we're going to do is bird stop flying with a sibling and a quarter step.
Flying bird. And for the update, we're going to do. Four We are now ready to implement the on touch began method that we created. He has to actually detect when you touch and we'll make the bird fly. So for that, we're going to do bird fly first that we basically change it is for fall into true, then we're going to do this schedule for the schedule the schedule. On the score selector for this little game scene cannot stop flying, which just basically call the stop flying method in the bird objects because he can't directly only as far as I'm aware, you can't directly call a method using a schedule, select a name, not a class, there might be a way but I'm not aware of how to do it, and this is an easy way to do it.
So we're going to for the duration, bird, underscore flying, no fly duration, speed, semi colon, add, turn, turn true. The last step is to schedule the update method inside the init method right here, this schedule update, and this one, you don't need to specify the function itself because within calculus dy dx, it knows to call this particular update method. That's the reason it's named this. The one thing I'm going to deal with I'm going to do this but just for boodle the NIF variable doesn't need to public we're not accessing it. So does we have functions for it? If we were accessing it, that would be okay.
But as we're not mobile, make it private. So let's run this and what the what we're hoping for is You have bird or okay certainly in our instance, and if when you click the screen, it flies up. Click Play. And yeah, there you go. This is once again, you have a four letter word. Click Play, and we'll show you in just a minute.
We have a bird a moving up index. And you might think why is there no lag and it's not working properly. Because in emulator, I've tried it on an iOS device. And I bought an iPad retina, iPhone retina, and it worked fine. It moves good. It's it basically stimulators for why didn't look so good, but the functionality is there, and you're not expecting your users to play on a emulator polyphonic.
So that's it for this tutorial. In the next part of this series, we're going to look at Actually scoring points, almost every game there. And if you have any questions feel free to message us at support at sonar systems coda UK email will be in the description you can comment on this video or just directly messages via YouTube or the recording full source code will also be in the description. And as usual, thanks for watching and I hope you have a nice day.