title
Create A 2.5D Platformer Game With Unreal Engine (Tutorial)
description
Learn how to create a 2.5D Platformer game with Unreal Engine in this full tutorial using C++. In this beginner's course, you will how to create a game with Unreal Engine and Blueprints.
💻 Project assets: https://drive.google.com/file/d/1lAOYnsPh3oq89nfyc31zn5KrVs5wBK4p/view?usp=sharing
💻 Completed code: https://drive.google.com/file/d/16jVlY4LB1CYVf0Lg2yyaESzLi_-4gErG/view?usp=sharing
🎥 Course from Awesome Tuts. Check out their YouTube channel: https://www.youtube.com/awesometuts
🔗 Learn more about game development here: https://www.awesometuts.com/ultimate-game-dev-academy?utm_medium=youtube&utm_source=freecodecamp
--
Learn to code for free and get a developer job: https://www.freecodecamp.org
Read hundreds of articles on programming: https://freecodecamp.org/news
detail
{'title': 'Create A 2.5D Platformer Game With Unreal Engine (Tutorial)', 'heatmap': [{'end': 660.712, 'start': 371.551, 'weight': 0.713}, {'end': 1226.19, 'start': 1126.675, 'weight': 0.72}, {'end': 2162.274, 'start': 2060.88, 'weight': 0.894}, {'end': 2353.82, 'start': 2253.809, 'weight': 0.877}], 'summary': 'Learn to create a 2.5d platformer game with unreal engine through a comprehensive course covering project setup, asset import, character creation, ball movement, interaction elements, laser implementation, gameplay logic, and elevator development.', 'chapters': [{'end': 121.087, 'segs': [{'end': 33.923, 'src': 'embed', 'start': 0.843, 'weight': 0, 'content': [{'end': 4.185, 'text': 'What is up? Welcome back to another Unreal Engine course.', 'start': 0.843, 'duration': 3.342}, {'end': 8.447, 'text': "And this time we have a really cool, let's just see the game that we're going to create.", 'start': 4.225, 'duration': 4.222}, {'end': 14.331, 'text': 'So if I hit the play button, we have a nice ball, we have a nice glowy effect, we can move the ball left and right, we can jump with the ball.', 'start': 8.467, 'duration': 5.864}, {'end': 20.314, 'text': 'So this laser over here is going to kill us pay attention at the top left corner for our energy bam is being drained.', 'start': 14.791, 'duration': 5.523}, {'end': 22.956, 'text': 'As you can see, we can interact with these cubes.', 'start': 20.534, 'duration': 2.422}, {'end': 27.358, 'text': 'So I can you know, like push it or drag it towards me like this.', 'start': 22.976, 'duration': 4.382}, {'end': 30.64, 'text': 'And I can jump from one wall to another like Spider Man over here.', 'start': 27.438, 'duration': 3.202}, {'end': 33.923, 'text': "And of course, you're going to learn how to do all of this.", 'start': 31.021, 'duration': 2.902}], 'summary': 'Unreal engine course demonstrating creating a game with a glowing ball, interactive cubes, and energy management.', 'duration': 33.08, 'max_score': 0.843, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY843.jpg'}, {'end': 84.637, 'src': 'embed', 'start': 55.496, 'weight': 2, 'content': [{'end': 56.697, 'text': 'And we can jump over here.', 'start': 55.496, 'duration': 1.201}, {'end': 58.438, 'text': 'And voila, we reach the top.', 'start': 56.937, 'duration': 1.501}, {'end': 63.121, 'text': 'Of course, this project, you will have assignments in it.', 'start': 59.118, 'duration': 4.003}, {'end': 64.122, 'text': "That's the beauty of it.", 'start': 63.181, 'duration': 0.941}, {'end': 65.963, 'text': 'So I will give you assignments to finish the game.', 'start': 64.141, 'duration': 1.822}, {'end': 70.666, 'text': 'And you can add new features because this serves like a template that you can use to build upon.', 'start': 66.343, 'duration': 4.323}, {'end': 75.869, 'text': 'So you can add new features and that way you can learn and so on and so fourth.', 'start': 70.986, 'duration': 4.883}, {'end': 80.714, 'text': "Now, even though this looks like a some simple game, believe me, you're going to learn a lot of cool things,", 'start': 76.13, 'duration': 4.584}, {'end': 84.637, 'text': 'because a lot of interesting things went into creating this project.', 'start': 80.714, 'duration': 3.923}], 'summary': 'Learn game development with assignments and new features, gain valuable knowledge.', 'duration': 29.141, 'max_score': 55.496, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY55496.jpg'}], 'start': 0.843, 'title': 'Unreal engine game creation', 'summary': 'Introduces a new unreal engine course, emphasizing the learning potential and community involvement in creating a game with interactive elements, assignments, and opportunities to add new features.', 'chapters': [{'end': 121.087, 'start': 0.843, 'title': 'Unreal engine game creation', 'summary': 'Introduces a new unreal engine course, showcasing the creation of a game with interactive elements, assignments, and opportunities to add new features, emphasizing the learning potential and community involvement.', 'duration': 120.244, 'highlights': ['The chapter introduces a new Unreal Engine course, showcasing the creation of a game with interactive elements, assignments, and opportunities to add new features, emphasizing the learning potential and community involvement.', 'The game includes features like controlling a ball, interactive cubes, avoiding lasers that drain energy, and using elevators, offering hands-on learning experiences.', 'Assignments are provided for the game, allowing learners to add new features and create additional levels, fostering practical application and creativity.']}], 'duration': 120.244, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY843.jpg', 'highlights': ['The chapter introduces a new Unreal Engine course with interactive game creation.', 'The game includes features like controlling a ball, interactive cubes, and avoiding lasers.', 'Assignments are provided for practical application and creativity in creating additional levels.']}, {'end': 1000.832, 'segs': [{'end': 166.157, 'src': 'embed', 'start': 140.298, 'weight': 0, 'content': [{'end': 146.703, 'text': "So we're going to click here on the games and then click on next over here we want a blank project from here.", 'start': 140.298, 'duration': 6.405}, {'end': 147.804, 'text': 'click on next.', 'start': 146.703, 'duration': 1.101}, {'end': 150.947, 'text': "blueprint is fine, we don't need the starter content.", 'start': 147.804, 'duration': 3.143}, {'end': 155.45, 'text': "So you can either do it with or without, but you know, essentially we don't need it.", 'start': 151.227, 'duration': 4.223}, {'end': 158.772, 'text': 'everything over here can be as is now.', 'start': 155.45, 'duration': 3.322}, {'end': 162.855, 'text': "over here, as you already know, is where you're going to store the project.", 'start': 158.772, 'duration': 4.083}, {'end': 166.157, 'text': 'So make sure that you will set that to your desired location.', 'start': 162.875, 'duration': 3.282}], 'summary': 'Setting up a game project with blank blueprint, no starter content, and storing in a desired location.', 'duration': 25.859, 'max_score': 140.298, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY140298.jpg'}, {'end': 238.798, 'src': 'embed', 'start': 211.209, 'weight': 1, 'content': [{'end': 214.331, 'text': 'you can download them link will be below this video.', 'start': 211.209, 'duration': 3.122}, {'end': 218.913, 'text': 'So just you know, scroll down below the video and you will see a link where you can download the assets.', 'start': 214.371, 'duration': 4.542}, {'end': 221.475, 'text': "And what you're going to do is copy all of these.", 'start': 219.353, 'duration': 2.122}, {'end': 225.537, 'text': 'So copy all of the assets, everything that you see in this asset folder.', 'start': 221.535, 'duration': 4.002}, {'end': 235.175, 'text': 'And over here, again, right click here on the content show in Explorer, and it will open this bad boy for you, right click and paste the assets.', 'start': 225.877, 'duration': 9.298}, {'end': 238.798, 'text': 'So when you paste the assets, we are good to go.', 'start': 235.595, 'duration': 3.203}], 'summary': 'Download assets from the link below the video and paste them in the asset folder to proceed.', 'duration': 27.589, 'max_score': 211.209, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY211209.jpg'}, {'end': 301.136, 'src': 'embed', 'start': 272, 'weight': 7, 'content': [{'end': 277.703, 'text': 'And I am going to put them inside of the level parts folder, just so that we can organize them a little bit.', 'start': 272, 'duration': 5.703}, {'end': 283.846, 'text': "And we don't have, you know, everything clustered inside of this inside of the world outliner.", 'start': 277.883, 'duration': 5.963}, {'end': 291.79, 'text': "Anyways, what's good about this is that you can always you know you can move these things around to create new levels, yada, yada yada.", 'start': 284.146, 'duration': 7.644}, {'end': 293.891, 'text': "it's service like a template and stuff like that.", 'start': 291.79, 'duration': 2.101}, {'end': 301.136, 'text': 'So you know, for the assignments that I will give you, later on to create new levels, you can do that on your own.', 'start': 293.951, 'duration': 7.185}], 'summary': 'Files organized in level parts folder for creating new levels easily.', 'duration': 29.136, 'max_score': 272, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY272000.jpg'}, {'end': 351.956, 'src': 'embed', 'start': 316.49, 'weight': 2, 'content': [{'end': 318.872, 'text': 'And this class is going to inherit from the character.', 'start': 316.49, 'duration': 2.382}, {'end': 323.455, 'text': 'Now, as you can see here, characters are pawns that have a match, blah, blah, blah, blah, click on that.', 'start': 319.272, 'duration': 4.183}, {'end': 328.839, 'text': 'And this is going to be BP underscore player ball.', 'start': 323.495, 'duration': 5.344}, {'end': 337.505, 'text': "So player underscore ball, or you can put that everything you can put that all together, it's up to you, you know, it's not important.", 'start': 329.059, 'duration': 8.446}, {'end': 339.467, 'text': "And I don't care, you know, I don't care what you do.", 'start': 337.585, 'duration': 1.882}, {'end': 341.488, 'text': "Okay, it's your life, you can do whatever you want.", 'start': 339.587, 'duration': 1.901}, {'end': 343.349, 'text': 'But anyways, just kidding.', 'start': 341.888, 'duration': 1.461}, {'end': 351.956, 'text': 'what you need to do or what we are going to do now is that we are going to add a mesh and all the good stuff.', 'start': 344.409, 'duration': 7.547}], 'summary': 'Inheritance from character class for player ball, adding mesh and more.', 'duration': 35.466, 'max_score': 316.49, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY316490.jpg'}, {'end': 660.712, 'src': 'heatmap', 'start': 371.551, 'weight': 0.713, 'content': [{'end': 378.875, 'text': 'Now for the static mesh, click here, as you can see where it says the static mesh, click there and filter for the ball.', 'start': 371.551, 'duration': 7.324}, {'end': 382.176, 'text': 'So click ball and SM ball here it is.', 'start': 379.115, 'duration': 3.061}, {'end': 383.437, 'text': 'So click on that one.', 'start': 382.236, 'duration': 1.201}, {'end': 384.577, 'text': 'And there you go.', 'start': 383.657, 'duration': 0.92}, {'end': 385.758, 'text': 'This is our ball.', 'start': 384.677, 'duration': 1.081}, {'end': 387.259, 'text': "It's, you know, very funny.", 'start': 385.838, 'duration': 1.421}, {'end': 392.802, 'text': 'Now over here for the elements, we are going to search for the ball element.', 'start': 387.859, 'duration': 4.943}, {'end': 395.604, 'text': 'So click here ball filter for the ball.', 'start': 392.842, 'duration': 2.762}, {'end': 396.485, 'text': 'And there you go.', 'start': 395.664, 'duration': 0.821}, {'end': 400.628, 'text': 'It looks like a golf ball, you know, it looks like a golf ball.', 'start': 396.525, 'duration': 4.103}, {'end': 402.109, 'text': "So we're going to say it's a golf ball.", 'start': 400.908, 'duration': 1.201}, {'end': 406.171, 'text': 'Anyways, what we are also going to do is we are going to scale it.', 'start': 402.549, 'duration': 3.622}, {'end': 410.314, 'text': 'So over here in the transform for the scale, click on the lock icon.', 'start': 406.231, 'duration': 4.083}, {'end': 415.017, 'text': 'And we are going to say 1.5 for the scale to rescale the ball.', 'start': 410.794, 'duration': 4.223}, {'end': 417.159, 'text': 'So it gets a little bit, you know, larger.', 'start': 415.077, 'duration': 2.082}, {'end': 420.061, 'text': 'Also for our capsule component.', 'start': 418.059, 'duration': 2.002}, {'end': 425.685, 'text': 'what we are going to do over here is the half height and the radius are going to be 75.', 'start': 420.061, 'duration': 5.624}, {'end': 429.127, 'text': 'for the half height, radius is going to be also 75..', 'start': 425.685, 'duration': 3.442}, {'end': 439.895, 'text': 'So as you can see, now the whole ball is covered in the radius of the capsule component, make sure that you compile and save that.', 'start': 429.127, 'duration': 10.768}, {'end': 446.818, 'text': "what I am also going to do is I'm going to attach a spring arm.", 'start': 440.655, 'duration': 6.163}, {'end': 450.8, 'text': 'So click here on add component and filter for the spring arm.', 'start': 446.858, 'duration': 3.942}, {'end': 454.741, 'text': "Now if you don't know what is a spring are basically it's a holder for the camera.", 'start': 451.2, 'duration': 3.541}, {'end': 457.442, 'text': 'So you can think of a spring arm as a holder for the camera.', 'start': 455.121, 'duration': 2.321}, {'end': 465.646, 'text': 'What we are going to do for the spring arm is over here for the rotation on the z axis, we are going to say negative 90.', 'start': 457.803, 'duration': 7.843}, {'end': 466.307, 'text': 'There you go.', 'start': 465.646, 'duration': 0.661}, {'end': 470.251, 'text': 'And we are also going to set the target arm length.', 'start': 466.967, 'duration': 3.284}, {'end': 476.217, 'text': "So this over here in the camera, it's currently at 300, we're going to set it at 1536.", 'start': 470.671, 'duration': 5.546}, {'end': 480.141, 'text': 'So 1536, which is going to make that a little bit further away from the ball.', 'start': 476.217, 'duration': 3.924}, {'end': 480.541, 'text': 'There you go.', 'start': 480.181, 'duration': 0.36}, {'end': 492.66, 'text': 'When it comes to the target offset for the z axis, we are going to set that at 300.', 'start': 487.455, 'duration': 5.205}, {'end': 493.28, 'text': 'There you go.', 'start': 492.66, 'duration': 0.62}, {'end': 502.068, 'text': "And basically, as you can see, it's right over here, like in a diagonal way, with an angle, it's looking at that ball.", 'start': 493.741, 'duration': 8.327}, {'end': 503.79, 'text': "So basically, that's that.", 'start': 502.489, 'duration': 1.301}, {'end': 507.072, 'text': "do collision test over here, we don't need this.", 'start': 504.952, 'duration': 2.12}, {'end': 513.433, 'text': "So if true, do a collision test using prop channel prop size, you know, we don't need this, we don't need this.", 'start': 507.172, 'duration': 6.261}, {'end': 515.094, 'text': 'So compile and save that.', 'start': 513.833, 'duration': 1.261}, {'end': 520.975, 'text': 'And the next step for us is selecting the spring arm and attaching the camera.', 'start': 515.734, 'duration': 5.241}, {'end': 522.576, 'text': 'So click on the camera.', 'start': 521.395, 'duration': 1.181}, {'end': 523.655, 'text': 'And there you go.', 'start': 522.936, 'duration': 0.719}, {'end': 525.596, 'text': 'So now we have the camera on it.', 'start': 523.716, 'duration': 1.88}, {'end': 530.297, 'text': 'When it comes to the camera, we are basically not going to touch anything.', 'start': 525.996, 'duration': 4.301}, {'end': 537.661, 'text': "we don't need to touch anything because we have everything set up within the, within the spring arm.", 'start': 530.297, 'duration': 7.364}, {'end': 544.028, 'text': 'Now make sure that you compile and save that if I were to go over here in the example map and hit on play button.', 'start': 537.941, 'duration': 6.087}, {'end': 551.617, 'text': 'And over here, just one second we do have because I prepared this project and some of the things that we do need to delete.', 'start': 544.709, 'duration': 6.908}, {'end': 553.858, 'text': 'what we need to do is go here.', 'start': 552.017, 'duration': 1.841}, {'end': 557.341, 'text': "while you're in the example map level, click on the.", 'start': 553.858, 'duration': 3.483}, {'end': 563.625, 'text': 'you see over here where it says blueprints, click on the drop down list and click here open level, brew blueprint.', 'start': 557.341, 'duration': 6.284}, {'end': 565.846, 'text': 'When you click on that, just delete these two notes.', 'start': 563.785, 'duration': 2.061}, {'end': 571.53, 'text': 'So just delete these two compile and save that this is later on for creating the UI for the game.', 'start': 566.287, 'duration': 5.243}, {'end': 576.473, 'text': 'So when we have our UI, we will have this over here or, or somewhere else.', 'start': 572.191, 'duration': 4.282}, {'end': 577.234, 'text': "It's not important.", 'start': 576.533, 'duration': 0.701}, {'end': 578.295, 'text': 'But that is for the UI.', 'start': 577.274, 'duration': 1.021}, {'end': 580.236, 'text': 'If I hit the play button, now everything is cool.', 'start': 578.315, 'duration': 1.921}, {'end': 585.798, 'text': "But you see this over here, we don't have our ball, we don't have anything.", 'start': 580.756, 'duration': 5.042}, {'end': 593.3, 'text': 'So what we need to do is go back here in the content browser inside of the blueprints and right click and create a blueprint class.', 'start': 585.878, 'duration': 7.422}, {'end': 598.162, 'text': 'And from here from all classes in the search, we are going to filter for game mode.', 'start': 593.34, 'duration': 4.822}, {'end': 600.903, 'text': 'And we want this one game mode.', 'start': 599.002, 'duration': 1.901}, {'end': 610.627, 'text': 'So make sure that you select the game mode, click on select, and this is going to be BP underscore plat former underscore game mode.', 'start': 601.283, 'duration': 9.344}, {'end': 614.408, 'text': 'So this is our platformer game mode, we only need it for one reason.', 'start': 610.987, 'duration': 3.421}, {'end': 618.99, 'text': 'And that is to go inside of the project settings, and click here maps and modes.', 'start': 614.448, 'duration': 4.542}, {'end': 622.412, 'text': 'And over here at the top, where it says default game mode.', 'start': 619.451, 'duration': 2.961}, {'end': 624.754, 'text': "we're not going to set the game mode base.", 'start': 622.932, 'duration': 1.822}, {'end': 632.26, 'text': "instead we're going to say the platformer game mode, the one that we have just created, which now enables us to edit the default pawn class,", 'start': 624.754, 'duration': 7.506}, {'end': 633.401, 'text': 'which is actually the player.', 'start': 632.26, 'duration': 1.141}, {'end': 643.588, 'text': "So from the default pawn class we're going to select the BP player ball, which means now When we go here in our example map.", 'start': 634.061, 'duration': 9.527}, {'end': 645.408, 'text': 'let me just close the example map blueprint.', 'start': 643.588, 'duration': 1.82}, {'end': 646.469, 'text': 'Over here.', 'start': 645.868, 'duration': 0.601}, {'end': 648.949, 'text': 'as you can see, I have already prepared from this level.', 'start': 646.469, 'duration': 2.48}, {'end': 653.05, 'text': 'this is the player start or where the player is going to be spawned when we run our game.', 'start': 648.949, 'duration': 4.101}, {'end': 655.911, 'text': 'So if I hit play now, there you go, we have the ball.', 'start': 653.07, 'duration': 2.841}, {'end': 660.712, 'text': 'And this is because we create the game mode base, and we attach it over here.', 'start': 656.331, 'duration': 4.381}], 'summary': 'Creating a game environment with ball, capsule, and camera adjustments, and setting up the game mode for player control.', 'duration': 289.161, 'max_score': 371.551, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY371551.jpg'}, {'end': 439.895, 'src': 'embed', 'start': 406.231, 'weight': 3, 'content': [{'end': 410.314, 'text': 'So over here in the transform for the scale, click on the lock icon.', 'start': 406.231, 'duration': 4.083}, {'end': 415.017, 'text': 'And we are going to say 1.5 for the scale to rescale the ball.', 'start': 410.794, 'duration': 4.223}, {'end': 417.159, 'text': 'So it gets a little bit, you know, larger.', 'start': 415.077, 'duration': 2.082}, {'end': 420.061, 'text': 'Also for our capsule component.', 'start': 418.059, 'duration': 2.002}, {'end': 425.685, 'text': 'what we are going to do over here is the half height and the radius are going to be 75.', 'start': 420.061, 'duration': 5.624}, {'end': 429.127, 'text': 'for the half height, radius is going to be also 75..', 'start': 425.685, 'duration': 3.442}, {'end': 439.895, 'text': 'So as you can see, now the whole ball is covered in the radius of the capsule component, make sure that you compile and save that.', 'start': 429.127, 'duration': 10.768}], 'summary': 'Rescaled ball to 1.5x and adjusted capsule component to 75 radius and half height.', 'duration': 33.664, 'max_score': 406.231, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY406231.jpg'}, {'end': 492.66, 'src': 'embed', 'start': 455.121, 'weight': 4, 'content': [{'end': 457.442, 'text': 'So you can think of a spring arm as a holder for the camera.', 'start': 455.121, 'duration': 2.321}, {'end': 465.646, 'text': 'What we are going to do for the spring arm is over here for the rotation on the z axis, we are going to say negative 90.', 'start': 457.803, 'duration': 7.843}, {'end': 466.307, 'text': 'There you go.', 'start': 465.646, 'duration': 0.661}, {'end': 470.251, 'text': 'And we are also going to set the target arm length.', 'start': 466.967, 'duration': 3.284}, {'end': 476.217, 'text': "So this over here in the camera, it's currently at 300, we're going to set it at 1536.", 'start': 470.671, 'duration': 5.546}, {'end': 480.141, 'text': 'So 1536, which is going to make that a little bit further away from the ball.', 'start': 476.217, 'duration': 3.924}, {'end': 480.541, 'text': 'There you go.', 'start': 480.181, 'duration': 0.36}, {'end': 492.66, 'text': 'When it comes to the target offset for the z axis, we are going to set that at 300.', 'start': 487.455, 'duration': 5.205}], 'summary': 'Adjusted spring arm rotation to -90 on z axis, set camera distance to 1536, and target offset for z axis at 300.', 'duration': 37.539, 'max_score': 455.121, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY455121.jpg'}, {'end': 694.876, 'src': 'embed', 'start': 665.294, 'weight': 5, 'content': [{'end': 669.475, 'text': 'And now when we you know, run the game, it is being spawned.', 'start': 665.294, 'duration': 4.181}, {'end': 673.338, 'text': 'Moving forward, let us go back inside of our player ball.', 'start': 670.075, 'duration': 3.263}, {'end': 677.202, 'text': 'And what we are going to do first is create the variables that we need.', 'start': 673.679, 'duration': 3.523}, {'end': 682.948, 'text': 'So the first variable is going to be our ball material instance like this.', 'start': 677.703, 'duration': 5.245}, {'end': 687.652, 'text': "Now I am going to just declare all of these, then I'm going to set the types and whatnot.", 'start': 683.068, 'duration': 4.584}, {'end': 689.754, 'text': 'Next, we have the move direction.', 'start': 688.093, 'duration': 1.661}, {'end': 694.876, 'text': 'Next, we are going to have over here flat velocity.', 'start': 690.934, 'duration': 3.942}], 'summary': 'Creating variables for ball game with ball material instance, move direction, and flat velocity.', 'duration': 29.582, 'max_score': 665.294, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY665294.jpg'}, {'end': 981.955, 'src': 'embed', 'start': 955.007, 'weight': 6, 'content': [{'end': 962.59, 'text': 'But before that, we are going to get the player controller because the player controller is the one who can enable and disable the input.', 'start': 955.007, 'duration': 7.583}, {'end': 967.731, 'text': 'So over here, I can say enable input like this.', 'start': 963.07, 'duration': 4.661}, {'end': 971.492, 'text': 'And right click over here, I can say disable input.', 'start': 968.531, 'duration': 2.961}, {'end': 980.754, 'text': 'Now this is going to enable and disable the input on the player controller, which means it will disable the input on our ball.', 'start': 972.152, 'duration': 8.602}, {'end': 981.955, 'text': 'There you go.', 'start': 981.515, 'duration': 0.44}], 'summary': "Enabling and disabling input on player controller affects ball's input.", 'duration': 26.948, 'max_score': 955.007, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY955007.jpg'}], 'start': 121.087, 'title': 'Creating a game in unreal engine', 'summary': 'Covers creating a game in unreal engine, setting up a project, importing assets, organizing the level, creating a player character, adding a static mesh component for a ball, scaling it, setting up a spring arm for the camera, and creating and setting variables and custom events for enabling and disabling input on the player controller.', 'chapters': [{'end': 337.505, 'start': 121.087, 'title': 'Creating a game in unreal engine', 'summary': 'Covers creating a game in unreal engine, including setting up a project, importing assets, organizing the level, and creating a player character.', 'duration': 216.418, 'highlights': ['Setting up a project in Unreal Engine involves selecting a blank project, choosing blueprint, and specifying the project location and name.', 'Importing assets into the project involves downloading the assets from a provided link, copying them into the project folder, and organizing them within the content directory.', 'Organizing the level within Unreal Engine involves arranging separate items to create the level, creating folders to organize assets within the outliner, and using templates for creating new levels.', 'Creating a player character in Unreal Engine involves creating a blueprint class that inherits from the character, with the option to customize the class name.']}, {'end': 1000.832, 'start': 337.585, 'title': 'Adding static mesh component and spring arm', 'summary': 'Covers adding a static mesh component for a ball and scaling it, setting up a spring arm for the camera, and creating and setting variables and custom events for enabling and disabling input on the player controller.', 'duration': 663.247, 'highlights': ['Adding a static mesh component for the ball and scaling it to 1.5 for a larger size, and setting the half height and radius of the capsule component to 75. The static mesh component for the ball is added and scaled to 1.5 for a larger size, with the half height and radius of the capsule component set to 75.', 'Setting up a spring arm for the camera with a rotation of -90 on the z-axis, a target arm length of 1536, and a target offset for the z-axis of 300. A spring arm is set up for the camera with a rotation of -90 on the z-axis, a target arm length of 1536, and a target offset for the z-axis of 300.', 'Creating variables for ball material instance, move direction, flat velocity, current speed, rotation amount, ball rotation rate, power, energy, is dead, and hard reference, and setting their types and default values. Variables are created for ball material instance, move direction, flat velocity, current speed, rotation amount, ball rotation rate, power, energy, is dead, and hard reference, with their types and default values set.', 'Creating a custom event to enable and disable input on the player controller, with a parameter for enabling. A custom event is created to enable and disable input on the player controller, with a parameter for enabling.']}], 'duration': 879.745, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY121087.jpg', 'highlights': ['Setting up a project in Unreal Engine involves selecting a blank project, choosing blueprint, and specifying the project location and name.', 'Importing assets into the project involves downloading the assets from a provided link, copying them into the project folder, and organizing them within the content directory.', 'Creating a player character in Unreal Engine involves creating a blueprint class that inherits from the character, with the option to customize the class name.', 'Adding a static mesh component for the ball and scaling it to 1.5 for a larger size, and setting the half height and radius of the capsule component to 75.', 'Setting up a spring arm for the camera with a rotation of -90 on the z-axis, a target arm length of 1536, and a target offset for the z-axis of 300.', 'Creating variables for ball material instance, move direction, flat velocity, current speed, rotation amount, ball rotation rate, power, energy, is dead, and hard reference, and setting their types and default values.', 'Creating a custom event to enable and disable input on the player controller, with a parameter for enabling.', 'Organizing the level within Unreal Engine involves arranging separate items to create the level, creating folders to organize assets within the outliner, and using templates for creating new levels.']}, {'end': 1877.647, 'segs': [{'end': 1043.856, 'src': 'embed', 'start': 1018.883, 'weight': 0, 'content': [{'end': 1024.728, 'text': 'select all the nodes that you want to group in a comment, then right click and go over here create comment from section.', 'start': 1018.883, 'duration': 5.845}, {'end': 1027.69, 'text': 'And of course, you can select this comment, you can delete it and it can go away.', 'start': 1024.848, 'duration': 2.842}, {'end': 1031.292, 'text': 'So if I select it now and hit delete, it will be deleted and go away.', 'start': 1027.71, 'duration': 3.582}, {'end': 1033.113, 'text': 'over here, everything is straightforward.', 'start': 1031.653, 'duration': 1.46}, {'end': 1035.674, 'text': "I don't think there is no extra explanation for this.", 'start': 1033.153, 'duration': 2.521}, {'end': 1039.135, 'text': 'Or if there is just you know, let me know in the comment below the video.', 'start': 1036.134, 'duration': 3.001}, {'end': 1043.856, 'text': 'Anyways, moving forward, we want another, we want another custom event.', 'start': 1039.655, 'duration': 4.201}], 'summary': 'Select nodes, create and delete comments easily. no extra explanation needed.', 'duration': 24.973, 'max_score': 1018.883, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1018883.jpg'}, {'end': 1226.19, 'src': 'heatmap', 'start': 1126.675, 'weight': 0.72, 'content': [{'end': 1128.436, 'text': "So over here, we're going to plug this in.", 'start': 1126.675, 'duration': 1.761}, {'end': 1129.616, 'text': 'So this goes over here.', 'start': 1128.496, 'duration': 1.12}, {'end': 1135.458, 'text': "Next, we're going to plug in the parameter name over here, and the value will be plugged over here.", 'start': 1130.177, 'duration': 5.281}, {'end': 1139.199, 'text': 'And after that, we are going to get the ball mesh.', 'start': 1136.238, 'duration': 2.961}, {'end': 1143.821, 'text': 'So here we have the static mesh, and I need to change the name to the ball mesh.', 'start': 1139.96, 'duration': 3.861}, {'end': 1149.427, 'text': "I mean, it's not important, but you know, for our references, it is better to know.", 'start': 1144.821, 'duration': 4.606}, {'end': 1150.608, 'text': 'So this is a ball mesh.', 'start': 1149.507, 'duration': 1.101}, {'end': 1153.191, 'text': 'And we are going to say over here, set material.', 'start': 1150.688, 'duration': 2.503}, {'end': 1155.886, 'text': 'There you go, not this.', 'start': 1154.445, 'duration': 1.441}, {'end': 1160.21, 'text': 'So from here, set material, and we want this one.', 'start': 1156.447, 'duration': 3.763}, {'end': 1161.891, 'text': 'So set material, there you go.', 'start': 1160.37, 'duration': 1.521}, {'end': 1164.834, 'text': 'Plug this in over here, this goes over here.', 'start': 1162.392, 'duration': 2.442}, {'end': 1169.597, 'text': 'And last but not least, we want the material, which is the ball material instance.', 'start': 1165.194, 'duration': 4.403}, {'end': 1173.621, 'text': 'So here, get the ball material instance and plug it in.', 'start': 1169.658, 'duration': 3.963}, {'end': 1176.043, 'text': 'And there you go, compile and save that.', 'start': 1173.641, 'duration': 2.402}, {'end': 1178.265, 'text': "Now what I'm going to do is select this.", 'start': 1176.463, 'duration': 1.802}, {'end': 1188.777, 'text': 'And again, right click and create a comment from section is going to be change ball material color and make sure that you compile and save this.', 'start': 1178.966, 'duration': 9.811}, {'end': 1190.599, 'text': 'What is this essentially??', 'start': 1189.197, 'duration': 1.402}, {'end': 1192.501, 'text': 'What is this going to do??', 'start': 1190.679, 'duration': 1.822}, {'end': 1200.168, 'text': 'Well, basically, if I go over here and select the ball material and you see, here we have the ball material, if I click on it, this is that material.', 'start': 1192.941, 'duration': 7.227}, {'end': 1201.549, 'text': 'And let me just open it.', 'start': 1200.688, 'duration': 0.861}, {'end': 1202.37, 'text': 'So over.', 'start': 1201.869, 'duration': 0.501}, {'end': 1203.471, 'text': 'here is the material.', 'start': 1202.37, 'duration': 1.101}, {'end': 1207.394, 'text': "I'm not going to go into this because this is a separate topic on its own.", 'start': 1203.471, 'duration': 3.923}, {'end': 1211.298, 'text': 'you know dragging these materials, creating them with the nodes and whatnot.', 'start': 1207.394, 'duration': 3.904}, {'end': 1221.686, 'text': 'But over here, you have some parameters like power, like is active, and so on and so forth that control certain aspects of that material.', 'start': 1211.738, 'duration': 9.948}, {'end': 1226.19, 'text': 'As you can see, we then have the divide, then put it in the lerp and multiply.', 'start': 1222.066, 'duration': 4.124}], 'summary': 'Instructions for changing ball material color in a software. plug in parameter values and set material.', 'duration': 99.515, 'max_score': 1126.675, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1126675.jpg'}, {'end': 1452.856, 'src': 'embed', 'start': 1423.678, 'weight': 5, 'content': [{'end': 1428.202, 'text': 'What is the next step? The next step over here is to first enable disable input.', 'start': 1423.678, 'duration': 4.524}, {'end': 1432.066, 'text': 'So we are going to say enable this able input.', 'start': 1428.222, 'duration': 3.844}, {'end': 1439.75, 'text': "And over here, we have the parameter, we're going to leave it false, as you can see, or know already, if it's false, we're going to disable the input.", 'start': 1432.706, 'duration': 7.044}, {'end': 1442.151, 'text': "So we're not going to allow the character to move.", 'start': 1439.77, 'duration': 2.381}, {'end': 1444.092, 'text': 'So disable the input.', 'start': 1442.631, 'duration': 1.461}, {'end': 1452.856, 'text': "After that, we're going to see change ball material color, the parameter name that you're going to pass is going to be is active.", 'start': 1444.352, 'duration': 8.504}], 'summary': "Enable/disable input and change ball material color with parameter 'is active.'", 'duration': 29.178, 'max_score': 1423.678, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1423678.jpg'}, {'end': 1843.521, 'src': 'embed', 'start': 1803.081, 'weight': 3, 'content': [{'end': 1805.462, 'text': 'we explained that custom event that we have created.', 'start': 1803.081, 'duration': 2.381}, {'end': 1807.042, 'text': 'change the ball material color.', 'start': 1805.462, 'duration': 1.58}, {'end': 1808.403, 'text': 'we have it over here.', 'start': 1807.042, 'duration': 1.361}, {'end': 1816.945, 'text': 'So it will change the ball material instance, the color name over here and the parameter name over here, actually, and it will set the default value.', 'start': 1808.463, 'duration': 8.482}, {'end': 1820.586, 'text': 'then it will set that material to the ball meshes material.', 'start': 1816.945, 'duration': 3.641}, {'end': 1826.69, 'text': 'So over here we are changing the material color for is active to zero, waiting half a second.', 'start': 1820.887, 'duration': 5.803}, {'end': 1835.396, 'text': 'then setting the material color for the is active parameter to one, then calling a timeline that will create a value, this float value,', 'start': 1826.69, 'duration': 8.706}, {'end': 1840.879, 'text': 'that will go from zero to one in the time interval that we have already explained.', 'start': 1835.396, 'duration': 5.483}, {'end': 1843.521, 'text': 'And then we are going to use that in the lerp function.', 'start': 1841.14, 'duration': 2.381}], 'summary': 'Custom event changes ball material color, transitioning from 0 to 1 using a timeline.', 'duration': 40.44, 'max_score': 1803.081, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1803081.jpg'}], 'start': 1001.213, 'title': 'Customizing code and ball material', 'summary': 'Explains creating a comment section in code and changing the color of a ball material instance. it details the process, steps, and visual effects involved, offering a comprehensive guide for these two tasks.', 'chapters': [{'end': 1035.674, 'start': 1001.213, 'title': 'Creating comment section in code', 'summary': 'Explains how to create a comment section in code by selecting nodes, then creating and managing the comment, with no additional explanation needed.', 'duration': 34.461, 'highlights': ['Creating a comment section by selecting nodes and then creating a comment from the section.', 'Managing the created comment by selecting and deleting it.', 'The process of creating a comment section is straightforward with no need for extra explanation.']}, {'end': 1877.647, 'start': 1036.134, 'title': 'Change ball material color', 'summary': 'Covers the process of creating a custom event to change the color of a ball material instance in a game, demonstrating the steps involved in setting parameters and values, as well as utilizing timelines for color transition and enabling/disabling input, ultimately achieving a visual effect of color change from no color to red to green.', 'duration': 841.513, 'highlights': ['Custom event to change ball material color The tutorial explains the creation of a custom event to change the color of a ball material instance, involving the setting of parameters and values.', 'Utilizing timelines for color transition The process demonstrates the use of timelines to create a float value transition from 0 to 1 over a specified time interval, resulting in a gradual color change effect.', 'Enabling/disabling input The tutorial includes steps to enable and disable input, controlling the ability of the character to move within the game based on the color change process.']}], 'duration': 876.434, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1001213.jpg', 'highlights': ['The process of creating a comment section is straightforward with no need for extra explanation.', 'Managing the created comment by selecting and deleting it.', 'Creating a comment section by selecting nodes and then creating a comment from the section.', 'Utilizing timelines for color transition The process demonstrates the use of timelines to create a float value transition from 0 to 1 over a specified time interval, resulting in a gradual color change effect.', 'Custom event to change ball material color The tutorial explains the creation of a custom event to change the color of a ball material instance, involving the setting of parameters and values.', 'Enabling/disabling input The tutorial includes steps to enable and disable input, controlling the ability of the character to move within the game based on the color change process.']}, {'end': 2426.187, 'segs': [{'end': 1944.172, 'src': 'embed', 'start': 1916.22, 'weight': 0, 'content': [{'end': 1923.482, 'text': "So this one is going to be our first action mapping and we're going to have a second one and click on the plus button over here for the axes mappings.", 'start': 1916.22, 'duration': 7.262}, {'end': 1927.864, 'text': "So first things first over here for our action one, we're going to have jump.", 'start': 1923.922, 'duration': 3.942}, {'end': 1932.806, 'text': 'And for the jump, we are going to filter here in the search bar for the spacebar.', 'start': 1928.624, 'duration': 4.182}, {'end': 1938.368, 'text': "So spacebar when we press on our keyboard, we're going to jump the next one over here, I'm going to call action.", 'start': 1933.166, 'duration': 5.202}, {'end': 1944.172, 'text': 'And action is going to be executed when we press the E button on our keyboard.', 'start': 1939.168, 'duration': 5.004}], 'summary': 'Creating action mappings for jump (spacebar) and execute (e button) in the game.', 'duration': 27.952, 'max_score': 1916.22, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1916220.jpg'}, {'end': 2022.457, 'src': 'embed', 'start': 1976.173, 'weight': 1, 'content': [{'end': 1982.016, 'text': 'So basically, click here, and the first one is going to be keyboard or key code A.', 'start': 1976.173, 'duration': 5.843}, {'end': 1985.637, 'text': 'And the next one is going to be key code D.', 'start': 1982.016, 'duration': 3.621}, {'end': 1991.099, 'text': "For the key code A, we're also going to add here minus And there you go.", 'start': 1985.637, 'duration': 5.462}, {'end': 1997.623, 'text': 'So this basically means when we press the A or the D key, we will trigger this move right axis mappings.', 'start': 1991.22, 'duration': 6.403}, {'end': 2009.349, 'text': 'Now, what is this A and D basically moving left and right minus one is for a because negative side left side basically is the negative side.', 'start': 1998.343, 'duration': 11.006}, {'end': 2010.97, 'text': "That's why we add here negative one.", 'start': 2009.389, 'duration': 1.581}, {'end': 2014.352, 'text': 'So now we can go in our ball player blueprint.', 'start': 2011.551, 'duration': 2.801}, {'end': 2019.515, 'text': 'And right here below this change ball material color, we are going to create another custom event.', 'start': 2014.392, 'duration': 5.123}, {'end': 2022.457, 'text': 'So right click over here, custom event.', 'start': 2019.535, 'duration': 2.922}], 'summary': 'Creating keyboard mappings in blueprint for left and right axis, with a and d keys triggering move right axis mappings.', 'duration': 46.284, 'max_score': 1976.173, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1976173.jpg'}, {'end': 2071.708, 'src': 'embed', 'start': 2043.711, 'weight': 4, 'content': [{'end': 2047.814, 'text': "And if it's true, we are going to move our ball in one way.", 'start': 2043.711, 'duration': 4.103}, {'end': 2049.536, 'text': "If it's false, we're going to move it another way.", 'start': 2047.914, 'duration': 1.622}, {'end': 2056.061, 'text': "So first over here, I'm going to right click and we are going to say set move direction like this.", 'start': 2049.976, 'duration': 6.085}, {'end': 2060.52, 'text': "And what's going to happen over here from the true, I'm going to drag it.", 'start': 2057.538, 'duration': 2.982}, {'end': 2067.764, 'text': "And I'm going to click on this line for the note two times so that I can add another input over here so that I can you know, as you can see,", 'start': 2060.88, 'duration': 6.884}, {'end': 2071.708, 'text': 'I can visually set it or make it more clear, clearer.', 'start': 2067.764, 'duration': 3.944}], 'summary': 'Setting move direction based on true or false, visually clarifying inputs.', 'duration': 27.997, 'max_score': 2043.711, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY2043711.jpg'}, {'end': 2162.274, 'src': 'heatmap', 'start': 2060.88, 'weight': 0.894, 'content': [{'end': 2067.764, 'text': "And I'm going to click on this line for the note two times so that I can add another input over here so that I can you know, as you can see,", 'start': 2060.88, 'duration': 6.884}, {'end': 2071.708, 'text': 'I can visually set it or make it more clear, clearer.', 'start': 2067.764, 'duration': 3.944}, {'end': 2073.329, 'text': 'to read clearer now is the word.', 'start': 2071.708, 'duration': 1.621}, {'end': 2078.013, 'text': 'Anyways, now over here, we are going to say get move right.', 'start': 2073.989, 'duration': 4.024}, {'end': 2082.871, 'text': 'And from the move right, we are going to make a vector.', 'start': 2080.009, 'duration': 2.862}, {'end': 2085.172, 'text': "So I'm going to say make vector.", 'start': 2082.951, 'duration': 2.221}, {'end': 2090.216, 'text': 'And that vector is going to go inside of the x-axis.', 'start': 2085.813, 'duration': 4.403}, {'end': 2092.197, 'text': "And I'm going to plug it in over here.", 'start': 2090.376, 'duration': 1.821}, {'end': 2099.282, 'text': 'And this is basically, we can move this a little bit up just to make it a little bit more clear to read.', 'start': 2092.678, 'duration': 6.604}, {'end': 2106.647, 'text': "And let me just move it a bit down like this so that it doesn't come close to this and doesn't obscure it, yada, yada, yada.", 'start': 2100.203, 'duration': 6.444}, {'end': 2111.23, 'text': "Anyways The next thing, if it's false, I'm going to right click.", 'start': 2107.287, 'duration': 3.943}, {'end': 2115.536, 'text': "And from here, again, we're going to say set move direction like this.", 'start': 2111.511, 'duration': 4.025}, {'end': 2118.94, 'text': 'And the false one will go inside over here.', 'start': 2116.156, 'duration': 2.784}, {'end': 2126.489, 'text': "And I'm going to double click it again and move it down like this and move this like this over here.", 'start': 2119.761, 'duration': 6.728}, {'end': 2130.694, 'text': "So if it's false, we are going to calculate it like this.", 'start': 2127.552, 'duration': 3.142}, {'end': 2137.919, 'text': 'We are first going to get, and actually I can move it up here because we are going to calculate it over here.', 'start': 2130.874, 'duration': 7.045}, {'end': 2142.422, 'text': "We're going to say get actor forward vector like this.", 'start': 2138.199, 'duration': 4.223}, {'end': 2147.886, 'text': "So we're going to get the actors forward vector and we're also going to get the move right, get move right.", 'start': 2142.462, 'duration': 5.424}, {'end': 2151.248, 'text': 'And we are going to multiply these two.', 'start': 2149.106, 'duration': 2.142}, {'end': 2153.97, 'text': "So we're going to say from here, multiply by float.", 'start': 2151.328, 'duration': 2.642}, {'end': 2157.012, 'text': "So we're going to multiply this vector by this float.", 'start': 2154.25, 'duration': 2.762}, {'end': 2162.274, 'text': 'And from there, we are going to normalize this vector, so normalize.', 'start': 2158.68, 'duration': 3.594}], 'summary': 'Demonstrating how to create and manipulate vectors in a visual setting for clarity and readability.', 'duration': 101.394, 'max_score': 2060.88, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY2060880.jpg'}, {'end': 2353.82, 'src': 'heatmap', 'start': 2253.809, 'weight': 0.877, 'content': [{'end': 2255.15, 'text': 'And there you go.', 'start': 2253.809, 'duration': 1.341}, {'end': 2256.91, 'text': 'So compile and save that.', 'start': 2255.67, 'duration': 1.24}, {'end': 2259.711, 'text': "Basically again what we're doing, based on the puzzle mode.", 'start': 2257.29, 'duration': 2.421}, {'end': 2263.832, 'text': "if it's true, get the move right, make a vector out of it over here,", 'start': 2259.711, 'duration': 4.121}, {'end': 2271.634, 'text': 'which is basically going to create a vector with the value for the x that we have over here, which is either one or negative one, because over here,', 'start': 2263.832, 'duration': 7.802}, {'end': 2273.935, 'text': 'you see, we have minus one or one.', 'start': 2271.634, 'duration': 2.301}, {'end': 2277.016, 'text': 'and all other values are going to be zero.', 'start': 2274.975, 'duration': 2.041}, {'end': 2280.877, 'text': "And then we're going to set that to the move direction over here.", 'start': 2277.836, 'duration': 3.041}, {'end': 2284.218, 'text': "if it's false, then we're going to get the actor forward vector.", 'start': 2280.877, 'duration': 3.341}, {'end': 2285.399, 'text': 'then get the move right.', 'start': 2284.218, 'duration': 1.181}, {'end': 2286.499, 'text': 'multiply these two.', 'start': 2285.399, 'duration': 1.1}, {'end': 2289.96, 'text': 'And from there, normalize the vector and plug it into the move direction.', 'start': 2286.659, 'duration': 3.301}, {'end': 2299.584, 'text': "And over here, then we're going to add that move direction normalized to the add movement input, which is going to move our ball or character.", 'start': 2290.46, 'duration': 9.124}, {'end': 2306.326, 'text': "And I'm going to right click on this create a comment from section and this one is going to be move mint update, there you go.", 'start': 2299.624, 'duration': 6.702}, {'end': 2308.127, 'text': 'And you can compile and save this.', 'start': 2306.406, 'duration': 1.721}, {'end': 2312.15, 'text': 'Now the last thing that we need to do in order to make this work, to run it,', 'start': 2308.868, 'duration': 3.282}, {'end': 2322.665, 'text': 'let me just move these comments or the sections over here and probably move this little bit up over here, because now, over here in the tick event,', 'start': 2312.15, 'duration': 10.515}, {'end': 2325.927, 'text': 'is where we are going to call the movement update.', 'start': 2322.665, 'duration': 3.262}, {'end': 2326.588, 'text': 'There you go.', 'start': 2326.107, 'duration': 0.481}, {'end': 2331.73, 'text': "Because the tick event is called every frame basically, it's like update in Unity.", 'start': 2327.328, 'duration': 4.402}, {'end': 2337.754, 'text': 'So compile and save that and it will call every frame this event or you can think of it as a function as well.', 'start': 2331.77, 'duration': 5.984}, {'end': 2341.496, 'text': 'And it will execute all the code that we have just explained.', 'start': 2338.154, 'duration': 3.342}, {'end': 2345.697, 'text': 'So now we can go back over here in our example map.', 'start': 2342.316, 'duration': 3.381}, {'end': 2353.82, 'text': "And if I hit the play button, and now you'll see that the ball is moving, of course, we cannot jump and the ball is not rotating.", 'start': 2345.757, 'duration': 8.063}], 'summary': "Code implements movement logic, updating ball's position in game.", 'duration': 100.011, 'max_score': 2253.809, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY2253809.jpg'}, {'end': 2391.656, 'src': 'embed', 'start': 2367.544, 'weight': 3, 'content': [{'end': 2374.986, 'text': "in the case of because this is a 2.5 D platformer, we're moving forward and backwards, backwards by pressing a forward by pressing the.", 'start': 2367.544, 'duration': 7.442}, {'end': 2376.327, 'text': 'you get the point yada, yada, yada.', 'start': 2374.986, 'duration': 1.341}, {'end': 2378.848, 'text': 'if something is not clear, make sure to ask in the comment below.', 'start': 2376.327, 'duration': 2.521}, {'end': 2383.849, 'text': "So I can explain this before you proceed to create other things that we're going to do right now.", 'start': 2379.168, 'duration': 4.681}, {'end': 2387.953, 'text': 'Moving forward, the next step is to go back in our player ball.', 'start': 2384.409, 'duration': 3.544}, {'end': 2391.656, 'text': 'And now that we are moving, let us rotate the ball.', 'start': 2388.053, 'duration': 3.603}], 'summary': '2.5d platformer involves moving forward and backward, and rotating the ball.', 'duration': 24.112, 'max_score': 2367.544, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY2367544.jpg'}, {'end': 2438.458, 'src': 'embed', 'start': 2408.011, 'weight': 5, 'content': [{'end': 2410.813, 'text': 'And also you can think of these custom events, something similar like a function.', 'start': 2408.011, 'duration': 2.802}, {'end': 2411.714, 'text': 'I already mentioned that.', 'start': 2410.813, 'duration': 0.901}, {'end': 2414.637, 'text': 'because you can basically create them like this, you can call them over here.', 'start': 2411.714, 'duration': 2.923}, {'end': 2416.178, 'text': 'Of course we can.', 'start': 2414.837, 'duration': 1.341}, {'end': 2423.985, 'text': 'as you can see over here, we have this place, a new node, but basically This can allow us to have a delegate on this event,', 'start': 2416.178, 'duration': 7.807}, {'end': 2426.187, 'text': "but I'm not going to go into that right now.", 'start': 2423.985, 'duration': 2.202}, {'end': 2427.748, 'text': 'We will do that in another video.', 'start': 2426.347, 'duration': 1.401}, {'end': 2430.07, 'text': 'Anyways, what we are going to do from the rotate ball.', 'start': 2427.868, 'duration': 2.202}, {'end': 2434.814, 'text': "First thing from here, I'm going to drag a node and I'm going to set the flat velocity.", 'start': 2430.631, 'duration': 4.183}, {'end': 2438.458, 'text': 'And what we are going to set in the flat velocity.', 'start': 2435.815, 'duration': 2.643}], 'summary': 'Introduction to custom events and setting flat velocity for rotating the ball.', 'duration': 30.447, 'max_score': 2408.011, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY2408011.jpg'}], 'start': 1877.647, 'title': 'Game development input mapping and movement setup', 'summary': 'Covers creating input mappings for actions, setting up axis mappings for left and right movement, and creating custom events in the ball player blueprint, along with the process of updating movement in a 2.5d platformer, involving condition-based movement, vector manipulation, and function execution, with a demonstration of left and right movement, and the utilization of custom events.', 'chapters': [{'end': 2022.457, 'start': 1877.647, 'title': 'Game development input mapping and movement setup', 'summary': 'Covers creating input mappings for actions like jumping and executing specific actions with keyboard keys, setting up axis mappings for left and right movement, and creating custom events in the ball player blueprint.', 'duration': 144.81, 'highlights': ['Creating input mappings for actions like jumping and executing specific actions with keyboard keys. actions: jumping, executing specific actions, keyboard keys', 'Setting up axis mappings for left and right movement, using A and D keys to trigger the movement. axis mappings: left and right movement, A and D keys', 'Creating custom events in the ball player blueprint for additional functionality. custom events, additional functionality']}, {'end': 2426.187, 'start': 2023.057, 'title': 'Movement update in 2.5d platformer', 'summary': 'Explains the process of updating movement in a 2.5d platformer, involving condition-based movement, vector manipulation, and function execution in unreal engine, with a demonstration of left and right movement, and the utilization of custom events.', 'duration': 403.13, 'highlights': ['The chapter explains the process of updating movement in a 2.5D platformer, involving condition-based movement, vector manipulation, and function execution in Unreal Engine. The chapter provides insights into updating movement in a 2.5D platformer using condition-based movement and vector manipulation within Unreal Engine.', 'The demonstration involves left and right movement based on true or false conditions, with the utilization of custom events for movement and rotation. The demonstration showcases left and right movement based on true or false conditions, and the utilization of custom events for movement and rotation in Unreal Engine.', 'The explanation also emphasizes the usage of custom events, likening them to functions, and their role in executing specific actions within the game. The explanation emphasizes the usage of custom events, likening them to functions, and their role in executing specific actions within the game development process.']}], 'duration': 548.54, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY1877647.jpg', 'highlights': ['Creating input mappings for actions like jumping and executing specific actions with keyboard keys.', 'Setting up axis mappings for left and right movement, using A and D keys to trigger the movement.', 'Creating custom events in the ball player blueprint for additional functionality.', 'The chapter explains the process of updating movement in a 2.5D platformer, involving condition-based movement, vector manipulation, and function execution in Unreal Engine.', 'The demonstration involves left and right movement based on true or false conditions, with the utilization of custom events for movement and rotation.', 'The explanation also emphasizes the usage of custom events, likening them to functions, and their role in executing specific actions within the game.']}, {'end': 4301.701, 'segs': [{'end': 2825.023, 'src': 'embed', 'start': 2803.606, 'weight': 4, 'content': [{'end': 2812.668, 'text': "But this is just to show you that you don't need to know every single thing and every single aspect about game development in order for you to be a game developer.", 'start': 2803.606, 'duration': 9.062}, {'end': 2815.571, 'text': 'So you can, you know, just find some solutions online.', 'start': 2812.688, 'duration': 2.883}, {'end': 2821.218, 'text': 'if they work for you, they work great, then you can just proceed, you know, further in your game.', 'start': 2815.571, 'duration': 5.647}, {'end': 2825.023, 'text': 'So what we are going to do next is we are going to take the ball mesh.', 'start': 2821.779, 'duration': 3.244}], 'summary': "Game development doesn't require knowing every detail. online solutions can help progress.", 'duration': 21.417, 'max_score': 2803.606, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY2803606.jpg'}, {'end': 3054.656, 'src': 'embed', 'start': 3024.762, 'weight': 0, 'content': [{'end': 3026.863, 'text': 'set world rotation for the ball.', 'start': 3024.762, 'duration': 2.101}, {'end': 3033.886, 'text': 'Which means that we can basically go now over here and I can hit the play button and you will see now that if we move,', 'start': 3027.503, 'duration': 6.383}, {'end': 3035.927, 'text': 'you see how the ball is rotating.', 'start': 3033.886, 'duration': 2.041}, {'end': 3041.35, 'text': 'And notice how the ball is rotating only, you see when we go left, it is rotating backwards.', 'start': 3036.347, 'duration': 5.003}, {'end': 3043.671, 'text': 'If we go forward, it is rotating forward.', 'start': 3041.37, 'duration': 2.301}, {'end': 3049.814, 'text': "So that is why we're using that get right vector, this right over here, get right vector.", 'start': 3044.031, 'duration': 5.783}, {'end': 3054.656, 'text': "That's why we're using that because we are rotating here in this direction and here in this direction.", 'start': 3049.854, 'duration': 4.802}], 'summary': 'Program rotates ball based on movement, using get right vector.', 'duration': 29.894, 'max_score': 3024.762, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY3024762.jpg'}, {'end': 3184.352, 'src': 'embed', 'start': 3158.292, 'weight': 3, 'content': [{'end': 3164.275, 'text': 'what we need to do is select the character movement and change some things over here, such as the gravity scale.', 'start': 3158.292, 'duration': 5.983}, {'end': 3167.717, 'text': "for example, we're going to set that to 3.5.", 'start': 3164.275, 'duration': 3.442}, {'end': 3171.739, 'text': 'We are also going to set over here max step height.', 'start': 3167.717, 'duration': 4.022}, {'end': 3174.28, 'text': "we're going to leave that so walkable floor angle.", 'start': 3171.739, 'duration': 2.541}, {'end': 3179.822, 'text': 'we can leave that set at 45, just to a random number, maximum walk speed.', 'start': 3174.28, 'duration': 5.542}, {'end': 3184.352, 'text': "I'm going to set that to 800 instead of 600..", 'start': 3179.822, 'duration': 4.53}], 'summary': 'Adjust character movement: gravity scale to 3.5, max walk speed to 800.', 'duration': 26.06, 'max_score': 3158.292, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY3158292.jpg'}, {'end': 3250.076, 'src': 'embed', 'start': 3227.365, 'weight': 1, 'content': [{'end': 3235.482, 'text': 'So maximum movement speed, custom movement speed, basically how maximally the speed can be by which we are moving.', 'start': 3227.365, 'duration': 8.117}, {'end': 3238.229, 'text': 'Over here for the air control.', 'start': 3236.548, 'duration': 1.681}, {'end': 3241.511, 'text': 'we already explained that jump z velocity, initial velocity.', 'start': 3238.229, 'duration': 3.282}, {'end': 3247.514, 'text': 'so basically, on the z, when we jump, how high that velocity is, can walk off ledges when crouching.', 'start': 3241.511, 'duration': 6.003}, {'end': 3250.076, 'text': 'we already explained that sun and so forth, yada, yada, yada.', 'start': 3247.514, 'duration': 2.562}], 'summary': 'Max movement speed, jump z velocity, crouching ability explained.', 'duration': 22.711, 'max_score': 3227.365, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY3227365.jpg'}, {'end': 3573.75, 'src': 'embed', 'start': 3546.737, 'weight': 2, 'content': [{'end': 3552.879, 'text': 'And it is going to detect anything that we touch within that trace line.', 'start': 3546.737, 'duration': 6.142}, {'end': 3560.824, 'text': "So what's gonna happen after that is that we are going to go in a branch, and we are going to detect if we have touched something.", 'start': 3553.34, 'duration': 7.484}, {'end': 3567.547, 'text': "So here, return value, it's going to be plugged in the condition, which means basically if we did touch something, because you see,", 'start': 3560.884, 'duration': 6.663}, {'end': 3573.75, 'text': 'here does a collision trace along the given line and returns the first blocking hit encountered.', 'start': 3567.547, 'duration': 6.203}], 'summary': 'The system detects anything touched within a trace line and returns the first blocking hit encountered.', 'duration': 27.013, 'max_score': 3546.737, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY3546737.jpg'}, {'end': 3616.123, 'src': 'embed', 'start': 3590.821, 'weight': 5, 'content': [{'end': 3597.045, 'text': 'Now, what this will do is, as you can see, set a pending launch velocity on the character.', 'start': 3590.821, 'duration': 6.224}, {'end': 3606.372, 'text': "this velocity will be processed on the next character movement component tick and we'll set it the falling in and we'll set it to the falling state.", 'start': 3597.045, 'duration': 9.327}, {'end': 3610.977, 'text': 'So yeah, Basically, what this means it will propel the character simple as that.', 'start': 3606.432, 'duration': 4.545}, {'end': 3616.123, 'text': 'But as you can see, the explanations here can be complicated, but this will just propel the character.', 'start': 3611.017, 'duration': 5.106}], 'summary': 'Setting pending launch velocity on the character to propel it in the falling state.', 'duration': 25.302, 'max_score': 3590.821, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY3590821.jpg'}, {'end': 3940.279, 'src': 'embed', 'start': 3908.58, 'weight': 6, 'content': [{'end': 3911.824, 'text': 'But this, as you can see, will stabilize the character.', 'start': 3908.58, 'duration': 3.244}, {'end': 3917.8, 'text': 'And if I go back again, you will notice so anytime you need some stabilization, especially in the air.', 'start': 3911.904, 'duration': 5.896}, {'end': 3921.363, 'text': 'you can use that sign to convert that float into a more stabilized value.', 'start': 3917.8, 'duration': 3.563}, {'end': 3926.846, 'text': 'Because now as you can see, pay attention, it only allows it to go to minus one and one.', 'start': 3921.403, 'duration': 5.443}, {'end': 3929.088, 'text': 'As you can see if I hover over.', 'start': 3927.467, 'duration': 1.621}, {'end': 3933.911, 'text': 'let returns minus one if a is greater than actions, if a is less than zero.', 'start': 3929.088, 'duration': 4.823}, {'end': 3940.279, 'text': 'excuse me, zero if a is zero, and plus one if a is greater than zero.', 'start': 3933.911, 'duration': 6.368}], 'summary': 'Using a sign to stabilize float values between -1 and 1 for better control and stability in the air.', 'duration': 31.699, 'max_score': 3908.58, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY3908580.jpg'}, {'end': 4232.129, 'src': 'embed', 'start': 4200.243, 'weight': 7, 'content': [{'end': 4205.047, 'text': 'if the power is less than or equal to one high, actually zero, excuse me, not 100..', 'start': 4200.243, 'duration': 4.804}, {'end': 4210.771, 'text': "So if the power is less than or equal to zero, that means we don't have any more power we have died.", 'start': 4205.047, 'duration': 5.724}, {'end': 4218.076, 'text': 'So from here, if that is true, we are going to say set is that check the checkbox to make it true.', 'start': 4211.512, 'duration': 6.564}, {'end': 4222.96, 'text': 'And from there, we are going to change ball material color.', 'start': 4218.857, 'duration': 4.103}, {'end': 4232.129, 'text': 'And the material name or parameter name is going to be is on and the value is going to be zero, which is going to, you know,', 'start': 4224.306, 'duration': 7.823}], 'summary': 'If power is less than or equal to zero, set checkbox to true and change ball material color.', 'duration': 31.886, 'max_score': 4200.243, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY4200243.jpg'}], 'start': 2426.347, 'title': 'Implementing ball movement and character mechanics', 'summary': 'Covers creating flat velocity for ball movement, setting current speed and rotation amount, implementing ball rotation and jump mechanics, line trace for detecting collisions and character movement, and game development aspects including character stabilization and power damage.', 'chapters': [{'end': 2490.968, 'start': 2426.347, 'title': 'Creating flat velocity for ball movement', 'summary': 'Explains how to create flat velocity for ball movement, including getting velocity, breaking it into separate components, and creating a new vector to enable forward and backward movement.', 'duration': 64.621, 'highlights': ['Creating a new vector to enable forward and backward movement of the ball by breaking the velocity into separate components and plugging them into a make vector node.', 'Explaining the process of setting flat velocity for the ball movement by getting the velocity from the actor and using it to create a new vector with separate x and y components.', 'Emphasizing the importance of not plugging in the Z component when moving the ball forward and backward to achieve the desired flat velocity.']}, {'end': 2730.512, 'start': 2490.988, 'title': 'Setting current speed and rotation amount', 'summary': 'Introduces setting the current speed and rotation amount in a 3d environment, using vector length and ball rotation rate to calculate the rotation amount for the moving object.', 'duration': 239.524, 'highlights': ['Setting the rotation amount using flat velocity, vector length, ball rotation rate, and pi, and then multiplying it with world delta seconds. The rotation amount is calculated using the flat velocity, vector length, ball rotation rate, and pi, and then multiplied with the world delta seconds.', 'Testing the current speed to determine if the object is moving, and setting the rotation amount based on the result. The script tests the current speed to determine if the object is moving and sets the rotation amount based on the result, using the ball rotation rate and pi.', 'Explaining the concept of vector length and its relation to the x, y, and z coordinates in a 3D environment. The chapter provides an explanation of the vector length and its relation to the x, y, and z coordinates in a 3D environment, illustrating how it forms a single line from the three lengths.']}, {'end': 3360.412, 'start': 2730.772, 'title': 'Implementing ball rotation and jump mechanics', 'summary': 'Discusses the implementation of ball rotation by using get world delta seconds and the ball rotation rate, and the creation of a jump mechanic by utilizing character movement features, resulting in a smoother ball movement and higher jumps.', 'duration': 629.64, 'highlights': ['The implementation of ball rotation is achieved by using get world delta seconds, multiplying it with the ball rotation rate, and adding that to the rotation amount, resulting in smoother ball movement. Improved ball rotation mechanics', 'The creation of a jump mechanic involves checking if the ball is falling using the character movement component and performing a jump if the condition is met, leading to higher jumps for the ball. Enhanced jump mechanics', 'The utilization of line trace by channel is explained for detecting obstacles while in the air, enabling the implementation of advanced movement mechanics for the ball. Introduction of obstacle detection mechanism', 'Adjustments to character movement settings such as gravity scale, max step height, and jump z velocity result in improved ball movement and higher jumping capabilities. Optimized character movement settings', 'The chapter highlights the importance of leveraging existing solutions and not needing to understand every aspect of game development to be successful, promoting efficient problem-solving in game development. Emphasis on leveraging existing solutions']}, {'end': 3816.196, 'start': 3360.952, 'title': 'Line trace and character movement', 'summary': 'Discusses implementing a line trace to detect collisions and propel a character, involving calculations for start and end points, tracing the line, detecting collisions, and launching the character with specific velocities, enhancing the understanding of line trace and character movement implementation.', 'duration': 455.244, 'highlights': ['Implementing line trace to detect collisions and launch character The chapter covers the process of implementing a line trace to detect collisions and launching the character with specific velocities, enhancing the understanding of line trace and character movement implementation.', 'Calculation for start and end points of the line trace The transcript explains the calculation for the start and end points of the line trace, involving adding and subtracting values to ensure the correct start and end positions for the line trace.', 'Detailed explanation of launching the character with specific velocities The chapter provides a detailed explanation of launching the character with specific velocities, including the use of specific velocity values and overriding all the axes for the new velocity.']}, {'end': 4301.701, 'start': 3818.037, 'title': 'Game development: character stabilization and power damage', 'summary': 'Discusses character stabilization in the air using a sign to limit values between -1 and 1, and implementing power and damage mechanics to control material color change based on power levels.', 'duration': 483.664, 'highlights': ['Implementing character stabilization using a sign to limit values between -1 and 1, enabling smooth jumping and preventing erratic movements.', 'Implementing power and damage mechanics to control material color change based on power levels, with a default power value of 100.', 'Multiplying the damage with the world delta seconds to smooth the value out, ensuring gradual power depletion and preventing abrupt changes.', 'Using the clamp function to restrict the power value between a minimum of 0 and a maximum of 100, preventing it from going below or above these limits.', 'Utilizing the jump function to enable smooth jumping with the ball, enhancing user experience and gameplay mechanics.']}], 'duration': 1875.354, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY2426347.jpg', 'highlights': ['Improved ball rotation mechanics', 'Enhanced jump mechanics', 'Introduction of obstacle detection mechanism', 'Optimized character movement settings', 'Emphasis on leveraging existing solutions', 'Detailed explanation of launching the character with specific velocities', 'Implementing character stabilization using a sign to limit values between -1 and 1, enabling smooth jumping and preventing erratic movements', 'Implementing power and damage mechanics to control material color change based on power levels, with a default power value of 100']}, {'end': 5462.835, 'segs': [{'end': 4393.354, 'src': 'embed', 'start': 4368.894, 'weight': 0, 'content': [{'end': 4377.741, 'text': 'And then we can move this over here, get the energy and the default value of the energy, by the way, is 100, as you can see over here.', 'start': 4368.894, 'duration': 8.847}, {'end': 4381.905, 'text': 'And now that we have the energy, we are going to subtract from it.', 'start': 4378.682, 'duration': 3.223}, {'end': 4383.006, 'text': 'So minus float.', 'start': 4382.145, 'duration': 0.861}, {'end': 4393.354, 'text': 'And now that we have that we are going to plug this in over here and clamp the value, which is last thing that we need to do clamp the float.', 'start': 4384.167, 'duration': 9.187}], 'summary': 'Energy default value is 100, subtract and clamp float value.', 'duration': 24.46, 'max_score': 4368.894, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY4368894.jpg'}, {'end': 4720.165, 'src': 'embed', 'start': 4689.413, 'weight': 1, 'content': [{'end': 4691.935, 'text': 'So that is how it is going to look like.', 'start': 4689.413, 'duration': 2.522}, {'end': 4694.216, 'text': 'This is for the power bar.', 'start': 4692.595, 'duration': 1.621}, {'end': 4697.259, 'text': 'Now going back to the energy bar.', 'start': 4694.657, 'duration': 2.602}, {'end': 4702.302, 'text': "So let's select the energy bar, we're also going to leave the anchor at the top left corner.", 'start': 4697.359, 'duration': 4.943}, {'end': 4706.325, 'text': "And over here, we're going to set the position x to 24.", 'start': 4703.043, 'duration': 3.282}, {'end': 4708.587, 'text': 'The position y is going to be 56.', 'start': 4706.325, 'duration': 2.262}, {'end': 4710.708, 'text': 'The size x 128 and the size y 24.', 'start': 4708.587, 'duration': 2.121}, {'end': 4711.249, 'text': 'There you go.', 'start': 4710.708, 'duration': 0.541}, {'end': 4720.165, 'text': "Now for this bad boy, we're also going to change the color.", 'start': 4716.181, 'duration': 3.984}], 'summary': 'Designing an energy bar with position (24, 56) and size (128, 24).', 'duration': 30.752, 'max_score': 4689.413, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY4689413.jpg'}, {'end': 4884.029, 'src': 'embed', 'start': 4851.206, 'weight': 2, 'content': [{'end': 4853.367, 'text': 'So these two nodes were spawning the UI in the game.', 'start': 4851.206, 'duration': 2.161}, {'end': 4859.332, 'text': "And we can do it either here, we can also do it over here in the game mode, it's not important.", 'start': 4853.988, 'duration': 5.344}, {'end': 4864.076, 'text': 'So in the game mode in the event graph, Over here, we can delete the tick event.', 'start': 4859.473, 'duration': 4.603}, {'end': 4874.282, 'text': 'And in the beginner play, we can do something like create widget like this or create the widget and the widget that we want to create is BP game hut.', 'start': 4864.296, 'duration': 9.986}, {'end': 4877.684, 'text': 'And after that, add to view port.', 'start': 4874.862, 'duration': 2.822}, {'end': 4884.029, 'text': 'And who are we adding to viewport? Well, the returning value, which we are going to put over here.', 'start': 4878.724, 'duration': 5.305}], 'summary': 'Two nodes spawn ui in game, using game mode and beginner play, creating bp game hut widget and adding to viewport.', 'duration': 32.823, 'max_score': 4851.206, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY4851206.jpg'}], 'start': 4301.861, 'title': 'Implementing game mechanics', 'summary': 'Covers implementing energy damage logic, creating game hud and ui elements, and spawning ui and creating interactions. it includes details on setting energy values, adding progress bars, and creating interactions such as hiding and showing interaction text.', 'chapters': [{'end': 4493.553, 'start': 4301.861, 'title': 'Implementing energy damage logic', 'summary': 'Discusses implementing energy damage logic, including setting energy values, subtracting energy, and explaining how positive and negative values correspond to damage and healing, with a call to experiment and dig deeper into the concept.', 'duration': 191.692, 'highlights': ['Setting energy values and subtracting energy The speaker explains the process of setting the energy value to 100, subtracting from it, and clamping the value between 0 and 100.', 'Positive and negative values for damage and healing The speaker elaborates on how passing positive and negative numbers in the energy damage parameter corresponds to dealing damage and healing, encouraging the audience to experiment and explore the concept further.', 'Calling energy damage with a specific value The chapter demonstrates calling the energy damage function with a negative value of 25 to simulate healing, emphasizing the importance of experimentation and using the print function.']}, {'end': 4824.617, 'start': 4494.673, 'title': 'Creating game hud and ui elements', 'summary': 'Covers creating a game hud by adding progress bars for power and energy, along with an interact text, and explains the settings for each element in detail.', 'duration': 329.944, 'highlights': ['Creating progress bars for power and energy The process involves setting the anchor, position, size, color, and appearance for the power and energy bars.', 'Adding an interact text Explains the settings for the text block, including anchor position, size, and content.', 'Encouraging experimentation and customization Emphasizes the flexibility to experiment and create customized UI elements, fostering a deeper understanding of the concepts.']}, {'end': 5462.835, 'start': 4824.657, 'title': 'Spawning ui and creating interactions', 'summary': 'Discusses spawning ui in a game mode and creating interactions, including creating a widget, adding it to the viewport, setting up a player reference, hiding and showing interaction text, updating power and energy bars, and creating a laser blueprint.', 'duration': 638.178, 'highlights': ['The process of spawning UI in a game mode involves creating a widget, selecting the appropriate class, and adding it to the viewport, resulting in the UI being visible in the game.', 'Setting up a player reference involves getting the player pawn, casting it to the player character blueprint, and setting the game HUD reference in the player character blueprint, enabling the communication between the player and the UI.', "Hiding and showing interaction text is achieved through custom events, with 'show interaction text' and 'hide interaction text' custom events being utilized to set the visibility of the text block based on specific conditions.", "Updating the power and energy bars involves retrieving the player's power and energy values and dividing them by 100 to set the percent of the bars, ensuring that the UI elements reflect the current status of the player's power and energy.", "Creating a laser blueprint involves adding a particle system component, specifically the 'electricity arc' template, to the blueprint, setting it as the default scene, and compiling the changes."]}], 'duration': 1160.974, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY4301861.jpg', 'highlights': ['Setting energy values and subtracting energy The speaker explains the process of setting the energy value to 100, subtracting from it, and clamping the value between 0 and 100.', 'Creating progress bars for power and energy The process involves setting the anchor, position, size, color, and appearance for the power and energy bars.', 'The process of spawning UI in a game mode involves creating a widget, selecting the appropriate class, and adding it to the viewport, resulting in the UI being visible in the game.']}, {'end': 6079.057, 'segs': [{'end': 5507.099, 'src': 'embed', 'start': 5463.495, 'weight': 0, 'content': [{'end': 5473.321, 'text': "Now, if we go back here inside of our example map And what I'm going to do is let me just go over here in the world outliner I want to create a new folder.", 'start': 5463.495, 'duration': 9.826}, {'end': 5476.463, 'text': 'And that folder is going to be lasers.', 'start': 5474.562, 'duration': 1.901}, {'end': 5478.104, 'text': 'who is going to hold our lasers?', 'start': 5476.463, 'duration': 1.641}, {'end': 5482.587, 'text': "and I'm going to put this first laser over here and I'm going to put it under this one.", 'start': 5478.104, 'duration': 4.483}, {'end': 5488.111, 'text': 'So under the folder, and the position for the laser is going to be 730 for the x for the y is zero and for the z 821.', 'start': 5482.647, 'duration': 5.464}, {'end': 5488.431, 'text': 'There you go.', 'start': 5488.111, 'duration': 0.32}, {'end': 5496.237, 'text': 'voila So this is where our laser is going to be.', 'start': 5493.396, 'duration': 2.841}, {'end': 5502.118, 'text': "Now if we were to run the game, of course, nothing's gonna happen, we're just going to come here closer, you're going to see the laser like this.", 'start': 5496.297, 'duration': 5.821}, {'end': 5507.099, 'text': 'But the laser needs to fire like this over here, not like this.', 'start': 5502.658, 'duration': 4.441}], 'summary': "Creating a folder 'lasers' to hold lasers at position (730, 0, 821) for game implementation.", 'duration': 43.604, 'max_score': 5463.495, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY5463495.jpg'}, {'end': 5599.246, 'src': 'embed', 'start': 5543.514, 'weight': 3, 'content': [{'end': 5551.519, 'text': 'laser direction is going to be a vector, which is going to determine the direction of the laser and the trace max length is going to be a float.', 'start': 5543.514, 'duration': 8.005}, {'end': 5558.643, 'text': 'So compile and save that because now for the trace maximum length, we need to set the value for it.', 'start': 5551.619, 'duration': 7.024}, {'end': 5561.165, 'text': 'So the value the default value is going to be 100, 000.', 'start': 5558.763, 'duration': 2.402}, {'end': 5563.366, 'text': 'So 100, 000 is going to be for the maximum length.', 'start': 5561.165, 'duration': 2.201}, {'end': 5571.539, 'text': 'And what we need to do over here.', 'start': 5563.386, 'duration': 8.153}, {'end': 5583.202, 'text': 'in the tick event, we are going to create a line, trace by channel, same as what we did with our ball that was enabling us to jump,', 'start': 5571.539, 'duration': 11.663}, {'end': 5589.984, 'text': "but this time we're doing this with the laser so that we can detect the player and actually deal damage with or to the player.", 'start': 5583.202, 'duration': 6.782}, {'end': 5599.246, 'text': 'So over here, I am going to get the actor location and this is the location of the current actor which is our laser.', 'start': 5590.404, 'duration': 8.842}], 'summary': 'Laser direction and max trace length set, default length 100,000, used to detect and damage player.', 'duration': 55.732, 'max_score': 5543.514, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY5543514.jpg'}, {'end': 5875.752, 'src': 'embed', 'start': 5847.214, 'weight': 5, 'content': [{'end': 5852.956, 'text': 'And if we hit the ball, what we need to do is we need to get from the ball the power damage.', 'start': 5847.214, 'duration': 5.742}, {'end': 5862.06, 'text': "So from here, we're going to say power damage, as you can see, which is our function, and the damage is going to be 50.", 'start': 5853.036, 'duration': 9.024}, {'end': 5864.022, 'text': 'and I can compile and save that there we go.', 'start': 5862.06, 'duration': 1.962}, {'end': 5869.226, 'text': 'And if I go over here in our player ball, and this is our energy damage, this is the power damage.', 'start': 5864.322, 'duration': 4.904}, {'end': 5875.752, 'text': "So we're going to take the damage multiplied with the world, get world delta seconds, then subtract from the power,", 'start': 5869.266, 'duration': 6.486}], 'summary': 'Function calculates 50 power damage for the ball, affecting energy damage.', 'duration': 28.538, 'max_score': 5847.214, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY5847214.jpg'}], 'start': 5463.495, 'title': 'Creating and implementing laser in unreal engine', 'summary': 'Covers creating a new folder for lasers, positioning the laser at coordinates (730, 0, 821), addressing its firing direction, implementing a laser damage system with parameters like trace length and direction, creating line traces, detecting collisions with the player, and applying 50-point damage if the player is hit.', 'chapters': [{'end': 5507.099, 'start': 5463.495, 'title': 'Creating a laser in unreal engine', 'summary': "Discusses the process of creating a new folder for lasers in unreal engine, positioning the laser at coordinates (730, 0, 821) and addressing the direction of the laser's firing.", 'duration': 43.604, 'highlights': ["Creating a new folder named 'lasers' in the world outliner to organize the lasers.", 'Positioning the laser at coordinates (730, 0, 821) in the game world.', "Addressing the direction of the laser's firing to ensure it fires in the desired direction."]}, {'end': 6079.057, 'start': 5507.959, 'title': 'Implementing laser damage system', 'summary': 'Details the process of creating a laser damage system in the game engine, including setting up parameters such as trace length and direction, creating line traces, detecting collisions with the player, and applying damage if the player is hit, with a 50-point damage value.', 'duration': 571.098, 'highlights': ['Setting up parameters for trace length and direction Two variables are created: trace max length (float) and laser direction (vector) with a default trace max length of 100,000 units.', "Creating line traces to detect player collisions A line trace by channel is used to detect collisions with the player, with the laser direction and trace maximum length determining the end trace channel, and the actor's location as the start trace channel.", 'Applying damage to the player upon collision Upon detecting collision with the player, the system sets the beam source and target points, casts to the BP player ball, applies 50 points of damage, and visually represents the power decrease in the game HUD.']}], 'duration': 615.562, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY5463495.jpg', 'highlights': ["Creating a new folder named 'lasers' in the world outliner to organize the lasers.", 'Positioning the laser at coordinates (730, 0, 821) in the game world.', "Addressing the direction of the laser's firing to ensure it fires in the desired direction.", 'Setting up parameters for trace length and direction Two variables are created: trace max length (float) and laser direction (vector) with a default trace max length of 100,000 units.', "Creating line traces to detect player collisions A line trace by channel is used to detect collisions with the player, with the laser direction and trace maximum length determining the end trace channel, and the actor's location as the start trace channel.", 'Applying damage to the player upon collision Upon detecting collision with the player, the system sets the beam source and target points, casts to the BP player ball, applies 50 points of damage, and visually represents the power decrease in the game HUD.']}, {'end': 7881.495, 'segs': [{'end': 6203.635, 'src': 'embed', 'start': 6179.924, 'weight': 1, 'content': [{'end': 6187.388, 'text': 'First things first, select the interactive block here over here at the top, click on Add component and filter for the physics.', 'start': 6179.924, 'duration': 7.464}, {'end': 6191.129, 'text': 'physics constraint, there you go.', 'start': 6188.208, 'duration': 2.921}, {'end': 6195.992, 'text': 'And drag the physics constraint to be the root object.', 'start': 6191.75, 'duration': 4.242}, {'end': 6203.635, 'text': 'Now, what the hell is a physics constraint if you hover over, this is effectively a joint that allows you to connect two rigid bodies together.', 'start': 6196.432, 'duration': 7.203}], 'summary': 'Tutorial: physics constraint allows connection of two rigid bodies.', 'duration': 23.711, 'max_score': 6179.924, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY6179924.jpg'}, {'end': 6567.516, 'src': 'embed', 'start': 6537.24, 'weight': 2, 'content': [{'end': 6546.306, 'text': 'And if I position the first one is going to be at 2806 zero for the Y and for the Z 1125.', 'start': 6537.24, 'duration': 9.066}, {'end': 6546.907, 'text': 'There you go.', 'start': 6546.306, 'duration': 0.601}, {'end': 6549.468, 'text': 'We are also going to rescale it.', 'start': 6547.307, 'duration': 2.161}, {'end': 6553.391, 'text': 'So over here, click on the lock icon for the scale.', 'start': 6549.488, 'duration': 3.903}, {'end': 6556.792, 'text': 'And over here, the scale is going to be 1.5.', 'start': 6554.011, 'duration': 2.781}, {'end': 6557.432, 'text': 'There you go.', 'start': 6556.792, 'duration': 0.64}, {'end': 6560.233, 'text': 'So compile that or save the current.', 'start': 6557.952, 'duration': 2.281}, {'end': 6563.534, 'text': 'If I hit the play button, we can come close to it.', 'start': 6560.273, 'duration': 3.261}, {'end': 6567.516, 'text': 'And we can jump on it and all of that stuff.', 'start': 6564.215, 'duration': 3.301}], 'summary': 'Adjustments made to position and scale: y at 2806, z at 1125, and scaling by 1.5.', 'duration': 30.276, 'max_score': 6537.24, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY6537240.jpg'}, {'end': 6983.787, 'src': 'embed', 'start': 6948.902, 'weight': 0, 'content': [{'end': 6950.923, 'text': 'So first select the detection trigger.', 'start': 6948.902, 'duration': 2.021}, {'end': 6959.626, 'text': 'And from there, right click, and then here in the search, type on component begin overlap, there you go.', 'start': 6950.943, 'duration': 8.683}, {'end': 6961.327, 'text': 'And we want this one.', 'start': 6960.407, 'duration': 0.92}, {'end': 6965.532, 'text': 'on component begin overlap in parentheses detection trigger.', 'start': 6961.687, 'duration': 3.845}, {'end': 6975.863, 'text': "So what's going to happen over here inside of the on component begin overlap is that we are going to try and cast so cast to BP player ball.", 'start': 6966.012, 'duration': 9.851}, {'end': 6983.787, 'text': "And we're going to cast the other actor, meaning basically the actor that we have interacted with, if that is true.", 'start': 6976.724, 'duration': 7.063}], 'summary': 'Select detection trigger, set on component begin overlap, cast to bp player ball to interact with other actor.', 'duration': 34.885, 'max_score': 6948.902, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY6948902.jpg'}, {'end': 7413.998, 'src': 'embed', 'start': 7386.996, 'weight': 3, 'content': [{'end': 7394.964, 'text': 'So this also goes over here, plug it in, compile and save that this is if the player is not valid, meaning we destroyed him.', 'start': 7386.996, 'duration': 7.968}, {'end': 7399.73, 'text': 'if he is valid, we are going to go in a sequence.', 'start': 7396.368, 'duration': 3.362}, {'end': 7406.273, 'text': 'So see quince and a sequence is basically an execution order.', 'start': 7399.97, 'duration': 6.303}, {'end': 7409.955, 'text': 'If I hover over, you see executes a series of pins in order.', 'start': 7406.473, 'duration': 3.482}, {'end': 7413.998, 'text': 'first this one will be executed, then this one, and we, if you have more.', 'start': 7409.955, 'duration': 4.043}], 'summary': 'The transcript discusses validating and executing a series of pins in a specific order during compilation.', 'duration': 27.002, 'max_score': 7386.996, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY7386996.jpg'}, {'end': 7662.32, 'src': 'embed', 'start': 7624.685, 'weight': 4, 'content': [{'end': 7630.467, 'text': "So depending on if it's greater, less than or equal to we're going to do certain things.", 'start': 7624.685, 'duration': 5.782}, {'end': 7641.53, 'text': "First things first, if it's equal to or less than point five, we are going to close the interact or interaction gate.", 'start': 7630.907, 'duration': 10.623}, {'end': 7643.31, 'text': "So we're going to close the gate.", 'start': 7641.93, 'duration': 1.38}, {'end': 7662.32, 'text': "And we are going to take the UI HUD And from here we're going to hide the interaction text because if the energy gets to the value which is equal to point five or lower than and I'm going to click this here as well", 'start': 7643.85, 'duration': 18.47}], 'summary': 'If energy is <= 0.5, close gate and hide interaction text.', 'duration': 37.635, 'max_score': 7624.685, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY7624685.jpg'}], 'start': 6079.617, 'title': 'Implementing interactive elements and gameplay logic in unreal engine', 'summary': 'Covers processes such as positioning lasers at specific coordinates, creating interactive physics constraints for cubes, implementing interactive elements, and setting up gameplay logic in unreal engine. it includes details such as specific laser positions, cube connection, object positioning and constraints, interactive block setup, and gameplay logic covering energy damage and interaction control.', 'chapters': [{'end': 6153.326, 'start': 6079.617, 'title': 'Positioning lasers and cubes', 'summary': 'Explains the process of positioning lasers at specific coordinates and the need for cubes to overcome them, with the laser positions given as x: 7680, y: 0, z: 2611 and x: 7680, y: 0, z: 2448, and the need for cubes emphasized.', 'duration': 73.709, 'highlights': ['The chapter explains the process of positioning lasers at specific coordinates and the need for cubes to overcome them.', 'The laser positions are given as x: 7680, y: 0, z: 2611 and x: 7680, y: 0, z: 2448.', 'Emphasizes the need for cubes to overcome the positioned lasers.']}, {'end': 6513.707, 'start': 6153.886, 'title': 'Creating interactive physics constraint for cube', 'summary': "Demonstrates creating a physics constraint to connect a cube and a mesh, adjusting the cube's properties and adding a detection trigger and particle system to the mesh.", 'duration': 359.821, 'highlights': ['Creating a physics constraint to connect a cube and a mesh The chapter explains the process of creating a physics constraint to connect two rigid bodies, enabling easier manipulation of the cube with the ball.', "Adjusting the cube's properties The tutorial covers setting the cube's properties including enabling simulate physics, adjusting mass, linear damping, collision settings, and selecting a slide physics material to allow smooth sliding.", 'Adding a detection trigger and particle system to the mesh The tutorial demonstrates adding a detection trigger with specific dimensions and attaching a particle system (electricity arc) to the mesh, including rotating the beam 90 degrees on the z-axis.']}, {'end': 6898.534, 'start': 6514.207, 'title': 'Implementing interactive elements in unreal engine', 'summary': "Demonstrates the creation of interactive elements in unreal engine, including setting up the object's position and scale, creating variables in the event graph, and implementing constraints to restrict object rotation, with a delay explained for setting the ui hud reference.", 'duration': 384.327, 'highlights': ['The chapter demonstrates setting up the position and scale of an interactive element in Unreal Engine, with the object positioned at coordinates (2806, 0, 1125) and scaled to 1.5.', 'Variables are created in the event graph, including player reference, move direction, can be pushed, can detect player, and UI HUD reference, with the latter being a game HUD object reference.', 'Implementation of constraints to restrict object rotation is shown, involving the creation of a custom event to lock all rotations and the use of physics constraints to prevent rotation, with a delay explained for setting the UI HUD reference.']}, {'end': 7386.355, 'start': 6898.574, 'title': 'Interactive block setup', 'summary': 'Covers setting up an interactive block in unreal engine, including locking rotations, triggering particle system deactivation, setting up overlap events for player interaction, and implementing logic for activating and deactivating a beam with a custom event.', 'duration': 487.781, 'highlights': ['Setting up overlap events for player interaction with the detection trigger and casting to the BP player ball to handle input and show interaction text. Overlap events setup, casting to BP player ball, enabling input, and showing interaction text.', 'Implementing logic for opening and closing a gate to control the execution flow based on player input, including activating and deactivating a beam and handling the interact button press. Logic for opening and closing gate, activating/deactivating the beam, handling player input.', 'Testing for the validity of the player reference and hiding the interaction text if the player is not valid, ensuring that interaction occurs only when the player is present. Testing player validity and hiding interaction text if player is not valid.']}, {'end': 7881.495, 'start': 7386.996, 'title': 'Gameplay logic and interaction in unreal engine', 'summary': 'Explains the gameplay logic and interaction in unreal engine, covering the execution order, energy damage, beam source and target points, and interaction control based on energy levels.', 'duration': 494.499, 'highlights': ['The chapter covers the execution order and sequence in Unreal Engine, with the ability to execute a series of pins in order, providing a clear understanding of the gameplay logic flow. It explains the concept of execution order and sequence, allowing the execution of pins in a specific order, providing clarity on the gameplay logic flow.', "It details the energy damage mechanism, specifically setting the energy damage to 50 and explaining the impact of positive and negative values on the player's energy level. The explanation includes setting the energy damage to 50 and clarifying the impact of positive and negative values on the player's energy level.", "The transcript outlines the process of setting the beam source and target points, defining the source point as the player's location and the target point as the mesh's world location. It outlines the process of setting the beam source and target points, specifying the player's location as the source point and the mesh's world location as the target point.", "It explains the control of interaction based on the player's energy level, including closing the interaction gate and hiding the interaction text when the energy level reaches or falls below 0.5, while applying a force on the mesh when the energy level is above 0.5. The explanation includes controlling interaction based on the player's energy level, involving closing the interaction gate and hiding the interaction text when the energy level is 0.5 or lower, and applying a force on the mesh when the energy level is above 0.5."]}], 'duration': 1801.878, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY6079617.jpg', 'highlights': ['The chapter covers setting up overlap events for player interaction with the detection trigger and casting to the BP player ball to handle input and show interaction text.', 'The chapter explains the process of creating a physics constraint to connect two rigid bodies, enabling easier manipulation of the cube with the ball.', 'The chapter demonstrates setting up the position and scale of an interactive element in Unreal Engine, with the object positioned at coordinates (2806, 0, 1125) and scaled to 1.5.', 'The chapter covers the execution order and sequence in Unreal Engine, with the ability to execute a series of pins in order, providing a clear understanding of the gameplay logic flow.', "The explanation includes controlling interaction based on the player's energy level, involving closing the interaction gate and hiding the interaction text when the energy level is 0.5 or lower, and applying a force on the mesh when the energy level is above 0.5."]}, {'end': 9391.037, 'segs': [{'end': 7905.883, 'src': 'embed', 'start': 7881.495, 'weight': 2, 'content': [{'end': 7889.217, 'text': "we're first testing if a player is valid or do we have the player in the game if we don't close the interaction gate and hide the interaction text?", 'start': 7881.495, 'duration': 7.722}, {'end': 7891.577, 'text': "if we do have the player, he's valid.", 'start': 7889.217, 'duration': 2.36}, {'end': 7897.059, 'text': "first subtract the energy from the player because he's using the energy to pull the ball.", 'start': 7891.577, 'duration': 5.482}, {'end': 7905.883, 'text': 'or the cube and use the beam to set the source point and the target point so that actually it will look like this.', 'start': 7897.879, 'duration': 8.004}], 'summary': 'Testing player validity and subtracting energy for action.', 'duration': 24.388, 'max_score': 7881.495, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY7881495.jpg'}, {'end': 8362.127, 'src': 'embed', 'start': 8328.145, 'weight': 1, 'content': [{'end': 8338.234, 'text': "And I'm going to add a couple of variables, we are going to need 123456 variables, then I add six, and we will add them on the go.", 'start': 8328.145, 'duration': 10.089}, {'end': 8341.977, 'text': 'So over here, the first one is going to be our UI HUD ref.', 'start': 8338.454, 'duration': 3.523}, {'end': 8350.584, 'text': 'So reference to the UI HUD, the next one, click on it is going to be speed of plat form.', 'start': 8342.076, 'duration': 8.508}, {'end': 8356.135, 'text': 'The next one is going to be up limit.', 'start': 8351.605, 'duration': 4.53}, {'end': 8362.127, 'text': 'The next one is going to be the down limit.', 'start': 8357.177, 'duration': 4.95}], 'summary': 'Adding 123456 variables for ui hud, speed of platform, up limit, and down limit', 'duration': 33.982, 'max_score': 8328.145, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY8328145.jpg'}, {'end': 8682.843, 'src': 'embed', 'start': 8650.304, 'weight': 0, 'content': [{'end': 8652.125, 'text': "I don't have to explain all of this here.", 'start': 8650.304, 'duration': 1.821}, {'end': 8654.386, 'text': 'when we, you know, simply check if we collided with the player.', 'start': 8652.125, 'duration': 2.261}, {'end': 8657.188, 'text': 'this enable the input and show the text that we need to interact.', 'start': 8654.386, 'duration': 2.802}, {'end': 8663.332, 'text': 'when we, when the player goes away from the elevator, then if that is true, disable the input.', 'start': 8657.188, 'duration': 6.144}, {'end': 8668.575, 'text': 'hide the text and is moving is true, and move up is false, which means we are going to move down.', 'start': 8663.332, 'duration': 5.243}, {'end': 8673.978, 'text': "But over here, I'm going to right click and I'm going to say action interact.", 'start': 8669.055, 'duration': 4.923}, {'end': 8682.843, 'text': "So when we press the interact button, what's going to happen? Well, when we press it, we're going to go inside of a branch.", 'start': 8675.179, 'duration': 7.664}], 'summary': 'Script discusses player interaction triggers and movement logic for elevator in game development.', 'duration': 32.539, 'max_score': 8650.304, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY8650304.jpg'}, {'end': 9185.35, 'src': 'embed', 'start': 9156.558, 'weight': 3, 'content': [{'end': 9162.1, 'text': 'So using the tick event and based on if we are moving up or down, we are going to move the elevator.', 'start': 9156.558, 'duration': 5.542}, {'end': 9163.101, 'text': 'Let us test that out.', 'start': 9162.14, 'duration': 0.961}, {'end': 9172.665, 'text': "So if I hit the play button and if I go back over here and interact with this, of course we don't have to do it right now.", 'start': 9163.121, 'duration': 9.544}, {'end': 9173.986, 'text': 'So come on over here.', 'start': 9172.725, 'duration': 1.261}, {'end': 9175.166, 'text': 'There you go.', 'start': 9174.066, 'duration': 1.1}, {'end': 9179.368, 'text': 'Bam, bam, bam, bam, bam.', 'start': 9176.047, 'duration': 3.321}, {'end': 9179.928, 'text': 'There you go.', 'start': 9179.408, 'duration': 0.52}, {'end': 9180.909, 'text': 'Jumpy, jumpy, jumpy.', 'start': 9179.989, 'duration': 0.92}, {'end': 9183.929, 'text': 'Come on bad boy fall down.', 'start': 9182.148, 'duration': 1.781}, {'end': 9185.35, 'text': 'There you go.', 'start': 9184.289, 'duration': 1.061}], 'summary': 'Testing elevator movement using tick event with some interaction.', 'duration': 28.792, 'max_score': 9156.558, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY9156558.jpg'}], 'start': 7881.495, 'title': 'Game mechanics and elevator development', 'summary': 'Covers implementing game mechanics such as energy interaction, force calculations, and elevator development, including the setup of interactive blocks, elevator movement, and collision detection, with a focus on specific position and collision properties, and threshold at 0.5 energy level.', 'chapters': [{'end': 7975.556, 'start': 7881.495, 'title': 'Player energy interaction logic', 'summary': 'Discusses the logic for player interaction based on energy levels, with a focus on subtracting energy, setting beam points, and applying force calculations, with a notable threshold at 0.5 energy level.', 'duration': 94.061, 'highlights': ['The logic involves first testing player validity and energy levels, with a threshold at 0.5, to determine whether to close interaction gates and hide interaction text.', 'The process includes setting the source and target points for a beam between a cube and a ball, followed by comparing the energy level to determine further actions.', 'The calculation involves subtracting the player location from the mesh location, creating a vector, normalizing it, and applying mass-based force calculations, with emphasis on using a value of 1000 for the mass multiplication.', 'The discussion highlights the arbitrary nature of certain values, such as 1000, in the force calculation process, emphasizing the need for testing different values for optimal performance.']}, {'end': 8445.542, 'start': 7976.056, 'title': 'Implementing game mechanics', 'summary': 'Demonstrates the implementation of game mechanics including adding force to objects, activating components, creating interactive blocks, and setting up an elevator with specific position and collision properties, along with variable and blueprint setup for game functionality.', 'duration': 469.486, 'highlights': ['Setting up elevator properties and blueprint variables The chapter covers setting up elevator properties, attaching a box collision, and creating blueprint variables including UI HUD reference, speed of platform, up limit, down limit, is moving, and move up.', 'Implementing game mechanics for interactive blocks The transcript includes the implementation of game mechanics for interactive blocks, demonstrating the process of duplicating and positioning interactive blocks and their role in gameplay progression.', 'Troubleshooting and correcting component activation The chapter discusses troubleshooting and correcting component activation issues, specifically addressing the incorrect setting of auto-activation instead of activation for a component.']}, {'end': 8989.623, 'start': 8446.082, 'title': 'Interactive elevator development', 'summary': "Explains the development process for an interactive elevator in a game, including casting the player ball, detecting collisions, enabling input, and controlling the elevator's movement based on conditions and limits.", 'duration': 543.541, 'highlights': ["The process involves casting the player ball, detecting collisions, enabling input, and controlling the elevator's movement based on conditions and limits, such as delaying execution by two seconds and setting movement parameters (e.g., move up, is moving) to manage the elevator's behavior (e.g., displaying interaction text, enabling/disabling input).", "The chapter explains the process of enabling input, showing interaction text, and managing elevator movement based on conditions and limits, such as setting 'move up' and 'is moving' parameters to control the elevator's behavior in response to player interactions.", "It details the process of controlling the elevator's movement based on conditions and limits, such as setting the 'move up' parameter and managing the elevator's behavior according to the state of 'is moving' to enable player interactions and movement control.", "The development process involves setting and managing parameters such as 'move up' and 'is moving' to control the elevator's behavior, enabling player interactions, and managing movement based on specific conditions and limits, such as collision detection and input enabling/disabling."]}, {'end': 9391.037, 'start': 8991.894, 'title': 'Elevator movement system', 'summary': "Explains the process of moving an elevator up or down based on the 'move up' or 'move down' conditions in a game, using the tick event and setting up limits for the elevator's movement.", 'duration': 399.143, 'highlights': ["Explaining the process of moving the elevator up or down based on conditions in the game using the tick event The chapter explains the use of the tick event to move the elevator up or down in the game based on conditions such as 'move up' or 'move down'.", "Setting up limits for the elevator's movement The speaker explains the process of setting up limits for the elevator's movement, including the calculation of up and down limits based on the elevator's position in the game.", 'Demonstrating interaction with game elements such as cubes and elevators The tutorial demonstrates interactions with game elements such as cubes and elevators, showcasing the functionalities of the game environment.']}], 'duration': 1509.542, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/9Fd9hw329fY/pics/9Fd9hw329fY7881495.jpg', 'highlights': ["The process involves casting the player ball, detecting collisions, enabling input, and controlling the elevator's movement based on conditions and limits, such as delaying execution by two seconds and setting movement parameters (e.g., move up, is moving) to manage the elevator's behavior (e.g., displaying interaction text, enabling/disabling input).", 'Setting up elevator properties and blueprint variables The chapter covers setting up elevator properties, attaching a box collision, and creating blueprint variables including UI HUD reference, speed of platform, up limit, down limit, is moving, and move up.', 'The logic involves first testing player validity and energy levels, with a threshold at 0.5, to determine whether to close interaction gates and hide interaction text.', "Explaining the process of moving the elevator up or down based on conditions in the game using the tick event The chapter explains the use of the tick event to move the elevator up or down in the game based on conditions such as 'move up' or 'move down'."]}], 'highlights': ['The chapter introduces a new Unreal Engine course with interactive game creation.', 'Setting up a project in Unreal Engine involves selecting a blank project, choosing blueprint, and specifying the project location and name.', 'Improved ball rotation mechanics', 'Setting energy values and subtracting energy The speaker explains the process of setting the energy value to 100, subtracting from it, and clamping the value between 0 and 100.', "Creating a new folder named 'lasers' in the world outliner to organize the lasers.", 'The chapter covers setting up overlap events for player interaction with the detection trigger and casting to the BP player ball to handle input and show interaction text.', "The process involves casting the player ball, detecting collisions, enabling input, and controlling the elevator's movement based on conditions and limits, such as delaying execution by two seconds and setting movement parameters (e.g., move up, is moving) to manage the elevator's behavior (e.g., displaying interaction text, enabling/disabling input)."]}