Unreal Engine: Character Skill System | Greg Wondra | Skillshare

Playback Speed


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Unreal Engine: Character Skill System

teacher avatar Greg Wondra, Unreal Authorized Instructor

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

    • 1.

      Project Preview

      1:54

    • 2.

      Project Primer

      3:38

    • 3.

      Download and Install

      1:22

    • 4.

      Project Creation

      6:51

    • 5.

      Project Organization

      4:18

    • 6.

      Project Add-Ons

      6:31

    • 7.

      Project Test Map

      13:10

    • 8.

      Character Basic Setup

      8:05

    • 9.

      Character Retargeting #1

      14:17

    • 10.

      Character Retargeting #2

      15:23

    • 11.

      Character Control Overview

      10:14

    • 12.

      Character Movement Basics

      5:34

    • 13.

      Character Jump Setup

      7:42

    • 14.

      Character Jump Script

      7:24

    • 15.

      Character Land Script

      13:52

    • 16.

      HUD - Assets

      5:08

    • 17.

      HUD - Creation

      5:20

    • 18.

      HUD - Layout #1

      14:46

    • 19.

      HUD - Layout #2

      11:05

    • 20.

      HUD - Layout #3

      15:56

    • 21.

      HUD - Layout #4

      10:35

    • 22.

      HUD - Player Attributes

      5:56

    • 23.

      HUD - Player Functions

      9:14

    • 24.

      HUD - Bindings

      9:51

    • 25.

      HUD - Animation #1

      11:31

    • 26.

      HUD - Animation #2

      11:57

    • 27.

      HUD - Animation #3

      14:55

    • 28.

      HUD - Animation #4

      10:55

    • 29.

      HUD - Script

      9:05

    • 30.

      Interactive - Base Class

      3:35

    • 31.

      Interactive - Notify Layout

      16:22

    • 32.

      Interactive - Notify Animation

      12:13

    • 33.

      Interactive - Base Class Script

      7:20

    • 34.

      Skill Acquire - Assets #1

      16:51

    • 35.

      Skill Acquire - Assets #2

      12:47

    • 36.

      Skill Acquire - Assets #3

      15:02

    • 37.

      Skill Acquire - Assets #4

      7:36

    • 38.

      Skill Acquire - Data

      16:10

    • 39.

      Skill Acquire - Skill Attributes #1

      16:25

    • 40.

      Skill Acquire - Skill Attributes #2

      15:01

    • 41.

      Skill Acquire - Skill Attributes #3

      5:30

    • 42.

      Skill Acquire - Skill Attributes #4

      14:57

    • 43.

      Skill Acquire - Skill Attributes #5

      5:20

    • 44.

      Skill Acquire - HUD Bindings #1

      12:55

    • 45.

      Skill Acquire - HUD Bindings #2

      9:23

    • 46.

      Skill Acquire - HUD Bindings #3

      11:42

    • 47.

      Skill Acquire - Base Class #1

      15:34

    • 48.

      Skill Acquire - Base Class #2

      16:02

    • 49.

      Skill Acquire - Base Class #3

      9:32

    • 50.

      Skill Acquire - Child Blueprint

      6:30

    • 51.

      Skill Acquire - Notify Creation

      5:39

    • 52.

      Skill Acquire - Notify Layout #1

      13:25

    • 53.

      Skill Acquire - Notify Layout #2

      13:05

    • 54.

      Skill Acquire - Notify Layout #3

      16:21

    • 55.

      Skill Acquire - Notify Bindings #1

      12:31

    • 56.

      Skill Acquire - Notify Bindings #2

      11:06

    • 57.

      Skill Acquire - Notify Bindings #3

      7:10

    • 58.

      Skill Acquire - Notify Bindings #4

      8:53

    • 59.

      Skill Acquire - Notify Bindings #5

      12:00

    • 60.

      Skill Acquire - Notify Animations #1

      8:59

    • 61.

      Skill Acquire - Notify Animations #2

      10:24

    • 62.

      Skill Acquire - Script #1

      18:43

    • 63.

      Skill Acquire - Script #2

      16:14

    • 64.

      Skill Acquire - Script #3

      6:46

    • 65.

      Skill Acquire - Script #4

      17:23

    • 66.

      Skill Acquire - Script #5

      9:38

    • 67.

      Skill Acquire - Script #6

      11:23

    • 68.

      Skill Acquire - Sibling BPs #1

      15:04

    • 69.

      Skill Acquire - Sibling BPs #2

      16:59

    • 70.

      Double Jump - Jump Script

      19:24

    • 71.

      Double Jump - Land Script

      4:42

    • 72.

      Double Jump - Anim BP (Event Graph)

      10:52

    • 73.

      Double Jump - Anim BP (Anim Graph)

      14:00

    • 74.

      Back Dash - SFX

      10:21

    • 75.

      Back Dash - VFX #1

      12:57

    • 76.

      Back Dash - VFX #2

      10:06

    • 77.

      Back Dash - Script #1

      16:03

    • 78.

      Back Dash - Script #2

      16:02

    • 79.

      Back Dash - Script #3

      5:13

    • 80.

      Back Dash - Anim BP (Event Graph)

      7:26

    • 81.

      Back Dash - Anim BP (Anim Graph)

      8:20

    • 82.

      Fireball - Blueprint

      10:49

    • 83.

      Fireball - Player Setup

      11:20

    • 84.

      Fireball - Use Script

      17:04

    • 85.

      Fireball - Animations #1

      10:16

    • 86.

      Fireball - Animations #2

      15:13

    • 87.

      Fireball - Camera Shake

      4:25

    • 88.

      Fireball - Damage Script

      9:18

    • 89.

      Electro Spark - Blueprint

      9:47

    • 90.

      Electro Spark - Player Setup

      10:02

    • 91.

      Electro Spark - Use Script #1

      17:44

    • 92.

      Electro Spark - Use Script #2

      4:03

    • 93.

      Electro Spark - Animations

      16:56

    • 94.

      Electro Spark - Damage Script

      6:00

    • 95.

      Enemy - Base Class

      7:59

    • 96.

      Enemy - Script #1

      8:21

    • 97.

      Enemy - Script #2

      17:19

    • 98.

      Enemy - Script #3

      18:20

    • 99.

      Enemy - Script #4

      6:15

    • 100.

      Black Magic Menu - Assets

      3:27

    • 101.

      Black Magic Menu - Material

      7:53

    • 102.

      Black Magic Menu - Creation

      3:22

    • 103.

      Black Magic Menu - Layout #1

      8:35

    • 104.

      Black Magic Menu - Layout #2

      15:05

    • 105.

      Black Magic Menu - Layout #3

      7:14

    • 106.

      Black Magic Menu - Layout #4

      14:39

    • 107.

      Black Magic Menu - Layout #5

      4:01

    • 108.

      Black Magic Menu - Bindings #1

      19:17

    • 109.

      Black Magic Menu - Bindings #1 - ADDENDUM

      3:56

    • 110.

      Black Magic Menu - Bindings #2

      6:28

    • 111.

      Black Magic Menu - Animation

      9:51

    • 112.

      Black Magic Menu - Script #1

      15:53

    • 113.

      Black Magic Menu - Script #2

      12:03

    • 114.

      Black Magic Menu - Script #3

      13:42

    • 115.

      Black Magic Menu - Script #4

      13:41

    • 116.

      Black Magic Menu - Script #5

      17:43

    • 117.

      Black Magic Menu - HUD Anim

      4:17

    • 118.

      Black Magic Menu - HUD Anim Script

      7:51

    • 119.

      Bug Fixes

      3:50

    • 120.

      White Magic Menu - Creation

      9:11

    • 121.

      White Magic Menu - Bindings

      9:06

    • 122.

      White Magic Menu - Script #1

      18:11

    • 123.

      White Magic Menu - Script #2

      5:54

    • 124.

      White Magic Menu - Script #3

      6:14

    • 125.

      White Magic Menu - HUD Anim

      4:26

    • 126.

      White Magic Menu - HUD Anim Script

      3:52

    • 127.

      Timer Widget - Creation

      7:06

    • 128.

      Timer Widget - Bindings

      9:55

    • 129.

      Timer Widget - Component

      6:59

    • 130.

      Lens - Secret Wall

      4:09

    • 131.

      Lens - Secret Platform

      4:21

    • 132.

      Lens - Materials

      6:32

    • 133.

      Lens - Sound FX

      3:32

    • 134.

      Lens - Player Functions

      15:54

    • 135.

      Lens - HUD Animation

      5:33

    • 136.

      Lens - Script #1

      6:28

    • 137.

      Lens - Script #2

      11:36

    • 138.

      Lens - Script #3

      12:20

    • 139.

      Lens - Script #4

      10:48

    • 140.

      Lens - Script #5

      8:12

    • 141.

      Lens - Script #6

      14:00

    • 142.

      Mist - Assets

      12:33

    • 143.

      Mist - Components

      4:25

    • 144.

      Mist - Collision

      6:02

    • 145.

      Mist - Player Functions

      11:17

    • 146.

      Mist - Script #1

      11:25

    • 147.

      Mist - Script #2

      9:36

    • 148.

      Mist - Script #3

      7:14

    • 149.

      Mist - Gate Blueprint

      7:57

    • 150.

      Mist - Gate Script

      17:52

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

1,080

Students

2

Projects

About This Class

In this game design course, I'll be guiding you step-by-step through the construction of a custom made CHARACTER SKILL SYSTEM using Unreal Engine 4:  THE premier free to download gaming engine!  (AND the SAME engine used to build "Fortnite.")

This course contains over 145+ fun-to-follow video lessons.  Topics covered include:

  • How to create a 3D Sidescroller Project in Unreal Engine 4

  • How to download and import assets (ALL ASSETS AVAILABLE FOR DOWNLOAD CAN BE FOUND THE "PROJECT and RESOURCES" AREA!!!)
  • How to create interactive and animated Menus and HUD utilizing Widget Blueprints

  • How to create interactive objects using Blueprint Scripting (NO CODING KNOWLEDGE REQUIRED!)

  • How to create 6 different Player Skills using Blueprint Scripting:

    • Double Jump

    • Back Dash

    • Fireball (direct attack)

    • Electro Shock (AOE attack)

    • Lens of Truth (reveals secret passageways and platforms)

    • Transform into Mist (allows you to pass through gates)

  • How to retarget Skeletal Meshes and Animations

  • How to create and edit an Animation State Machine

  • And more!

With the knowledge gained in these video lessons, you will be armed with the necessary skills to start building your OWN character skill system (WITHOUT any programming knowledge needed)!

Share this class with a friend!

Meet Your Teacher

Teacher Profile Image

Greg Wondra

Unreal Authorized Instructor

Teacher

Hello! I'm Greg but most of my students know me as "Mr. Wondra." I'm an active game designer and Unreal Engine Authorized Instructor.

As a kid growing up in rural Wisconsin I dreamed of leaving the corn fields and cow pastures to one day become a video game designer. For 12 years I LIVED that dream! I've designed titles for 2K Sports, KingsIsle Entertainment, and Nickelodeon and have had rare lifetime opportunities such as directing LeBron James and Derek Jeter in motion capture sessions.

My design credits include:

- Wizard 101 (PC)

- Lost Planet 3 (360, PS3, PC)

- MonkeyQuest (PC)

- Sports Champions (PS3)

- Major League Baseball 2K5, 2K6, 2K7, 2K8 (various consoles)

- SpongeBob Moves In (Mobile)

- Grub ... See full profile

Level: Intermediate

Class Ratings

Expectations Met?
    Exceeded!
  • 0%
  • Yes
  • 0%
  • Somewhat
  • 0%
  • Not really
  • 0%

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.

Transcripts

1. Project Preview: welcome to this unreal engine four course where together we'll build a character skill system from scratch. Hi, I'm Mr Wandera, 15 year industry veteran and a designer on the titles you see here. I designed this course to help elevate your unreal engine four skills to the next level. By the end will have created April bus character Skill system. You'll have a showcase piece for your portfolio and, more importantly, knowledge to create character skills. Create interactive menus, work with particles, sounds and blueprints, customized characters, animation, state machine and more. The ideal student is anyone ages 14 and up with beginner level, unreal engine knowledge and skills, Unreal Engine and all assets using this course are completely free. So please join myself and the thousands of other students who have said yes to learning game development with unreal engine four. I can't wait to see you inside. 2. Project Primer: welcome one. Welcome all. Thank you so much for choosing this course with which to learn some unreal engine four. I've been doing these courses for a while now. I really enjoy it. Thank you to all past students and any new students who have signed up for this course. It's really cool toe have the opportunity to literally teaches students from all over the world. So again, thank you. A quick project primer here before we get started. Just to let you know what you are in store for this course is meant for those with some unreal engine for or game making experience. Now, if you have no experience whatsoever, you're probably going to get through it just fine. There may be a few concepts that are a little bit over your head, but you should be able to get through it regardless. Next thing to don't follow the videos in order. Everything has been built sequentially here. So that videos 1234 They all kind of lead up to things to come later on down the road so you can't skip around videos. Everything sort of stacks on top of one another. Next thing to note. I do make use of content from other free content packs in this course. So if you are taking this course at some point in the future, and those content packs that we use in this course are not available, never fear. There are things that you can do to still follow along. I'll show you exactly one thing that you can do to follow along here. I've got this epic games launcher, and if this is all foreign to you, don't worry, we'll get there. Here is an example of a content pack this infinity blade. Ice content lands pack that on. Lee is for these supported engine virgins up to four dots, too. Oh, and as of today, I am using engine version for dot to one. So if I wanted to add something like this in the future, how would I do that? What could simply go to add project? I could show all my projects, even the ones that I've made with unrelenting for dot to one. And here's an example of a project that I made with four dot to one a previous course, and when you select that, it'll say acid is not compatible with this engine version. What can you do? Select the closest alternative, and then you can add to the project from there. So that's one thing you can do. Something else you could do is you could actually install whatever engine version I am using for this one, which is unreal. Engine four dot to one to make sure you are following a following along exactly like I am the all their alternative. If some of the assets that I'm using in this course are not available is to just use whatever ones you want to use. You don't have to use the exact same assets that I do. Next thing to note, I'm going to try to go through these lessons in a timely manner. You have the benefit of pausing the videos, so pause as you see fit. Next thing, if you notice any errors or omissions in the course, please Private message me to alert me. I will not know if there's a problem. If you don't let me know, I've tried toe make sure that I have made a few mistakes as possible. But I am human, and lastly, if you like the course, please leave positive feedback when prompted. Let others know. And if you don't like the course, please let me know what you'd like to see done differently. Alright, guys, that's going to do it all for this project primer. We'll see you in the next video. 3. Download and Install: Welcome back, everyone. This video is on Lee for the newbies out there. In case anyone has not downloaded and installed unreal engine for, I'm going to quickly cover where you can go. To do that in any Web browser of your choosing, simply type in www dot unreal engine dot com and somewhere on this website, As of today's date, it is in the upper right hand corner. You'll find a blue download button. Click on that, and you will be prompted to create an epic games account. Once you do so and create an account, you will be led through the process of downloading the epic games installer. And then through that, you will eventually gain access to the epic Games launcher. And through the epic games launcher, there is an unreal engine tab. You select that, and then if you click on the library tab, you're going to be able to install different versions of the engine. Okay, that process should be rather straightforward if you've downloaded anything in your life, so hopefully that gets just started. Alright, guys, that's going to do it all for this one. We'll see you in the next one 4. Project Creation: Welcome back everyone. In this video we're going to cover how to create a project in Unreal. Now, if this video looks a little bit different from the rest of all my desktop here looks a little bit different. Maybe I sound a little different. That is because I am shooting this video at a later date from when I shot the course. This is an updated video from the original video that I recorded here. And the reason that I am updating this video in particular is because the project creation flow has been updated a little bit with newer versions of the engine. So I wanted to show that first things first we need to get into our Epic Games launcher. So let's double-click on that icon. And along the left-hand side, make sure you've got unreal selected and across the top, come under your library tab. Now up top here in our library tab, I've got different versions of the engine installed. This course was built out using engine version four dot 21. However, I'm going to show the updated version of the creation project flow using version four to six, that is the latest version. It's an actually a preview version of the engine that is the latest version as of today's date when I'm recording this singles Day, November 11th, 20-20. Now down below, you'll also see access to all of your different projects that you may have created. Once you have created some projects, all you need to do is come back here and double-click on it to launch that particular project. Now, let's go ahead and create our own project. Now, I have two ways to kick off this process. Number one is with this yellow button here for 2-6. I've got this yellow launch button. I can launch Unreal engine by clicking here, or this yellow button up top, I can launch Unreal. Now, which version of Unreal will I launch if I press this button? Well, it says right down here, it's the Unreal Engine preview. This is the preview of 4.2c six. Now if I wanted to launch any of these other versions, I can just click that drop-down and select one of these different engine versions. And you can see it's got the yellow box around this now because if I was to click this and that is the engine version, it would launch. However, I want to launch the preview version, you can see that yellow outline is around this box now. So if I click here or here, it'll do the same thing. I'll just click up here just because I feel like clicking on that one. And now this is going to start the project creation process. Now, you're going to be presented with a series of windows here, and it can take a little bit of time for this to appear. So I'm going to pause the video here and rejoin you when it does pop as this very first pop-up window that you will be presented with, select or create a new project so you can select any of your existing projects or create a new one. And I want to create a new one. So we're going to select games right here because that's what we do. We make games. And then we click this green Next button. And then your next option is to select a template because the fine folks at Epic Games have given you a headstart in creating whatever type of project that you want to create. If you want to create a racing game 2s, the vehicle template or advanced vehicle, you want to create a third person game. You can choose that guy, first-person game. Well, the gotcha covered there. This one, we are going to choose a side scroller template, not 2D side-scrolling. 2d side-scrolling is truly 2D. The difference here is with the side scroller, you actually have some 3D art. You've got some depth back there, the 2D side-scrolling you will not. So make sure you choose side scroller and then we're going to choose next year. And then the next is just going to ask you to choose your various project settings. Now this is going to be a blueprint project. We're gonna do scripting, a lot of scripting in this project, no C Plus Plus coding. We're gonna keep all of the other default options here you can choose desktop or console, mobile or tablet. We're gonna do desktop or console. And yes, we're going to have some starter content, ray tracing being disabled. That's fine. Folder, you can choose a folder on your computer. Where do you want this project to live? And of course, you need to give your project a name for the love of God. Name your project. I'm going to call this one Metroid, VGA, underscore. Underscore, not parentheses skills. And then you just click this green create project button. Now, as soon as you do this, it is starting to create the project and launching Unreal Engine. Now this can take a little while. Now, I'll rejoin you in just a moment once his his appeared. All right, and what you see before you here is Unreal Engine four. This is the editor itself. Now, in the upper right you can see the name of our project, Metroid Benyus skills. And just to hammer home the point that we have in fact created a project, if we come back into our Epic Games launcher, let's double-click on this guy. When you have the unreal tab selected along the left and the Library tab selected across the top. And you scroll under the My Project section, you can see we hit now have Metroid Benyus skills project created with Unreal Engine 4.2c six. Now again, this is an updated version of this project creation video. This whole project that you're about to embark on was created using Unreal Engine four, D21. That's why I've got two versions here. So just know that one more difference that I wanted to point out here is that in later versions of the engine, I believe it's 4.2c four and onward. I could be wrong on that. The layout here of the interface changed a little bit in older versions of the engine, like for D21 in which this course was built, you saw different tabs along the left-hand side here for different modes that you can place your level editor in. What they did now is a place, a little modes, buttons across the top here, and you can actually turn on different modes here as well. So like if you wanted to create a landscape, for example, you just simply check that on. And then you would see a new landscape tab appear over here. Now, that is far beyond what we're going to be doing in this course. We're not going to be fiddling with any of these other modes. So just know that that is how you can jump into different modes if you really feel like experimenting, alright guys, that is going to do it all for this video, we have created our project. See you in the next one. 5. Project Organization: Welcome back, everybody in this video, we're going to be focussed on getting ourselves organized. And by that I mean we are going to be creating the structure of folders inside of our content browser here, right from the get go to house all of the assets that were going to be creating throughout this project. Let's get ourselves organized right from the start. So without further ado, let's make sure that we've got our sources panel shown over on the left hand side here and again, you can show or hide the sources panel by clicking on this little button right here. And what I'm gonna do is I'm gonna select our top most content folder because I'm going to be creating a brand new folder that is going to house all of our content throughout this course. Get a right click right here, create a new folder, and I'm gonna call this Metroid Vania again. This is a character skill system that we're building. But I was inspired by the Metroid Vania genre to create this. So I'm gonna call this folder Metro Vania. Underneath this, I'm going to create a bunch more folder, so make sure you've got Metroid. Vania here. Selected right click new folder. We're going to do one for animations. Let's select Metro had Vania one more time, Right Click New folder Audio And actually let me Ah, color are Metroid Vania folder here. Right away. Just so it stands out, you can right click on that and you can set a color. And I'm gonna going to go some color of blue darkish blue there, Riggio. Okay, Next one I'm going to do is right. Clicking on Metro Vania New folder blueprints. Now, with blueprints selected, I'm going to create several folders within it. So right, click on Blueprints New folder. We're gonna have some actors. Blueprints, Select blueprints again. Right Click New folder characters, right. Click on blueprints again! Ah! Let's G o Denham's right! Click on blueprints again, Framework! Right Click on blueprints Once more. We're going to go M I s C for miscellaneous, Right Click on blueprints again. New folder Struck's and that's gonna be all the ones we want within our blueprints folder. So now I'm going to select our Metroid Vania folder one more time. Right click New folder. Pont's right Click on Metro Vania again Levels right Click again. New folder materials, right Click on Metro Vania again meshes and again new fuller particles. Right? Click on Metroid, Vania again Textures in a right click on Metro Vania One more time. And this one we're going to call widgets. And so with that, make sure that you've got this Siris of folders starting from Metroid, Vania all the way down to widgets. We may add a folder or subtracted folder as we go along here, but this should just about do it for all of the folders that we're going to need to house all of our assets. That's going to do it all for this one. Guys. Glad we got ourselves organized. We'll see you in the next one. 6. Project Add-Ons: Welcome back, everyone. In this video we will be adding on some content packs to our project. Because if you remember, when we created this project, the Onley content packed that we had was our starter content. And if you're not sure what that is, that is this particular content packed down here which has got some particles in it. A few basic shapes, but not much else. Now, if you look over in my content browser right now, you may notice that I have a few more content packs than I did in the last video. I have a content pack called Soul City, Another one called Sold Cave Paragon Countess, etcetera. We're gonna be making use of some free content packs throughout this video, and we want to add them to our project now so that when we are creating various assets like blueprints, we have access to all the particles and sounds and meshes etcetera desired. So where can we add these content packs from? Well, if you go over to the epic games launcher and I'm just gonna jump there now across the top , you've got a tab for the marketplace and the marketplace is where you can go to find any paid or free assets. Now, there are several free asset packs that we will be adding to this project. And I've listed them out right here in a word document. These are the seven content packs and they're all free. That will be adding. So if you want to pause the video right now, this is a good time to do so. You so that you can see which ones we will be adding. Okay with that, I know that I've mentioned that I've added some of these already. I'll just show you the process for adding these and we'll start with, say, the paragon count is down here at the bottom. So with my marketplace tab selected, I can come under the search bar. It just type in Countess hit. Enter there and there is my Paragon Countess a pack. And if you select that, it will bring you to a little preview window where you can see what contents are in that pack. Various costumes, etcetera, and they will show you the supported engine versions. Now we're creating this particular project with engine version four dots to one, and as they update the engine to newer versions. I'm sure that they will be continuing support for the Paragon Countess. To add it to your project, you'd simply click on this adds of project button. It will allow you to select from valid projects. Here's our Metroid Vania skills, so I could simply select this and then adds a project. Now again, I've already added this to my project, so I'm not going to re add it. But that is how you go through that process. I'm just going to select. Don't add from here now. What if the content packs that you're specifying Mr Wandera are not available to me at some future date. Well, just know that the content packs that we're going to be using in this project are not 100% essential. I will be making references to a lot of the content using these content packs. But if you want to use a different particle effect or a sound, etcetera, wherever I specify them, that is up to you. Now we have an interesting situation here, which I'm going to demonstrate to you where and let me just find a content back that I'm talking about in thin. It's he blade, where we've got some content packs that are available to us. And let me just choose infinity Blade Fire lands because I have not yet added this one. And it says the supported engine versions are 4.9 to 4 dot too. Oh, and I am using engine four dot to one. Can I still add this to my project? Well, I do expect that epic games will make this supported for this engine version at some point in the future as well as future versions of the engine. But even if they don't, you could still click to add to project here. And I can say show all projects. It's only going to show me any projects I've created between these two engine versions at the project and C, I don't see any. My four dot to one projects I'm going to say show all projects and there is my Metroid Vania skills and it gives me a warning saying asset not compatible with version for dot to one. Please select the closest alternate alternative version. So I'm gonna slick version 4.20 and then I'm going to add it to my project so if it says over here that it's not a supported engine version, you can still add it to your project. There may be a few problems with it, but just pick the closest engine version to the engine version you are working on. So again, these are going to be the acid packs that I'm going to be adding to my project now. It takes a little time from the time you click. Add to project before it is finally added to your content Browser. This is the Infinity Blade Fire Lands pack, which is one of the ones I will be using. And if you look over my content browser, you can see that it is starting to add a folder for infinity blade fire lands as well as folders underneath it there. Maps just came in, etcetera. Now, this process is going to take a little while, so why don't you go ahead and take some time out Now to add these seven content packs to your project, I'm gonna pause video here in Come back when it is all completed. Seeing a bit and we are back. It looks like I have finished adding on all seven off the desired content packs again. These were the seven right here for infinity blade packs to Seoul packs in a Paragon Countess. And over here, you can see I've got infinity blade effects, fire lands, grass and Iceland's as well as Seoul Cave Soul City in my paragon. Countess, we are ready to keep on rolling here. That's gonna do it all for this video will see you guys in the next one. 7. Project Test Map: Welcome back, everyone. In this video we will be creating a test map in which we'll test all the player moves and skills that were about to create in this course. And I'm gonna be doing that for a few reasons, even though we have, in example, map already created here for us. One reason I like to create my own map is because it's a little bit more simplistic and also and this is the main reason for me. Anyways, if I come to an Ortho graphic top view, the way our current level is set up is that our character is going to be moving from bottom to top. So when you're moving left in right in your actual game, if you were to be viewing that from a top view, you be moving from the bottom to the top along the Y axis as opposed to the X axis, and to me, that's really odd, and I don't like it. So we're gonna go ahead and fix that now, this is gonna be actually pretty critical to all the other measurements and directions that we specify in the course going forward. So don't skip this step anyways. with that all out of the way, we're gonna come under file, and we're going to create a new level. We're going to choose default from this new level list, and we're not going to save our existing side school example map just they don't save. And here is our new untitled level. For starters, we should probably save this. Um, let's click the save current button up here. I'm going to come under our Metroid Vania folder Come under levels in. Let's call this what show we call this. Let's call it M the underscore envy for Metro Vania, Test man. All right. Next I'm going to simply delete out our floor mash here. Don't want it. We're going to create our own. Next thing we're gonna do is we're going to bring in some geometry, so select your geometry tab. Often left here. We're going to bring in a box brush to go ahead and select that. Bring it on in and I do have some measurements and the location specified for this. Let's go X brush setting x of 10,000. Why? Of 1000 and Z? How thick is this gonna be? We're going to save 100 for the location. We're going to say x of zero Z or why of zero and Z of 50. So, essentially, I'm going to be viewing this all from this angle right here. And if I look at this from it's up, Ortho graphic view, let me zoom way out. This is gonna look a little bit nicer. We're actually going to be moving from left to right nonsensical manner. Okay, I'm also going to call this box brush something other than box brush. I'm gonna name it floor. And I would like to actually put some materials on this. So let me select this top portion of the brush right up here. And you can simply do that by clicking on the top portion of the brush and under the surface materials in the details panel. I'm going to slot in rock Marble polished. This is in your starter content pack, so it's gonna look kind of nice. Very profession now. All right. Next I'm going to create a back wall, so I'm gonna bring in another box brush here, Left click again. This is We're on the geometry tab. Box brush, left, click and drag. I'm going to give this in X brush setting of 10,000. Why of 1000 and Z of 100. And for the location, I am going to say location X zero. Why of negative 5 50 and is the location of 500. And I'm also going to rotate this 90 degrees in the X so it stands up like so in for our back wall here. I'm going to select the wall and let's give this a surface material of concrete. I like these m concrete tiles, and I'm gonna make him a little bit bigger. So I'm going to set the scale for these. With that wall selected to be two times the size in both the U. N. The V direction. Let's click apply. And that's how that is going to look pretty nice. There is already a directional light actor in here. There was one when we created this level. That is this guy right here. Let's select him, and it doesn't really matter where you police this actor in your level. This location is fine, but I do want to edit some things with it. Um, I am going to set it to a z location of Let's just go 00 and 500. Even though it doesn't really matter where you places, I kind of like it at this center point right here. The rotation gonna set x of zero? Why Negative 30 in the Z negative 45. You kind of have it coming in at this angle, The directional light actor basically specifies, Ah, which direction? Your light source A k a. The sun is going to be pointing in which direction it's going to be coming in from this angle, the intensity I am going to turn down. So with this light actor directional light source selected, I'm gonna change my intensity here to be one. Maybe I will fiddle with that more later. But that is good for now. Next, I am going to adjust my player start actor. This was also in here by default, but I want to set some parameters for this player. Start actor Z location. We're going to set this to be 1 42 which is actually not even gonna be high enough. I'm just gonna drag us up into the air, uh, hit the end key and then I'll smack it on down to the ground. So 1 92.2 is what I want to set it that at. And again, If you don't have that, you're going to drag it up into the air, hit the end key. That's the one right next to the delete key and that will snap it on down to the ground. So more settings I want to set here before we really get rolling here. I'm just gonna move this sphere Reflection, Capture out of the way. Not gonna deal with that. Um, I'm gonna jump over to my project settings, and I can find that here under settings, project settings, and it's gonna bring on this tab. I want to find my editor section right here, and I want to select my two D options. A few things I want to set up in here under my layer snapping section. If I expand out this snap layers section and we're going to expand out all of these by clicking on these little triangles like so they're kind of hard to click on their radio and there we go. Um, I do want to enable snap layers. We do want that check my snap access, though we're going to change to be the Y Axis because we have flipped around the direction that we have our level laid out in Also, I am going to make it so that we've got our foreground here of 1500 our background is going to be 900. And our default here is going to be zero, and it actually just switch this around. So foreground is 1500 than background is 900 default zero. Now what this will do if I jump on over to our level here it is going to snap objects that we bring into our level into our Why access at a depth of zero. What do I mean by that? Well, let's test this out. Jumping on over to my test map, I'm going to turn on my two D snap settings here. And instead of snapping to the foreground here, which would give me a why depth of 1500 I'm going to set it to default, which is going to give me a wide depth of zero. So let me set this to default, and I've got my snap settings here turned on. So now if I was to bring in, like, a basic Let's bring in a basic cube, right? I'm trying to move it like Ford and back, but it is just simply putting this on the exact same plane. Let me just select it. Hit the n key to move it down, bringing another que the end key to bring it down. You can see that they are on the exact same plane. That why value of zero that is being specified by default. Depth of why zero in our editor to the settings. Okay, so that one is good to know about. Gonna be super helpful for just kind of laying some stuff out here for testing purposes. Let me just delete these out. Next thing to know about here that we should check. Make sure that you have saved your map here. Um, go ahead and save it. And we are. I'm saving this to my content. Metro Vania Levels Fuller. We also want to set this as our default map when we open up the editor now, I actually did that between videos here, but if I jumped to my project settings, there is a section called Maps and modes and in our maps and modes project settings. There is an editor startup map, and this is where you can set which map the editor will open up to by default when we bring in unreal engine. So M v test map that map that we just created and v Testament other things that you may want to know about. Um and you can also find this in your play settings in the editor preferences, not the project settings. Um, we can also access it from here. I find that a lot of students get confused that when they click the play button and they try to use the W A S and D keys to move around that they can't move right away, they need to click on the window to actually move their character. So how could you do that? I currently have it set up where I do not need to click on my play window. Well, if you come underneath this little drop down arrow next to your play button here, there are some advanced settings that you can choose and at the very top of your advanced settings here, we've got our editor preferences level editor Play this game gets mouse control. Have this checked. If you do not want to click on your view port to take control of your character. And I typically like to leave my place settings on not the selected Vieux Port, but a new editor window. So when I select this gonna jump in and play in a new editor window and I currently do not need to click on a U port in order to take control of my character. So handy trip our handy trick for you all there as well. Anyways, guys, that is going to do it all for this video are test map is now complete. We will see you win the next one. 8. Character Basic Setup: Welcome back, everyone. In this video, our goal is to get the groundwork of our player character set up so that we can start to move in a sensical direction that is left to right from a top Ortho graphic view port. Cause, remember, in the last video, we made it so that our map here was re oriented. So from a top Ortho graphic view, we would be actually moving from a left to right Now, we just need to modify some of our character components as well, so that it supports that sort of a level structure. So this is what we need to do. First and foremost is in your content browser under your sources panel. Here and again, you can click this button to show or hide this left most directory, you're going to come under your side schooler B P folder and in the characters, not the character blueprint section. You're gonna find your side schooler character asset. I am just gonna move where this is located right now, because this is going to be the character that we want to use throughout this project. So with it selected, I'm just gonna scroll up along the left hand side here and I'm going to move it into our Metro and Vania Blueprints. Characters Fuller. Just drag and drop it right here. It's going to say, Do you want a copy it or move it? I'm going to choose a move it, and then I'm going to select that folder and I'm going to re name this asset, so I'm just gonna select it press F two to rename it, and I'm gonna call this BP underscore player. The next thing I'm going to do is double click on it to open it up. And what I am looking at right now is my event graph tab. Note that this is selected right here. There is some script that exists in here to get your player character moving left and right and being able to jump. If you have any other script in here at the moment, by default, you can delete that out. The Onley thing I want to remain in here for the time being is this movement input script as well as this jump script and we are gonna be making some modifications to these in just a moment. Firstly, I need to make some changes to our camera, and I'm just going to jump over to our view. Poor tab here quickly. That guy right there if I was to play the game, you'll notice up a problem right now. One is that that camera is a little bit close. I needed a little bit further away and ah, let's see what else we want to change about it. Well, let's start off with our spring arm component right here. What is a spring arm component? Well, you can think of a spring arm component is sort of like a selfie stick where a camera boom . It's going to control how far away that camera is from our player character. And I'm gonna set the arm length right here not to be 500 but 700. Additionally, I'm going to change the absolute rotation of this not to be 1 80 but actually negative 90 over on this side. Now, why would I do that? Because when I click play, I want to be viewing it from this angle. So I just pivoted where that camera is located in relation to my character here. So target arm length of 700 absolute rotation in the Z to be negative 90. Okay, next thing I want to do is I'm going to come under my perspective option right here. I'm gonna click on that, and I'm going to choose a top Ortho graphic view. And one thing I just want to double check here is that my characters actually facing down the x axis. This blue arrow determines which way my character is oriented. And you can see that this red line right here represents my X axis. And I do want to facing down that access to begin with which he is. So we are good to go there. Just a little sanity check here. I'm gonna change it back to my perspective, you next. Let's come under the event graph. I do have some existing scripture for movement input and a jump in put. I'm actually going to put these in a new graph. So along the left hand side, the my blueprint panel I'm going to come under my graph section here and click this plus button to add a new graf and I'm gonna call it move set. And the only reason I'm doing this is for organizational purposes got a lot of characters scripting that I am going to be creating. And I want these two bits of script to live in my move set tab. So I'm going to jump on over to my event graph and you can see there's by move, said Tab. And I am simply going to left click highlight thes. I'm going to right click cuts and I'm going to come under my move set or right click. And actually I could just hit control V two pesos. That is an easier way to go about it. So this is my basic move set, and one thing you'll notice is that if I jump in and play right now and hit those WS and D keys, you're not actually going in the direction you want, Teoh. A key has moved me this way. Deaky has moved me that way. How can I fix that? Well, right here we've got an input access event for moving writes that is here by default. Instead of going in the why negative direction I'm going to change is to be an X value off one. Why value of zero. So basically, when we input our command for moving right that is going to move us in the positive X direction. Basically, the D key is going to move us right. The a key is going to move us left. Let's give that a try. Dickie does not move us, right? A key does not move us left. What is going on? Another problem to be solved here. Well, the way we can solve this is that if we select our character movement component, there's something else that we need to adjust in here. If I scroll down in my list of components here or my details under my character movement component, I've got something called constrain to plain. Where is it? Right here? Plainer movements constrained. The plane is checked on, and currently it says I am constrained to my explain. What I want to do is I want to change his plane constraint normal x of zero in why of one, and that should fix it so that I can then use my A and D keys to move left and right. So let's compile and save this click play. And now, when I'm pressed, my deaky, I could move right in my a key will move me, left it can. It keeps me constrained to the Y plane as well as the seaplane. I can still go up and down is well okay, guys, that is going to do it all for our basic character set up. Our character is now moving in accordance to our A level set up That'll do it all for this one. We will see you in the next video. 9. Character Retargeting #1: welcome everyone in this video, we're going to begin the process of transitioning over from controlling this guy, our mannequin man, to our paragon Countess. Now, in order to do this properly, we need to do something called animation retargeting. Why do we need to do that? Well, the reason I'm going to do that for this course is a so you can learn something. But also be because I want to use this Countess skeleton. But there are some animations that I want to use that belong in our specifically made for our mannequin man here. So if you want to transition some animations that are made for one skeleton onto another skeleton, they've got to go through this process called animation retargeting. So that's what this video is going to focus on now, just a quick primer here for you. All this video and the following video on animation retargeting are going to be a little bit more advanced, a little less fun, but it is necessary to do in order for us to play some of the skill ability animations that we want to play later on in the course. So we're laying some more groundwork here So if these seem a little bit more difficult, then the videos to come, That's because they are. This is something we're just gonna plow right on through learning. Ah, a little bit about animation retargeting so that we can get to the good stuff beyond All right, So let's get started here. Let's jump on over to our content browser and you're gonna want to find your countess skeleton that I just had. And the directory which you confined this in Is this location right here? Your content? Paragon Countess. Characters, Heroes. Countess Meshes folder This directory right here. And in order to view the Countess skeleton, this is the one you're going to double Click on. This is something referred to as the persona editor in Unreal Engine for and we're on this left most skeleton tab, and ah, something I just want to point out while we're here is so all these skeletons are made up of a lot of bones, right? And if I click under this character button right up here in this view port and I check bones and I click on bone names, you could see all the different bone names and their respective locations that make up our paragon Countess here. Likewise. Aiken, do over here with my mannequin man skeleton already. Have him open up. So I'm going to come under character bones, bone names, and you can see all the different bone names associated with him as well. And you can also see Ah, hierarchal. I could never say that word hierarchical view of them in a skeleton tree tab over here in the left hand side. So these are all these bone names that you see on our skeleton and their relation to one another. Eso You obviously have things like middle fingers, pinky's ring fingers all attached to a hand bone, for example. Same thing over here. Skeleton. With our Countess, we've got this skeleton tree, which shows us hierarchal view of all the bones in their relation to one another. Now, many of these bones are named the same. Sometimes they're a little bit different, but their relationship to one another is slightly different between our countess and our mannequin man. So to help ensure that animations from one skeleton work correctly on the other one, we need to use an interview intermediary called a rig. So This is how it's gonna work right here with your s Countess Skeleton Asset Open click on this retarget manager tab over. Hear. Clicking on this button will also point you to that tab and over on the left hand side. Here it is asking us to set up a rig. And by default, there is this paragon proto retarget rig. Let's click on this little drop down, and we're gonna set this to be a humanoid rig again. This is an intermediary that will go between our countess and our mannequin man. So the way this works is it list off different main portions of the regular route pelvis, spine, etcetera, and then over on the right, we get to associate certain bones with each of these sources. So if you click auto map right here, that will fill this in automatically. Most of names were the same, but some of the ah bones here and her countess were not capitalized. So that's why things like the pelvis here are not capitalized as well. And with that done, we can go ahead and save this asset. So that's good. Now we need to do the same process over here for our mannequin man skeleton as well. But I did not show you where this is located in the content browser. So to get to this you before mannequin man skeleton, You're gonna find this guy in this path right over here. Content mannequin characters mesh. And it is right here this u E four mannequin skeleton and again we are over in this retarget manager tab. You can also get there by clicking on this button, and we need to select a rig for this guy. So we're going to set this to be ah humanoid regret along the top here. And if you automat those bones, you will see them retargeted as well. And we will also save this now to ensure that any retargeted animations work as well on the new skeleton as possible, we got to make sure that our base poses are as identical as possible. You can see that our mannequin man right here is in somewhat of an A pose. If we look over at our Countess skeleton, she's also in the A pose. But I would say her arms or down a little bit more. So let's just do a little fine tuning, adjusting here to try to ensure that the skeleton poses are as identical as possible. This is what we're gonna do with R s skeleton s Countess skeleton here, down in the lower left hand corner of your retarget manager tab, We're going to choose to view the pose. This will allow us to edit it. It will now say, hide, pose. After you click on that just to make this a little bit easier to select these bone names. I like to come over into the skeleton tree and there are just a few bones within the hierarchy here that I want to adjust. One of them being this upper arm, that one right there. I'm just gonna move this out. I'm gonna grab this green handle here and move it out 10 degrees. So note that I do have my angular snap settings on to 10 degrees. So with my upper arm l here I'm just gonna move this out 10 degrees, then with my lower arm l I'm going to grab this green handle and move that out 10 degrees that I'm also going to sort of just my camera angle and grabbing this blue handle move her left hand forward. 10 degrees like that. That's all I want to do with that hand that I'm going to come over to or upper. Um, are that bone right there? I'm gonna grab this green handle and move her arm out a little bit like that. Then I'm going to select lower arm, are again grabbing that green handle, going to move that up 10 degrees. And then I'm also going to move it forward by grabbing this blue handle, moving that up 10 degrees as well. So now if I come back to my retarget manager tab and you can see actually that this pose right here on our Countess is looking pretty identical to our mannequin man jumping back over to the countess skeleton. I can choose, modify, pose down here in the manage retarget base bows, and I can say use current pose. All right, let's save this. And now we are going to jump out of our skeletons here, back to our content browser, and I'm going to direct you to this pathway right here. Content mannequin animations In aside, this folder is something called the third person animation blueprint. Now, if you haven't worked with the characters. A lot in unrelenting for this animation blueprint is a special kind of blueprint that is currently assigned to our BP player under the mesh component animation class. And what this particular animation blueprint does is it dictates what animations that this character can play and when it's basically the home for the list of rules for when to transition from, say, a walk to a jump and so forth. So this is something that we want to retarget to our new skeleton. This is how it's gonna work. We're going to right click on this asset. We're gonna come under retarget Annam blueprints duplicate and a blueprints and retarget. It's like that. And here is our just auto saved and kind of took me out of there. So I gotta bring that window back up here. So here is our source. Skeleton are mannequin, man. It's going to ask us to choose a target. And there is our S Countess. Skeletons like that and you can see our poses are roughly identical now, maybe not perfect, but that is OK. And then we're going to simply flip it over my page of notes here we're going to select re target down in the lower left. Now, we could change just f why we could change the pathway here I am. You know what I am going to do that I'm gonna choose change right here. And I'm just gonna make sure that I dumped this into my Metroid, Vania. Yeah. Let's let's make sure that this is in our Metro Vania Animations folder. Okay, so there you can see the directory. We're going to be dumping this too. So, yes, I do recommend clicking on change and pointing out which folder where you want this to live in. And then we will select retarget. And now you can see it's jumped me over to this folder Metro Vania Animations. And now we've got this animation blueprint as well as all other animations that references here in our Metro Vania Animations folder. This is pretty cool. I'm just gonna click save all right away just to ensure that I have saved all these assets . And that's gonna get rid of these little asterisk symbols. Save selected. We're not quite done yet. I need you to jump back to your Countess skeleton for just a moment. and coming over to your skeleton skeleton tree tab Again. We got skeleton appear selected. Skeleton tree tab. We just need to do a little bit more to ensure that our animations translate appropriately to the skeleton right here under the skeleton tree tab under options, we're going to select show retargeting options. And there's just a few things that we want to alter in here to ensure that the animations retarget okay under our spine old one, which is a rather key bone off to the right. We're going to right click right click where there is this animation dropped down and we're gonna set this to be recursive lee set translation retargeting skeleton like this, You could see how it changed everything down below in the hierarchy. I also want to choose thigh L we scroll down my list here. Where is thigh? L f I l fi Oh, there is my thigh. L I want to do the same on this. Right click recursive lee set translation retargeting skeleton. And that's going to change all the bones underneath it. And also thigh are so it's like that. Right? Click recursive lee set translation retargeting skeleton. So those are all well and good. There's a couple clavicle. Bones, I believe there near the top. Here. Clavicle, clavicle, clavicle. There is clavicle. L for clavicle. L and clavicle are I want to simply select the drop down next to each of these and shoes animation. There's clavicle. L clavicle are is right down below here. Animation. Okay, we're going to save this asset again. And, guys, that was quite a little bit of work. We have done some animation style retargeting so that we ensure some of the animations we want to work with. Our Countess will work just fine. We have some retargeted animations now existing in our animations folder That is going to do it all for this one. Guys, we will see you win the next one. 10. Character Retargeting #2: Welcome back, everyone. With our retargeting done, we now want to set up our BP player to use the desire, skeletal mesh and animation. So ah, here are all of our retargeted animations and our third person blueprints. So what we want to do from here is jump over to our Metroid Vania Blueprints folder. Come under our characters. Holder, There is our BP player. Double click on this guy to open him up. And what we want to do is jump on over to our mesh component up here and I'm gonna jump over to our view port so we can actually see the difference in the view Port Tabas. Well, so we don't want to use mannequin man here anymore. We want to swap in R S M Countess, Skeletal mashed. So instead of SK mannequin, let's look for S m underscore, Countess. There she is. And I actually she's looking rather rigid at the moment because we don't have an annum class blueprint assigned here yet. So what we wanted to hear is click this little drop down and do a search for third. Well, actually, you know what? Instead of we've got two competing ones, right here that look rather similar in names. I'm just going to jump out of here quickly. We're gonna rename this animation blueprint that we just created in our animations folder. So let's jump back out of here. Let's go into our animations folder. And here's our third person, Annam, BP Asset That just got populated into this animations folder when we did all the retargeting. I'm just gonna right click on this really quickly, and I'm going to rename it F two will also allow you to rename. And I am going to call this Let's call this Countess underscore an m B. P. Okay, so now with that named and I actually note that I still have it selected here with its selected I can go come back to my BP player and simply click this little arrow right here to use the selected asset from the content browser, which is my content, my Countess an m B P. And you can see the Countess's now since come back to life. Okay, so that is all well and good. But there is more I need to do back in that animations folder. So I'm going to quickly compile and save what I've got done here, and I'm gonna jump back out to my animations folder. I've got this asset right here called third Person Idol. Run to D. I'm also going to rename this asset. I'm gonna hit F two on it and I'm going to call this one Countess underscore Idol, Run! And then I'm gonna double click on this to open it up. This is known as a blend Space one D and you'll see what this does in just a moment here. Gonna dock this along the top and what we've got here is a little preview window of our countess, and it says down below in this little kind of graph area, if we click and drag an hold this green pin, you'll see how our Countess's animation will change depending on its speed value. So with the speed value of zero, you can see that our conscious is going to be in an idol. When we reach a speed value of, say, 93 we're gonna be Maurin this walk, and as we gradually increase our speed, she'll get into more off run. So this green dot right here, you can drag left and right? Just a kind of preview. The different animations that are Countess will go through as her speed increases. So we have the ability to set in this asset right here which animation she plays, depending on which speed she's going at. And this is how it works over here on the left hand side. If I right click on this little dot it'll allow me to assign a different animation for when our speed is zero. Currently, it's said to third person Idol, I've got a few different options here that you can change it to. I'm gonna give you some options. There is, um and I'm gonna click this little drop down there is idle pose idol underscore, Pose. That one's pretty good idol. Relaxed is one I'm going to set it to. I personally, like this one the best out of all the ones. So I'm gonna set it to this, um, but other ones that you can change it and you can see it's just taking a little bit of time to update here. You can also change it to another one is idle straight. Consider that one is your idol pose. And we've also got idle travel mode. Pose those air. All some decent options there. I'm gonna keep this. It'll relax. And so if I drag this preview all the way the left, you can kind of see what her stance looks like. There. Okay, the next one I'm going to. Right. Click on. Is this one right here? Currently it is third person walk. Ah, you know what? I think I'm gonna keep that one. But I am going to change out this far, right? One which is currently set. The third person runs. I'm gonna right click on this one instead of third person run. I'm gonna set this to be there's jog, underscore F w de jog forward. There's different jog forward. There's, like circle left, etcetera. I just want the jog forward like that and another one you could do for that one is sprint forward. The sprint forward is a decent one as well. Um, so that's another one to consider. So let's see here. If we were to drag us all over to the right, you can kind of see what that's gonna look like. And third person walked. We want to change that. You know what I think I am going to be good with that one here. So Ah, with this asset are Countess Idol, Run one D Asset here, blend space. I'm going to save this out, and we may make some changes to this later on, but I'm gonna be fine with it for the time being. So let's say this and then we can exit out of here. Next thing I want to do is jump over to our animation blueprint and if you don't remember how to get there Ah, if I jump over to my BP player right here, we've got our mesh components selected Over here is our animation blueprint. This is what dictates which animations are. Character can play and win. If we click right here, we can browse to that asset in the council browser, then double click on it to open it up. Now you're gonna be automatically taken to this event graph Tab right here will be explaining mawr what this particular graph does throughout the course. But I would like to direct your attention right now down to this lower left hand corner under Annam graph, click this little triangle to expand it out and you've got this default option right here. Click on that. And when you click on that, you are taken to, ah, graft. That looks something like this. Now, this is what is known as an animation state machine. And currently, this is what is driving our character to play, which animation, Given a certain set of rules, for example, we have in action to jump start here. And what is going to determine when our character starts there jumping Well, this rule determines there is. If I could actually click on this rule, there is a Boolean variable that asks, is our character in the air? When that is set to true, we enter the transition to begin starting our jump. Now, I'm not gonna get too deep into each one of these different states right here in all the different rules. I just want to give you a quick primer as to what this is. Um, there are a few different animations I want to swap out for our different states here. So starting with our jump start state here, we can actually double click on any of these states to change out the animation associated with them. You can double click on this jump start. And right now, I have got 1/3 person jumpstart associated with this. And you know what? I think I'm going to be fine for that for now. But I do want to change out the rule associative between our jumpstart and our jump loop. So I'm gonna back up here and Eikenberry back up to our graph by coming back toward the fault over here and right in here. I can change out which rule is associated with our transition from jump start to jump loop . So by double clicking on this, we can drill down into this rule. And there is our current rule, our third person, jumpstart asset. When the time remaining for that jump start asset is less than 1/10 of a second. Then we can enter into jumping back out here, our jump loop animation. I'm gonna swap this out, double click on this. I'm just going to get rid of this third person jumpstart asset I'm gonna go with I'm gonna right click in some empty space here and I'm gonna go yet relevant If I just start typing in relevant the one I'm looking for is Get relevant, Annam. Time remaining. Jump start this guy right here. Now, if I plug this in here and I'm gonna say instead of less than 1/10 of a second, I'm going to say 0.3 seconds, I'm seeing which ever animation I have slotted as my jump start animation. When there is less than 3/10 of a second of that remaining, I can transition from a jump start to my jump loop. Okay, I'm just gonna click right here to jump back on over to my state machine. And now I am going to swap out what animation is associated with my jump end. And again, Aiken, drill on into this animation hooked up to this state by double clicking on it. And currently I have the play. Third person jump said is my jump end state. I want something else here. There is an animation, and I could search for it down here in my asset browser. If I type in jump recovery, that's the one I'm looking for. A jumper recovery. I can simply left click drag and drop this into my graph. And the way to hook this up is to simply drag out of this little person output in plug it into this person input. And that now means that I will play this particular animation when I am ending my jump state. And if you want to know what this looks like, I can double click on it. This is going to jump me to what that animation is going to look like. And even though it looks like a relatively quick animation, it will feel rather slow to us when we land from a jump in our game. So I actually do want to change some stuff about this. So what I'm gonna do is come over here into these acid details and I want to change the rates scale here from being 1.22 point Oh, twice is fast. That'll help us recover from our jump rather quickly, much more nicely. So I'm just going to save this. That'll save the changes we made to our jump recovery. An Emam. I'm gonna exit out of this and I'm gonna come back to my countess anima BP and to jump back to where we currently were in our state machine. I'm gonna click right here, clicking right here is the same as clicking right here. Default, Default. So I'm just going to double click right here. And the last thing I want to do is edit my rule between jump end and idle run. So I can do that by double clicking on this transition rule. And currently it said to third person jump asset when less than 1/10 of a second. I'm gonna change us out by deleting this and I'm going to right click in some empty space. And the one I am looking for is get rehl event real advance and, um, time remaining jump end. So this is saying whenever the animation I have associate it as my jump end whenever that has less than I'm going to say 1.2 seconds remaining, Then I will transition from my jump end to my idol Run. Now, where did I find these values? Basically, a lot of trial and error has helped me determine that these are the ones we're gonna be looking for, and we'll see some of the stuff in action here as we get moving along. But this should give us the results we're looking for so again, clicking on this default button over here. This is our animation state machine. And what this consists of is different states. These are considered states right here. Each of them has an animation associated with it, such as jump end has jump recovery animation associated with it and in order transition Between these dates, we have a rule denoted by these little arrows, and you can double click in any of the used to swap out what rule is associate it with transitioning from one state to another. Okay, guys, that is all I wanted to accomplish in this one. That's a lot of, ah, heavy lifting going on behind the scenes. It's gonna set us up well for what's to come. So let's compile and say this one more time, guys, that is going to do it all for this video. We will see you in the next one 11. Character Control Overview: welcome everyone in this video. I wanted to take some time out to talk about our projects Intended control scheme. You see, our character is going to be obtaining all sorts of skills throughout this project. And I want to talk about how we're going to actually map are various skills and interactions to our keyboard and a controller. If you so have one, I'm gonna be hooking it up to my keyboard as well as an Xbox one controller. So if you do have a controller, I got you covered. Currently, I am in an older version of this project that we're gonna be putting together. This is the project that I made in preparation for this course. So I just want to jump in here and show you the different skills and abilities are character is going to be able to do. And then I'm gonna wrap up this discussion by kind of reviewing what are control scheme is going to be so first things first going to jump in and play here. We're gonna have a character that by default I activated ability. I did not mean to. Our character can just jump right out of bat they could move left and right there are going to be these skill diocese or alters if you will going to be in our environment, we're gonna be able to interact with them to learn some skills. That one is going to be a double jump skill that we can obtain. And once we have that, we can then double jump. We will have a back dash skill that we can obtain in that will be done by pressing Why Button is out of control. It it will be a why button here is a white magic skill that I can obtain is gonna be called the lens of truth. It's can allow me to see hidden passages or platforms. Here's another white magic skill that I can obtain. This is going to be called Missed it Allow me to pass through gates and also to float up to higher alleges or over some, you know, lava pits. If you wanted to do that sort of thing safely, I'll show off those abilities in just a little bit. Then we've got a fireball black magic skill that we can obtain that will do what you think it's gonna dio then we've got another black magic skills gonna be called Electro Spark. That's going to send out some electricity everywhere. Okay, so I've got double jump I've got back Dash. Um, I also have Let's do a fireball. I've got an enemy here. I contest it off right currently doesn't interact them. But that's because I didn't hook up that interaction just yet. So, fireball, and then I've also got If I access my black magic menu, I can change out from Fireball to Electro Spark. Let's try that, right? That's pretty cool. And then I've got some white magic abilities that I can demonstrate as well so I can bring up a white magic selection menu. There are my white magic abilities, lens of truth, and Miss will be the only to ones that we hook up here. You can see how that swapping that out hut up above and lens of truth is going to allow me to seats, see some secret passageways as well as reveal some hidden platform. So let me just activate that here quickly. There's hidden platform and these yellow platforms were not here earlier. So that's what that one is gonna dio. I actually need some more mana to demonstrate what Mr is going to do. So let me just escape out of here. Jump back in and play. Ignore those heirs of warnings down There is a slightly broken older project at the moment . So there is my missed ability. And now that I've got enough mana, I'm going to swap out to it. See, I cannot pass through this gate. I'm gonna swap out my white magic to be the mist ability. And now, if I activate my missed, I can float right through it. All right, so you can see that we've got various movement abilities. We've got the ability to bring on a white magic menu, change out white magic abilities. We've got a black magic menu where I can swap out different black magic abilities, etcetera. Let me exit out of here and let's talk about our intended control scheme. And for this, I'm going to jump on over to the Google. Okay, so here's some of the control schemes and rules that what I will have set up for this project. So this is going to be my control scheme for playing on a controller. You can see I'm not using everything, but I've got black magic use is gonna be mapped to the trigger. Swapping out black magic is going to be the bumpers, etcetera. Um, I'm not going to be hooking up attacking in this course with, like, a sword. I did have that at one point, but this course is gonna be huge to begin with. So I'm gonna keep things focused on two different skills that you can use and not worry about in attacking system at all. Interacting with our diocese, if you will. To obtain those skills is gonna be the B button. A button is going to be to jump and to double jump. This is gonna be our control scheme for the PC. I'm gonna be using W A S and D for movement. And this is going to be my scheme for using those different abilities as well. A swapping out different magics. Ah, player moves set. All right. So again, a to jump be to interact. And when they learn to extra skills, it's gonna be a A to double jump. And why to back dash movement skills that is redundant. Only thing want to point out here is they need to obtain these skills by interacting with the proper skill diocese magic skill. So they're gonna come in two different flavors. There's going to be black magic skills that are going to be offensive in nature, Fireball in electro spark that can deal some damage. And then we've got some white magic skills and this is gonna be my lens of truth. And that allows me to see some secret passageways and platforms and also my missed ability That's going to allow me to pass through gates. And one not so once learned, players can swap out which black magic or white magic is slotted to their HUD. That you saw in the previous video had slots for the current white magic and black magic. You have slotted to your trigger buttons in the upper right and all magic will consume manna. You saw that working. So these are gonna be my two white magics we're gonna hook up in this course. Lend of truth reveals secret passageways and platforms for the players, Mrs. Going to allow you to transform into Mr Pastor Gates Allah Castle, Vania Symphony of the night, or to float above hazards. Some of our white magic rules. So it's gonna be the l trigger to activate and deactivate again. That's gonna be ah, a shift key on the keyboard. Now, wait. Magic is gonna be a little bit different from black magic, and then in that it will remain active for a set amount of time. So we're going Teoh transform into miss, for example, and it's going to be available for, say, eight seconds. And it will deactivate when that time is up. But you will also have the ability to deactivate it whenever you want. So in addition to that, there's also going to be a cool down after being used. You can't just spam inability. You can swap out which magic spell you wanna have slotted to your white magic cut up here via the L Bumper that that will also be the ah control key on the keyboard, and you cannot swap out why White magic, while one is cooling down. So a lot of things to put into place there black magic is going to be a little bit more straightforward in terms of their offensive capabilities, Fireball is just gonna be able to shoot off a straight line projectile low damage Lomana costs Our electro spark is going to be our area of effect attack that's gonna send out streams of electricity. It's gonna be high damage, but a high man cost black magic rules. Just gonna require a very short and non visible cool down between uses. Whereas our white magic is going to actually have a little cool down meter, if you will, over the white magic image to show how long it is cooling down. So to swap out magic, it's gonna be the L bumper or the are bumper, depending on which magic you want to swap out. When you hold down either one of those buttons, it's going to pause the game and bring up the appropriate menu. White or black magic. Once you have brought that onto the screen, all you need to do is push a direction on the l Stick or Deep had to slot in the magic, and then to select that magic. All you need to do is release your l bumper or are bumper to select that magic and also on pause the game. Now this whole system is going to function very similar to swapping out weapons in breath of the wild. So if you've ever played breath of the wild and gone through their system of how they swap out weapons, this is gonna function very similarly. The only difference is going to be they do some selection of their weapons here by holding down the not holding down, but moving the right stick back and forth in my set up. I just simply have the different options available in sort of a cross shape. You can move left or right up and down, etcetera, to select which magic you want to slot in and also a NPAs your game with that. That is our control overview for this project. Guys are very excited for what lies ahead. That's gonna do it for this video. We will see you in the next one 12. Character Movement Basics: welcome everyone. Character movement basics is the focus of this one, and the goal is to define some basic properties that will determine our characters, speed the rate of rotation and how tight or sticky the controls are by tuning a ground friction variable. My voice is feeling a little rough today as I'm recording this, but I'm going to do my best to keep up the energy. Ah, we are going to be working within our B A P Player blueprint right down here. So this is the pathway content. Metroid, Vania Blueprints and characters How to access this blueprint. Let's double click on it to open it up. So within this blueprint, there is something called the movement component which determines a lot of things about our character. OK, here's our BP player blueprint that just opened up and right here is a character movement component. And when we have this selected weaken, see over on the right hand side a lot of different properties that this character movement component dictates everything from how fast your character moves to how high they jump etcetera is determined by this blueprint. I just want to show you right now when we play some things that we're gonna be changing. So right now, when I turn my character around, you can see that she is not turning around on a dime. Instead, she's just kind of turning slowly. I also want to make my character move a little bit faster. And when I changed directions here, I want to increase something called the Ground Friction Just so she turns on a dime a little bit faster. So let's exit out of here. And with my character movement component selected, I'm gonna come down firstly into ah section of parameters. Known is character movement settings, character movement, rotation settings. Rather, right now, we've got this rotation rate Z of 7 20 So the Z axis, if I select our character right here, is this blue arrow That's the straight up and down access running through our character. That is what we want to rotate around now, 7 20 here is decently fast. And actually, if you hover over this property, it will let you know that if you change any of these to a negative value, it will result in an instantaneous turn, which I would do want to do for my Z value. So I'm just gonna changes to be negative one. And now, if I jump in and play and I try to do the A and D keys to change directions, you can see that she is turning instantaneously. So that's what that one does. That was the character movement rotation rate Z of negative one. Next one I'm going to look to change up is a little bit higher up in the list, and that is our Max walk speed. This is the one that determines how fast your character is going to move. About 600 is a default. I'm just going up to 700 to make it a little bit faster. But if you were to make this like 2000 you're going to notice your character moving way faster. In fact, let me just set it to 2000 just to show you what that's like. So obviously trucking along at warp speed looks a little unrealistic, so I'm gonna set that back to 700. Another one. I want to adjust. Your is known as ground friction that is right above it. Basically, the higher the number here, the faster your character is going to turn on a dime. So if you wanted to replicate yourself walking on ice, you could changes to be something like, like, zero. I'm gonna change it to be opposite of that, though I wanted to be more sticky. So number like 10 is just gonna make it so that I can turn a little bit more quickly just to show you what zero would be like. Let me just change that ground. Friction to zero click play once again in now. Once I turn, you can see there's a little bit of leg there. So I'm gonna change that back to 10. Some other parameters. I want to change way down below with my character movements. Components selected is there is something called plainer movement. Now we do want to constrain to a plane, so this check box should be checked. And just to be sure, I want to make sure that you've got your plane constraint normal here, set to one that is gonna make it so that our character is going to be constrained to the why plane. By that I mean that you can see our y playing here. The green arrows going off in this direction in this direction by constraining them to the Y plane. That means that they can move in the X direction, this Red Arrow direction or the Z direction, this blue arrow direction, but not in the Y direction. That's just gonna make it so that they can't get moved off of her line right here. All right, guys, that is literally going to be all we want to do in this one. So we've adjusted some character moving components. Let's compile and save. That's going to do it all for this one. Guys, we will see you in the next one. 13. Character Jump Setup: Welcome back, everyone in this video. Our goal is to set up our characters, jump properties so we can then script our characters jumping ability. Now we will be doing some work in R B P Player, but I want to start things off in our project settings. So a couple of ways you can access your project settings one ways to come under the edit tab and there is project settings. You can also access them by clicking on these settings. Button right up here along the toolbar, and it's the second option down project settings. So once we've got this open, I want you to find an area called Physics along the left hand side. It's right down here and at the very top. Our top most property here in our project physics settings, is something called default gravity. Easy. This is actually determining the gravity in our level and any other levels that we would create. Going forward. It's got this negative 9 80 value. Negative values pull you down. Positive values will mean you're kind of floating off into space. This is important for determining your jump settings because this is a forces gravity that is acting against you now. I don't like my character, kind of having a floaty jump. I like them to snap down to the ground a little bit faster after they jump. So I am actually going to increase our default Gravity Z. And by increase, I mean, I'm gonna make this number even lower, more powerful. Negative 1800 is the value I'm gonna go with. That will make it so that when our character is up in the air when they jump, it's gonna pull them down faster again. The bigger than negative number, the more the more quickly it's going to pull them down to the ground. Okay, We're not done here in our project settings. Next, I'm going to direct you to this input category and in our inputs category. Over here we have something called Action Map ing's. And in here we have an action mapping for something called Jump. This is an event for jump that his name jump that is mapped to these different buttons. W up space bar in game pad, face, button bottom. Now I want to point out in R B p player, and if you don't remember how to get to your BP player. Here is the pathway for that in our BP player. If I jump over to the event graph or sorry, rather our move set, we did create a new tab over here for moves up in a pan out. We have an event called Input Action Jump. This exists because we have created this input action mapping jump in the project settings . Well, when I say created, we did not create it. But it was here by default. Um, you can map any different button that you want here to your action map ings. Let's see, we've got ah, space bar. Just wanted to make sure that that was mapped to this. The down key, the down key. I want to know. I don't want to map the down key. Let's see, we've got the space bar, game, pad, face, button bottom. Yes, and that should do it. I don't think that there's anything else. I want a map to this for the time being. So we're gonna roll this actually don't want the up key map to this, so I'm gonna get rid of the ah, the up key. We're just gonna have the w key, the space bar and the game pad face button button for any of you guys that have a controller plugged in will initiate this jumping event. Okay, with that, there is no, like, save button here in your project settings once you've created it. Ah, input, action. Mapping like jump here. It will automatically become available here in your event graphs. Um, we're done with our project setting so we can close of that on out. Next work will be done here within our BP player, and we want to select our character movement component once again because there are some jump parameters that we want to set within here. The 1st 1 we're gonna be looking for is this Jump Z velocity. This is what determines how high we jump when we press the space bar or any other corresponding buttons that are going to kick off this jump event. I'm gonna set this to be 900. And also there is this air control setting. This ah, gives you some control over yourself when you are in the air. Like is relatively self explanatory. I'm just gonna set this down a little bit to be 0.75 So lower numbers less. Air control, Bigger numbers. Cultural one mean full control tool tip is handy There. Next, there is a parameter called gravity scale in here. Gravity scale currently set to two point. Oh, I am going to set this down a little bit to 1.7. And now why am I coming up with these particular numbers? A lot of play testing a lot of trial and error. You can fiddle with them as you see fit. Last jump related parameter I want to set is not on our character moving component, but rather it is within our class defaults to go ahead and select this button along the top of the toolbar. Now, there is something in here called Jump Max. Hold time and I'm gonna do a search for it along the top. Here, just type in jump. And here it is. Jump Max. Whole time. Essentially, the way this works is the longer you hold down the button, the higher your character will jump. Now, you got to be careful with this parameter because if you do set your jump, Max hold time to be anything longer than I would say. 1/2 a second, it starts to feel a little bit like a jetpack. Um, I am gonna go with something relatively small here, like point to fiddle with this as you see fit. But know that the bigger you make this number long, you hold down the jump button, the higher your character will continue to rise. Okay, so I'm going to compile in, Save that. There's one more thing I want to do that is jump related in here. And I'm gonna jump over to my view port for this because it's rather visual. I am going to add a component to my list of components. I'm gonna select my measure, that is my countess. And with that, select that I'm going to attach something to my mesh. I'm going to add a component, and I'm gonna be looking for something called in a row. Component and air components are great for just simply defining some spot within your blueprint where you want something to happen. I'm gonna call this aero component jump vfx spawned point. And as the name implies through some scripting this point right at the bottom of my countess's seat, this is where I am going to make some particle effects appear all right. That's literally all I wanted to do in this one. Let's compile and save one more time, guys. That is going to do it all for this video. We will see you win the next one. 14. Character Jump Script: Welcome back, everyone. In this video we will make our characters default a jump a little bit more interesting. By adding some sound effects and some visual effects, we will be modifying our characters jump script. And this will be done within our BP players. So make sure you've got him or her open up. I guess I'd say her for us, using our Countess character and find where you have your bit of jump script because we're gonna be needing that in a little bit again. I have mine in a separate tab that I called Move, set. And I created this graph right over here. Created a new graph for move set yours. Maybe still existing in the event graph if you did not move it. And that's fine. Just a organizational type thing. Okay, so the first thing we are going to do here is I'm gonna delete out this input touch. I don't care about having touch inputs in this game. This is just going to serve to clutter. My glad my graph. So bam, that is gone. Next thing I'm going to do is come over to the my blueprints panel and we're going to create a brand new function, and that is done right over here. Left hand side click on this plus function button. It's going to prompt you for a name. And I'm gonna call this jump up effects. And you noticed that when I created that function, it jump me to a new tab. It opened up a new tab where we can define what happens with this function. Well, im gonna make two things happening here. I am going to spawn e sound or rather, play a sound and spawn an emitter. So off of this output pin right here. I'm gonna drag aware we're gonna do a play. A sound two D and the sound that I want to play is going to be called. I'm just gonna click right here to bring on a little menu here, Countess, Underscore effort and you've got several options here. And one specifically that I was looking for is Countess effort. Underscore. Jump. I've got two different versions here, and honestly, I'm not sure if there is a difference between the two. Although I could see this one shows a duration of zero, this one shows a duration of 10.8, so you probably don't want duration of zero. So I'm gonna go with that. And I'm also going to click this little drop down arrow right here to expose the more parameters. And I'm gonna set my volume multiplier to be 0.5. So essentially half the volume because I don't want this to be to overwhelming. Okay, so that's all well and good. The next thing I want to do is drag aware off of here, keep the flow of execution going. We're going to do spawn, emitter attached. And firstly, we need to define which emitter that we would like to have. Um, this is going to be some, um I guess you'd call it dust particles trilling from our meshes feet. So if I click right here, I'm going to do a search for p. Underscore. Sentinel Sentinel leap. I believe it's just launched trail. Let me consult my notes. And it is the launch trail and this particular one, If I hover over it, it will show me that the path for this is in the infinity blade effects. So again, you don't have to add the exact same enters that I am. But I think this one works pretty well now. I do need to define where we would like to attach this to what's going Teoh be the component that we're going to attach this image or two. Well, we created this jump of the FX spawned Point earlier, a component that we added to our BB player. Let's drag a reference of this into our graph, and we can simply plug this in our attached to component input. One more thing I'm going to do here is adjust my scale. I'm gonna go 10.5 in the X, y and Z because not 0.5 but 0.5 in the X, y and Z because it was a little bit bigger than I liked in my testing. Obviously fiddle with that as you see fit and everything else here is looking OK, so with this function created, I'm going to jump back to my move set. Tabara have all my jumping script and here we go after we jump. I not only want the character to jump, but I want to play the jump effects. So this function that we just created is going to handle the playing of the sound and the emitting of the particle. How about we give that a try quickly? So let's compile and save and play. And you hear the countess making a little exertion sound as well as some dust kind of trailing behind our characters feet, which is pretty cool, but you'll notice a little bit of a flaw if you further testes that I'm gonna expose it right now. I'm just going to Spam the jump button. The character is grunting non stop because you could just keep pressing the jump button. And even though she'll jump on Lee once these effects are going to play again and again. So how do you fix that? Well, there is a simple safety check that we can do in here. I'm just gonna expand out our comment box here, give us a little bit more space, gonna move these guys over the side. I'm gonna put in a little bit of script right here. If you bring in your character movement component from your list of components, we can drag aware off of this and we can do a search for something called Is falling and off of this. We can get a return value true or false? Is our character falling or not? And if we drag off of this and bring in a branch, we can then hook up our script like so that when we press the jump, we're going to come into this branch and we're gonna ask, Is our character falling? And only if the character is not falling are we going to jump and thusly and more importantly in this case, play the jump effects. So let's give this a try. Compile and save one more time. Simple enough. Now let me spam that jump button, huh? And if I could even get to the edge here, let's drop off the edge. You can see no trailing particles or sounds or anything because our character is falling. All right, guys, that is going to do it for this one. We have shaped up our character jumping script. We will see you guys in the next video 15. Character Land Script: Welcome back, everyone. In the last video we went about shaping up our characters jumping script. In this one, we're going to be focusing on our characters. Landing script specifically will be adding some quote unquote game feel to our characters landing via some particles, some sound and even a little controller rumble for those of you that are going to be playing with some attached controllers. So this work is once again going to be done within our BP player. So if in case you don't already have them open, this is the path of folders to find your BP player DoubleClick under BP player to open it up. And once again, we are in our move set tab that we created our move set event graph here and here is our jump script. It would probably be a good idea if we had our landing script down below. So firstly, we're going to start off with in events. There is an event for on landed, so we can right click in some empty space here and do a search for landed. And there is that event on landed I was just talking about and we will bring this guy right on down here. Next thing we're gonna do is I'm gonna bring in a reference to my capsule component. Drag and drop this guy on in and we are going to get its world location and you'll see why here in just a moment, because we're gonna use this location for a place sound at location. So I'm just right clicking in some empty space right here. I'm going to say play sound at location. Let's hook up our location of our capsule component to that and for events on landed which will fire out when our character lands. What sound do we want to play? I do have one in mind. It is going to be called Countess. Underscore. Effort, underscore land. And there is a few options here for land again. This one has a duration of zero. This one has a duration of 1.1. So I would choose the 1.1. Uh, let's see. We can adjust some of the volume multipliers and all this. I'm actually gonna change the value multiplier of this too. Half that 0.5, and that should be pretty good there. Let's give this a quick test. So we're gonna play jump. Uh huh. Uh huh. And there you have a little sound for when she lands. That's good. Let's keep going here. Let's add any mirror for when they land. Okay? Ah, drag aware off of here, we're going to do spawn E Mitter at location. The emitter that I have in mind for this is going to be called P underscore. Master grunt, master grunt. Which one of these in drag dust. That's the one I'm looking for. And if you're wondering where this one is located, you can highlight over it. And this, too, is in the infinity blade effects. You don't have to use this one. Feel free to use which everyone you want. Now, of course, I need to feed in the location where this is gonna play. So here, too. I'm gonna bring in a reference to our jump the effects spawn point. We're gonna use that guy because if you remember right, this jumped the effect spawn point is right at our characters. Feet jumping back to are moves that right here. And I'm gonna drag aware off event and I'm gonna say get world location and then let's plug this guy in here. And with that little bit of script done, let's try once again Now should hear a sound and see a an emitter spawned as well. Jump. Uh huh. And you see a little puff of smoke there and that puff of smoke is pretty cool. But what I would like to do is I would like to scale the size of that puff of smoke depending on how high or what what type of distance our character traverse is when they fall. You know, we only want a small puff of smoke if they jump up a little bit and land. Whereas if there, coming from a high elevation and landing were jumping way up. In the case of our double jump, which she'll eventually be able to dio, I want that puff of smoke to be much, much bigger. So to help with that, we're going to be creating a brand new variable down here in R B people air. So click this plus variable button. We're gonna call this one jump scaler, and I'm gonna change this to be a float variable type. We can change it right down here by left clicking on that little pill. Ah, float is a number with a decimal point. And if we compile this, I'm gonna give this a really small number by default. I'm going to go negative, rather negative 0.1 Why this particular number? Well, because in putting together what I am about to be putting together, this turned out to be the math that I was looking for. And we'll actually expose this math to the screen in a little bit now to determine the size of this emitter that we're going to be spawning here. I'm gonna be doing some fancy math. So I am going to be bringing in our character movement component. Firstly. And the reason I am going to be bringing that in is because I want to drag off of it. And I want to get velocity. Get velocity way at the bottom. Here. Is this yellow one. Now, how did I even know that this existed here? Wealthy. Select your character movement component and you do a search in your details panel for velocity velocity. You can see you've got some velocity parameters right there. That's how I knew I could bring this out of our character movement component cause I knew that it existed within our character movement component. Okay, Next, What I want to do is I want to right click on this velocity pin and I can do something called to split the struck pin. Essentially, I'm gonna find out what is going to be our velocity in the Z direction. That is when our character is falling down to the ground. I want to know what her velocity is. And then when I'm going to do with that is I am going to multiply that drag a wire out of this and click the multiply button. Or you could do a search for ah, multiply there and we're looking for float times float right there, float times float And we're gonna multiply this value by our jump scaler variable that we just created like so And now what I want to do firstly is I want to bring in a print string notes I'm just gonna right click in some empty space here Print string and I'm gonna hook this on to the end of our spawn emitter at location. And then I'm gonna take the results of this and I'm going to plug it into our in string. A little conversion node will appear, And the reason I'm doing this is because I want to output this math to the screen so we can see what this number turns out to be. Now I'm expecting numbers between anywhere between zero and three is kind of the range that I'm going for. So let's compile and say this and give us a try. So now when I jumped, look in the upper left hand corner of my view port here and see when I land, what that number is so that we got 1.361 point 37 Little jump here is a little bit smaller , a little bit smaller still. Now I don't have double jump. We have not created that ability yet, so those numbers will get a lot bigger and they can get a little bit smaller if you know we do an even tinier jump. But you can see sort of the rains that we got going on there now to ensure that it stays within the range numbers that I want. When I'm going to do is drag off of this result right here are velocity multiplied, buyer jumps, killer. And I'm going to do a search for a clamp float node. I want to ensure that no matter what this math calculates out to be, I wanted to be between 0.5 or a max value of three. And the reason I am concerned with what this math results to be is because I want to drag off of our spawn emitter at location here, get this return value. This is going to output that emitter, and I'm going to do a search for a node called Set World Scale three D. This node can modify the size of this here. Particle. Okay, so I'm gonna draw, uh, leave our prince string in there for now. I'm gonna plug this into our set world scale three D, and it wants to know Well, what should the scale b. Well, if I simply take our return value from our multiplication here that we're doing and that we're clamping, we can plug that in is our new scale. So, essentially, the bigger this math turns out to be, and it will be bigger depending on if we're jumping from a higher location the bigger our particle is going to be. And I think to help me demonstrate this a little bit, I am going to place our character on a temporary platform. Let's do something like that just to make it so that she can jump up here and then jump off of this to have an even higher number a result for what the size of that particles should be. So here we go. You can see I still about putting those values to the screen. That was a small one. You could see the value right there when I jumped up on top of the block was quite small. 0.32 Now watch what the number spits out as when I land on the ground from this height almost a value of two. And you saw that that particle effect was a little bit bigger inside. So here we go. Definitely a bigger puff of smoke. So that's just a way to fine tune the size of our, um, dust particle when we land. Now, one more thing I want to do here before we wrap up our landing script here is I want to add a little force feedback that is controller rumble for when we land. So the way we're going to do this is I'm gonna firstly, right, click in some empty space and I'm going to do the search. Forget player, Controller. The controller is the thing that allows us to input move around. Our character gives us control over our character. Then I'm gonna drag aware off of this and do a search for play dynamic force feedback. So let's make sure that we wire this into the start and it's going to ask us for an intensity and duration Well, for a duration. Let's set that to be relatively short, like 0.1. And for the intensity for this guy, we hover over it. It says a valid value is going to be between zero and one. Well, how about we use our output from all this math back here? We can drag this out and let's do a float divided by float, and I'm gonna divide it by three. And that should give us a pretty good range in there. So if you have a controller, you contest this out. Now, if you don't have a controller, you don't need to worry about this playing dynamic force feedbacks. But I'm gonna try to compile and save here. I do have a controller handy, so I'm just gonna do a quick test here. We don't play, huh? Uh huh. And I can feel that rumble in my controller. Obviously, you can alter some of this stuff as you see fit, fiddle with some of the math. They're fitted with some of the clamp values, etcetera. That's gonna be up to you guys. You can spend a long time tweaking what you want your jumps killer to be what you want your clamp to be. If you want to divide this number, not even the duration here you can fiddle with as well. Anyways, guys, that is going to do it all for this one. Let's do one more thing. Put a comment box around this by left clicking in dragging. We will call this our landing script, compile and save one more time, and that will do it for this one. Guys, we will see you in the next one 16. HUD - Assets: welcome. Everybody in this series of videos were going to be putting together a nice looking HUD for our project. And in order to do so, we need to import some assets into our project to give us something toe work with so attached to this video lesson, there should be those assets that I'm talking about. And I currently have them in a separate folder for myself here to make this easy to do what you see over in here in my folder that I have, you should find yours attached to this lesson. I have a bunch of textures as well as a couple of fonts, and all we need to do to import these into our project is literally have a folder open with all of our different assets that you have downloaded. And then you can just drag and drop these into the content browser. Now I'm going to drag in my textures first, so make sure that in your content browser, you are in the content Metroid Vania Textures folder. And I'm just going to select my first texture here, hold down the shift key and select my last texture to grab all of these guys And then I'm gonna left click and dragged them on over into my content browser. And as soon as you see that plus symbol, you can release left click, and they should all import. Now, there are a lot of PNG files in here, and something that you will notice after these are done importing is that some of the images are going to look a Ziff. They don't have a transparent background, as you can see right here. So some of them look a little rough a little bit ugly. Um, and that's fine. You don't need to do anything to fix him up. But if it absolutely drives you nuts that they look ugly, What you can do is you can select one of these and I'll select my countess portrait pick right here. Just gonna double clicking on that to open it up. And you could see that it actually does have a transparent background. But in the content browser, it does not look nice. Neither does this Porcher background. You can set the texture group here to be you, I and then say that. And then if you come back to your content browser, it'll show is having a transparent background. Now, I'm not gonna do that here on video for all these, And in fact, you don't actually need to do it. But if this is driving you nuts for all these backgrounds, like, absolutely terrible, that is a way that you can fix that up. Um, okay, so I've got my textures here imported. Next, I am going to import a couple of fonts, so I'm going to jump over to my fonts folder content Metro, Vania fonts gonna bring on my Windows Explorer here. And there are a couple of Gothic style fonts here. I'm going to just double select both of these by holding down control and selecting both left click and dragging down into my content browser releasing When I see that plus button and it will ask me a question here. If I just kind of select on this, it'll say, font face import options. Would you like to create a new Aponte asset using the imported font face as its default font? Let's say yes to all. So when these assets import in, you're going to see two different assets imported for each of the different fonts that you try to import. There is this one for Gothic numbers, and this one's for Gothic numbers. One is called a font face asset, and the other is called a font asset. Uh, one thing I'm gonna do quickly before I change anything. Years, I'm just gonna click the save all button to save all the assets I just imported. Now, I just want to do a little bit more here with our font assets. Before we wrap this up. Any of these that begin with let me double click on this guy are gonna start with with Gothic letters. So not that one. Sorry. The ah, the one that actually has the letters on it. This, uh, looking one right here. So it's an actual font asset. We're gonna double click on this guy over on the right hand side, you can see something called legacy font size, and it's currently set to nine. And this is what our font looks like down here in this preview window, A nine is kind of a small default for this. I'm going to set this through 100 so that the default font size is gonna be a lot bigger. That I'm just going to simply click, save and exit out of that. And I'm going to do the same with our Gothic numbers font file right over here. Double click on that guy docking along the top here. Legacy font size. I'm gonna change that to be 100 as well. You can see what that font is gonna look like. I'm gonna save that. And we now have all of our HUD assets imported some fonts in some textures. Guys, that is going to do it all for this one. We will see you in the next one. 17. HUD - Creation: Welcome back, everyone. In this video, our goal is to create the blueprints needed to make and display an in game hood. Now, before we get to that, I just wanted to point out that here in our textures folder, I did actually double click on each of these texture assets and set the texture group of each to be you. I just so that these assets would end up looking nice in our content browser. That is not a necessary step for these individual assets to look nice in our eventual HUD, But I like it to look nice in the content browser. So I did do that extra step. So that is why they all are looking normal now. Okay, let's get to creating a brand new widget. This widget is going to be our HUD that we output to the screen. So let's do this with our Siris of folders here. I'm going to select our widget folder content Metro Vania with it. Widgets. We're going to right click in some empty space and in our right click menu, we're gonna come under user interface at the very bottom and choose a widget Blueprints now widget blueprints are useful for creating menu screens or the HUD. We're going to use this one for our HUD. So I'm gonna name this W B p for widget blueprint Underscore, Hud, We're not going to create in anything here just yet. Next thing I'm gonna do is I'm gonna jump over to our Metroid Vania Blueprints Frameworks folder, and I'm going to create another asset in here. Right click. We're going to create a new blueprint class and in here come underneath your all classes. Drop down, click this little triangle, and you're gonna be doing a search for HUD. Selected this hud right here. Make sure it's got that little icon right there. Don't select your WPP, hud, that we just created. That's the one we're looking for. And then click this green select button. We're gonna name this guy m the, uh Let's try that again. Right click rename. We're gonna call M V for Metroid. Vania underscore. H U D. Now what this is is a HUD class blueprint, and what we need to do here is we need to actually tell our project to use this HUD class blueprint. What are we gonna use this one for? Well, we're actually going to use it to call our HUD to appear on Scream. Firstly, let's set this HUD class blueprint within our project settings. So I'm gonna come under my settings button project settings and right over in the left hand side. We've got the maps in Moe's option, and over on the right, we've got our selected gay mode. Is this side scrolling game mode? And if I click this little triangle dropped down, we can see our BP players slotted in is our default pawn class are HUD class is currently defaulted to this HUD class HUD class. Get it? That was their by default. I'm gonna click this little drop down and shoes are m the HUD that we just created. And with that done, we can close out of our project settings and I'm going to jump into my m v underscore HUD asset right here by double clicking on it. And you could see that this blueprint does have a view port which we will do nothing with a construction script that we will do nothing with but this event graph. I am gonna put a little bit of script in here So go ahead and click on over here. There are some default event nodes. I'm going to get rid of these bottom two by left clicking, dragging and deleting. But I do want to do something off of this event. Begin play. I'm gonna drag aware off of here, and I'm going to do a search for create widget and the widget we want to create is R W B P Hut asset that we just created that waas this asset right here jumping back to my frameworks folder. And then what we'll do is we'll take that return value so that's gonna create that widget. And then we're gonna take this off of here, left, click and drag and say, add to view port. So now what we have just done is in our project settings. We told her project settings that Hey, this is the HUD class blueprint that we want to use for our project. And within this hard class blueprint, we've said, Hey, we want to create our HUD widget and added to the view port now are HUD Widget currently does not have anything in it yet, So if I was to jump in and play right now by clicking this, you're still not going to see anything. So that is what's to come next. We've got to start building out our huddle out so we can see something. Guys, that is going to do it all for this one. We'll see you in the next one where we begin to lay out our hud. See there. 18. HUD - Layout #1: Welcome back, everybody. In this video, we will begin to lay out our initial hut here. We just want to display our player portrait and our player health laying on our hut here in full is gonna encompass a few videos. So we're just gonna start shipping it off a little bit by little bit. And to do so, you need to come into your content. Metro and Vania Widgets folder and double click on your W B P hud asset. So what you see in front of you is the layout where we are going to start laying out some of these widgets from our palate onto our our screen, if you will hear. So this is what we're going to do. We're gonna add some widgets into our layout or hierarchy first, and then we're going to set some details for each. So the 1st 1 we're gonna add over in our palate here is we're gonna add an image, and you can add it simply by left clicking and dragging right here onto your canvas panel surface. Or you can attach it right down here into your hierarchy. So I do want this attached to my canvas panel like so? So I'm just going to drag and drop it right there. And I'm gonna f two on this one. Have to to rename it. And I'm gonna call this portrait underscore background. And you know what? While I'm doing this, how about I said some details for each of these right away, so you can kind of see what they're gonna look like. So with this selected, I'm gonna go over into my details panel over on the right hand side, and I'm going to set anchor for this to be this upper left square that's going up anchor to the upper left hand portion of my screen. Okay, with that said, I do have some positional settings in mind. I'm gonna set this to be negative 35 in the X. The why position is gonna be negative. 50. The size of this is gonna be 3 50 in the X in 3 15 in the why and the image that I'm going to use for this I have to expand some triangles out here where there's this little brush option. Gonna click on that little down arrow. And here's where I can slot in an actual image. And if I click right here, this drop down, I can do it. This is a weird behavior with it. If you just simply click the drop down, it's gonna bring on this save asset. But if you click and then hold down your left click and come under the browse option right here, you can then do a search for t underscore portrait underscore backgrounds. What you're looking for is this black and pink sort of. Ah, scrubbing right there looks kind of cool. Right? Um and that's all we want to set for that one. Next, we are going to add another image. So I'm gonna drag and drop this on top of our canvas panel because I want to attach it to our canvas panel, Which is this basically this blue rectangular area right here. I mean, a selected hit f two, and I'm gonna call this our health underscore background, like so. And with that selected, I'm gonna have to flip over my page of notes here. I'm going to come over in the details panel. The anchor for this is going to be the upper left. The position X is gonna be a to 10. The position? Why 33 size X. We're gonna set this to be 4 50 And the size why is going to be 50? Um, and the image for this we're going to use again. You gotta hold down left, click here and then release When you get to this search area, I think that's a little bit of an annoying behavior. I'm gonna look for t Underscore Inc Black. That's the one we're looking for. So the texture looked kind of squished before, but when we give it to this size over in our details panel, that kind of stretches it out. Um, Z order. This is basically the order of widgets, as when they are overlapping one another. Which one should be on top. Which one should be on the bottom? So if you hover over the zord er, here is people like to say that Z order is this. Higher values are rendered last, so they will appear on top. Now, I am gonna be adding several widgets here, and I do want some to peer on top of the others. I'm gonna set this to one, even though it is already on top of my portrait background set that to be one is next. I am going to add a health meter and this is gonna be done by adding this progress bar, which it's the left click. Drag this on top of our canvas panel release. Let's select it. Hit F two to give it a name and we will call this health underscore Meter. This is gonna be used to represent our players. Health the details for this guy once again flipping over my page of notes. We're going Teoh, anchor this to the upper left hand portion of the screen. The position X we're gonna set to be 2 30 The position Why 47? The size X is gonna be 3 90 the size Why is going to be 20 and the Z order for this? I'm going to set to be to and I'm going to set Let's see style, style style. I'm gonna slick this little drop down. Ah, we're going to select our background image and then we're gonna go to tint. And currently we've got style background image, which is kind of this gray color tint white right here. Let's set this a value to be zero, so you can see that blanks it out now and coming down a little bit lower. Below that, we've got the style, background image, Phil images what we're looking for now select that guy. And for the image for this we're gonna select. And again if you just click it, you'll get that little pop up. So select Hold down your left click and then release in this search bar. I'm gonna do a search for T Underscore Inc underscore Pink. Now you don't see anything yet because down below we need to set our progress bar percentage. It's currently at 0%. Let's set this to be one. And right now it's said to have this feel color of blue. We're gonna change that in just a little bit here and it says, bar fill type left to right So you can actually left click and drag on this and kind of move this left to right so you could see that as our health decreases, it's going to kind of come down to the left and then when we it increases, that can fill up to the right, like so Okay, down here, where there's this appearance fill color end opacity. I'm gonna change this out to be Let's go kind of that hot pink color like that. And that looks pretty good. So, again, the idea here is we added this background, this health background so that we would kind of make this pink stand out a little bit more . Sort of like have a border to it. So that was the idea there. Eventually selecting our health meter. We're going to bind a variable to this percent value so that we can actually drive the meter to G o lower or higher as we see fit. Okay, so with that one done, we got a couple more widgets we're gonna add here. Let's add another image. Let's select this left, click and drag on top of our canvas panel. Then I'm going to select it, do f two, and we will call this one. Portrait's for Troy. Eat apparently cannot spell today. Portrait underscore, pick. And as you can guess, this is going to be our countess picture. So with this one selected again, gonna come over to the details panel, we're going to set the anchor to be that same upper left our position X We're gonna set to be 90. Our position why is gonna be 10? The size X will be 1 75 and the size why is gonna be 1 75 and the Z order for this. You can see its right now. This is an example of what Z or can do. It's currently behind are two different Ah meters. Here are actual meter meter and then our health background that black border. So if I said rz or here to be three, which is a greater number, it will now draw our portrait Pick on top of all that, which is what I want for this. And down here in the appearance section under the brush image, I'm gonna left click, hold down. Left click, release left, click and do a search for t Underscore portrait pick. And there is our Countess picture. That's pretty good then. Last but not least, we're gonna add one more before wrapping up this video. We're gonna add a text widget, not a text box, but a text widget. Go ahead in drag and drop this on top of our kin. This panel We're gonna select it f two to change its name, and I'm gonna call this health underscore current. And of course, we've got some details that we want to set with this. So come over to the details panel. The anchor is going to be the upper left square that you saw with all the others. Then the position X is gonna be to 48. The position why is gonna be 40. The size X is going to be 100 the size why we will leave at 30. Actually, you know what? We're not going to set a size X and size. Why, In fact, you can zero both of these out because we are going to size to content. Click this box right here. And currently you're not going to see anything yet. Ah, you're not going to see how this effects things. But you will. In just a moment here, I'm gonna set our text year to be 100. And of course you can't see our text yet because it is the Z order of zero, which means it's gonna be drawing behind these other items. So I'm gonna set that to be three. That'll draw it on top, then down below in our appearance section I am going Teoh, click under color and opacity. I'm going to set our be value here to be zero Make it kind of yellow and our fought here gonna click this open and I'm gonna set our font to be Let's do the Gothic numbers font right there. And I'm gonna set the type face font size to be 40 not 10 not 10 40 like so So that's a little bit bigger there. So you can see with the size to content. Um, if I was to uncheck this, I would then basically have my size of my whole widget shrunk very badly, and then it becomes very hard to select it. So with the size of content, it will wrap the boundaries around this to make it really easy to click and move if you so want. So I'm just gonna set that back to the hard coded values that I had of position X 2 48 position. Why 40 now? One thing I noticed that could help this text out a little bit is it could possibly use a border. An outline, if you will. So let's come under our appearance section right here and we've got some outline settings right here. Let's try and outline size off one for right now. Something very thin, Very subtle are outlined. Color is currently set to black. And you know what one is a little bit too small. Let's try three. Maybe something a little bit thicker. Three is probably pretty good. So eventually we're going to bind this number, our value 100 to a health value. So 100 is just here by default as a placeholder. Guys, that is gonna do it, offer this section of laying out or HUD. What we can do now is compile and save. And if you remember right from the previous video in our framework blueprint that we created our M v Hud, we were actually creating some script to create our widget and added to the View port. Well, now that we've actually added a little bit of HUD, I should be able to click play. And now you see our hut up there in the upper left. So there's plenty more work to be done yet, but we're off to a great start, so let's keep the momentum rolling. Guys, we'll see you in the next video 19. HUD - Layout #2: Welcome back, everyone In this video, we are going to continue with our HUD layout. Specifically, we're going to add a man a display to our hud. And if you don't recall where we left off in the last video, I am right here in our content. Metroid, Vania Widgets folder W B P. Hud was the name of the widget blueprint asset that we were working within. So double click on this guy to open it up. Now, why are we going to be displaying some manna information on our screen? Well, because we're gonna have some special skills that are character is going to be able to use later on in this project that are gonna consume Semana things like shooting a fireball, things like turning into Miss. We're going to require some manna for that. So to do this, I am going to start off with adding in image widgets, and I'm gonna simply drag and drop this onto our canvas panel. And this 1st 1 I'm gonna hit f 21 and I'm gonna rename this mana underscore base. And I think my approach this time is gonna be a little bit different than last time I'm gonna add all of the widgets first, and then I'm going to go back and set its details. So you're going to see a cluster of widgets occupying the left hand corner of the screen for the time being. But don't worry. We'll go back and fix it. Ah, the next widget that I'm going to add is in overlay widget. I'm gonna drag and drop this one. Also on top of the canvas panel, this one is gonna be called F two or not have to. I'm gonna hit F two to call it Amana Underscore overlay. And now I want to attach them widgets to this manna overlay. Now, if I hover over this overlay widget up in our palate panel right here, it gives us a little tool tip that says this allows widgets to be stacked on top of each other, uses simple flow layout for content on each layer, which is gonna be what we want because we're going to include a background, a meter and a new miracle value within this overlay. So next one I'm gonna be looking for is an image. So I'm gonna drag and drop this not on the campus panel but on our mana overlay. And I'm gonna call this hitting F two on it. Mana underscore background. Next thing I'm gonna be looking for is a progress bar widget Gonna drag and drop this on top of our men overlay attaching it to it. This one is going to be called Mana Underscore meter and then we're gonna add one more. We're gonna add a text widget. We're gonna drag and drop this on top of manna overlay. And I'm gonna hit F two on this and call this semana underscore current. And with all those added, we can set some details for the use. So let's select our mana base first. And with that one selected, we're gonna come over to the upper right for our details are anchor for this is we're gonna set this to the upper right corner of our screen now these anchors, what they do is they set the position relative to the anchor. So right now you can see that our widget is way over here in the left hand side. But our anchor is over in the upper right hand corner. So it is showing that our exposition is that negative 1921 and change relative to our anchor point. So with our anchor points said to our upper right, we're going to set our position x to be negative 3 16 and then I'm gonna set our position. Why here to be 20. Positive wise. The downward direction Negative. Why is going to be the up direction? And for the size of this, I'm gonna set the size X to be 1 20 in the size. Why? I will set to be 100 now for the image for this I do have one that we haven't imported. So come under appearance brush, get a left click, hold down. Left click. Come under my search bar. And then I'm gonna do a search for t underscore Mana underscore Base. It's gonna look like a little orb holder there. Now, something else that this anchor points does for us is that if we were to compile, save and jump in and play here now you can see once it does actually decide to play for me . Now, if I was to do shift in F one so that I could get my mouse cursor here and resize my view Port window here. You can see how it's going to keep that Particulate her, man. Ah, holder there. That little orb in the upper right hand portion of the screen. Okay, so that's what anchoring also does for you is depending on how you try to resize your screen. It's gonna try toe, keep it locked into that portion of the screen. Let's get the details for the rest of these guys knocked out. So let's select our Mana overlay. And we will also set the anchor for this to be the upper. Right? The position X. I'm gonna set that to be negative to 95. The position why I'm gonna set to be eight the size X. I'm gonna set to be 80 as well as a size. Why, that's gonna be pretty good there for now. Next one I'm going to select is our man A background. And what do we got? Sheer. Ah, we're gonna be fine with our patting settings are here in our horizontal vertical alignments. However, down in the appearance section underneath the brush area here, we're going to left click hold down, left click, release, left, click. And I'm gonna do a search for t Underscore Mana. We're looking for this t underscore Manop background. There we go. Sighs here should say 10 24 by 10. 24. Next, we're going to select our man a meter here. Details for this will read as follows. Let's that are horizontal alignment to be all the way filled horizontally. You can see how that's going to spread this all the way across, like so, and are vertical alignment. We're going to do vertical line. Fila's well, and you're going to see how that fills this all up for the style settings. We are going to set this style tent a value that is the Alfa value to be zero meaning we can see all the way through it. It's completely transparent, and we're gonna leave that as it is for right now. Um, we're going to set the fill image down below where it says, Phil, image image, left, click, Hold down. Left click released, left, click. And here we're gonna do search for t underscore Mana orb. Okay. And then down below in the progress area, it shows percent of zero. I'm going to set this to be one for the time being, and you can see that it fills in our orb image right there. Um, we are going to bind this to a variable eventually. Now it also says, Ah, bar fill type left to right. I do want to change that, to be bottom to top so that when this value does change, it's gonna go like this and let me see. Is that all we got there? Actually, I could see there's something's off here a little bit, but we'll look to fix that all up in just a moment. Let's continue on, though, to our Amana current text block here and here. I'm gonna come up under the padding settings. I'm gonna click this little drop down arrow and where it says left padding. I'm gonna set that to be to top padding. I'm gonna set this to be five and the bottom hatting. I'm gonna sit this to be 10 horizontal line and I'm gonna set this to middle as well as a vertical alignment and the text. I'm just gonna put in a placeholder value of 99 because eventually we're gonna buying this to a variable as well. But not just yet down in the appearance section I'm gonna change this. Be value here to be zero because I want a straight yellow color. You can modify that as you see fit. And the font family here gonna change is to be Gothic numbers like so font size. I'm gonna make this be 40 So it's gonna pretty much Philip are orb area here coming down below a little bit more outlined setting is I'm going to set this to outline size of two to put a little bit of a black stroke around our numbers. And let's see shadow color shadow offset. Let's do shadow offset of two in the X and two in the why and for the shadow color. We do have straight black, although we need to make this a value, be one so that we can actually see a little bit more of a black shadow. One last thing I want to fix up before we put a wrap on this video is I'm not happy with that or back there. I want to double check our settings for that. So I'm gonna check our man a meter, which is using this T Mana orb and right now, we are drawing it as a box, which is not what I want. I want to select this right here under Phil Image draw as I'm gonna change us over to an image. And that is more of this shape that we're looking for right there. So this looks much nicer. Let's compile and save here. And now we've got a man on display on her Hud. So if we jump in and play, you can see things are starting to shape up. Okay? Gonna escape out of here for now, guys, that is going to do it all for this one. We've got some more work to do on the HUD. Upcoming, but we are getting there. See you in the next video. 20. HUD - Layout #3: All right. Welcome back, Everyone. In this video, we are going to continue laying out our HUD. Specifically, we're going to be laying out the white magic skill portion of our hut. Now, there's a lot of work to do in this one, and you have the benefit off pausing the video where you need. So I'm going to try to move a little bit faster in this one to ensure that we get everything done within the allotted time. So if you haven't already done so, find your W b p hud widget in your content. Metroid Vania Widgets folder Double click on that guy. Open it up. This is what we have so far. And just like I did in the last video, I'm gonna add the widgets first down here into our hierarchy, and then I'm going to go back and set the details. I think I'm gonna be ableto work in a little bit quicker fashion by doing that. Okay, so the 1st 1 I'm gonna add here is an image. I'm gonna drag and drop this on top of our canvas panel, and I'm gonna hit F two here, and I'm gonna call this w magic Starburst. Okay, Next, What I'm gonna add is an overlay gonna do search for overlay. This one is also going to be attached to our canvas panel. I'm gonna call this F two w magic underscore overlay. Next one I'm gonna be adding is going to be attached to my overlay. It is also going to be an image. So select an image drag and drop this on top of the overlay like this. And you have to be certain with these widgets that you are laying them out here in your hierarchy just as I am doing so like your man overlay over here. These widgets need to be attached to the man. Overly, not the canvas panel C Want to ensure that you're doing it like I'm doing it here. So I'm gonna click to on this, and I'm gonna call this one w magic image. Then I'm gonna bring in a progress bar. Dragon dropped this on top of our overlay as well. Hit F two. This is gonna be w magic underscore. Cool down. It's gonna be a cool down timer. Okay. Next one we're going to add is a border widget. I'm gonna drag and drop this one on top of our Candace panel. This one is going to be renamed Teoh W Magic underscore Border Next one we're going to add is Do, do, do do do So this is gonna be a little confusing cause it's gonna be an image widget that I'm going to attach the canvas panel. However, I am going to rename it W Magic Underscore Button. And the reason I'm going to call it button even though it is an image widget and not a button widget is because this is going to be an image of what button to press. Okay, a couple more widgets to adhere. Gonna add a text widget. Gonna also attach this one to the canvas panel. I'm going to rename this one hitting at two on a W Magic underscore. Mana cost some Texas going to print out how much the given white magic costs than another text widget here gonna attach this one to the canvas panel. This one is going to be called the W Magic underscore text. And now to set some details and I have some handy dandy notes to help keep me on track. I'm gonna select R W Magic Starburst first and over in the right hand side, I'm going to set the anchor for this to be our upper right square here. The position x for this is gonna be negative for 100 the position why we will set to be 55 the size X is gonna be 50. And the size why is also going to be 50. And the appearance, image appearance, brush image is going to be I'm gonna left click, hold down Left click Release left click. And this is going to be t underscores Star Starburst. That guy that we imported there, this is gonna be a little starburst effect that's gonna be play behind are slotted white magic whenever we change what is currently slotted as our current active white magic. Okay, Next, Like George W Magic overlay, I'm flipping over my page of notes here. The anchor for this one will also be the upper right square. The position X for this one will be negative for 22 33 for the position. Why 94 the size X end the size. Why so a square about that size? I'm going to set the Z order here to be five, cause I'm gonna have a few things kind of stacked on top of each other. And it is the order of five is going to put this one in the stack where I want it to g o. So that is going to do it all for that one. Next, Let's come under R W magic image. So, like that guy, we are simply going to leave the padding in alignment settings alone. However, under appearance and brush, we're going to left click hold down, Left click, really select click. And this is going to be a T underscore. Magic underscore Empty. That's what this lot is going to look like when we don't have any magic slotted in there. Ah, we are eventually going to bind this two variables. We can slot out that image, but for now, it's gonna be black. Next, come under the magic. Cool down. Select that widget and four are different details. Here. We're going to change our horizontal alignment in our vertical alignment to be Phil. So it's gonna Philip this entire space for these style settings. Make sure you change your Tinti. Earthy a value. The Alfa Valley you're gonna change that to be zero. So it currently looks like it's completely invisible. The fill image right here. We're gonna change out our fill image. You're so left. Click hold down. Left click. Released. Left. Click in this. We're gonna look for t underscore. Cool down that texture that she imported. Ah, we're going to set the A value for this will come under tents. We're going to set the A value for this to be 0.5, so it is gonna be somewhat transparent. Um, and we're going to set the draw as not as a box, but as an image. Um, let me see if there's something else we need to set for this. Yes, sir. Is we need to set some progress settings. We want this bar type to fill, not from left to right, but rather bottom to top. And for the percentile. Eventually, we're gonna bind this to variable. But for now, we're gonna set this to a one. So that is going to give us a little bit of a fill. Their, um So our bill color and opacity here, let's set this to be straight. White is well, shall we? So I'm just going toe. All I did there is I selected are color bar and I said this to 111 etcetera. I'm gonna click. OK, there. So that's gonna be our field color capacity. So if I change our percentage here like so you can see how this is going to be a cool down that decreases over time, like so Pretty cool. Okay, next one, the W magic border. What kind of settings do we have for this one? Well, coming up to the upper rights, we're going to set the anchor for this to be the upper right square position X is going to be negative. 4 62 position. Why is gonna be negative. Five size x and size wire, both going to be 1 60 Okay, um, the Z or so where do I want this? On the stack. I'm gonna set this to be a Z order of 10. I think I set my Z or for these in increments of 54 All these eso instead of like, 123 I set, uh, like, 05 10. And for the appearance for this, I'm going to skip over this content area for the appearance Brush brush image right down here. I'm gonna left Click Hold on. Left click, Release left, Click. And I'm gonna do search for t underscore White Magic. So that is going to sort of be our container for our white magic image. All right, So if I was to centered, see or hear to be something like zero you could see would be a little bit behind it would still look kinda normal. But I want us to be on top of everything, so I'm gonna set that to be 10. You can see my alignments are not perfect, but it's pretty good. I'm pretty happy with that. Okay. Next, we're going to select a W Magic button. We're going to set the anchor for this to be the upper right corner position. X is going to be a negative 5 10 relative to that right to corner position. Why is going to be 45 positive relative to that right corner anchor? Ah, this size X is going to be 65 size. Why is gonna be 60? We're going to set the Z or for this to be 15. We don't really need to set that for this, but it's going to be most on top, if you will. And for the appearance brush, image left, click release. And down here, we're gonna do a search for that. T underscore. L trigger 01 So there is our l trigger button. Looking pretty snazzy. We're gonna have to oppress the l trigger button to activate our white magic skill, Whatever slotted in there. So that's something to look forward to. Okay, Next, we're gonna select R W Magic Man accosts the anchor for this one is also going to be the upper right corner. The position X relative to that upper right corner anchor is going to be negative. 400 position. Why 96 size X in size wise both going to be 50. And our text for this. I am going to put in a dummy value a placeholder value of 99. Eventually, this is going to be bound to a variable as well. And here too, you see, we cannot see that 99. We're going to set rz order here to be 15 so that it comes out on top now for the appearance. I'm going to set this to be a yellow color. So I'm gonna set RB value here to be zero. I want a yellow color, the font family. I'm gonna change this to B Gothic numbers. I'm gonna change the size to be 25. So just slightly bigger and flipping my page and notes were getting their guys. I am going to set in outline size for this to be to little black stroke around everything. And I am gonna have a little bit of a shadow offset as well. So she had offset in the ex. Im gonna set to be to the wise gonna be too. And you're not going to see this shadow offset it all until you set the a value that is the Alfa value there to be won so you can actually see how its shadows. Now, let me see. I I'm gonna nudges over a little bit. So my justification here, I'm gonna set this to be in the middle, so that's gonna bump it about to the middle of this white magic icon holder That's looking pretty good. So one more to go before we wrap this up, select your white magic text right here, lest widget We're also going to set this to be anchor of the upper right. The Position X is going to be negative. Four 4 15 Position. Why is going to be 25 size X in size? Why is not gonna matter? Cause we're going to size to content. So we're gonna check this box right here. I'm going to set the Z order to be 15 so brings it onto the top of the stack here. 15. The text I am going to change to say ready. And for the appearance I'm gonna change is to be a yellow tech. So if I set the b value here to be zero, that's gonna give me yellow font family. I'm gonna changes to be Gothic letters. Gonna change the size here to be 15 the outline settings. I'm gonna change this to be a size of two all line color. I'm gonna leave it straight, black like it is the shadow offset. I'm going to set to be too in the X in the wind. Of course, I'm not going to see this until I said the a value here to be one, and this is centered up pretty good. So that is going to do it for our a white magic. Hud, we've got a button telling us which button is going to activate our white magic. We've gotten a little icon slot here. An icon holder, if you will. We've got ah man, a cost associated with activating our white magic right here. And this is going to be a text indicator to let ourselves No. When we 10 usar white magic skill Because some of these skills are white magic skills will have a cool down timer. Where is are black magic will not have that same sort of timer. So let's do one more thing. Guys like here, Let's compile in Save our hut is shaping up. We are almost done. Ah, One more video to go with this. That is going to do it all for this one. We will see you in the next one 21. HUD - Layout #4: Welcome back, everyone. Last video here for our HUD layout. The goal in this one is to lay out the black magic portion of our HUD. So let's jump right to it. We are within our W B p Hud asset here in our content. Metroid Vania Widgets folder. This is what we've got. So far, we're gonna be adding some more widgets over here to our hierarchy to represent whatever black magic skill we've got slotted into our right trigger button. So without further ado, let's bring in an image we're gonna do like we did before. We're gonna attach some some some widgets to our hierarchy first, and then we're gonna set the details. So let's go ahead and left. Click Grab our image. We're gonna drop this on top of our canvas panel. Gonna hit F two on this one. This one's gonna be called Be magic for black magic underscores Starburst. We're gonna add another image widget. Just gonna grab this drag and drop it on our campus panel Hit F two on it. And this one is going to be called Be magic. Underscore Image. Next one we're gonna grab is a border which it gonna drag and drop this on our canvas panel Hit F two. This is gonna be called Be magic. Underscore border and we're starting to run out a little bit of space here. So just two more to add. We're gonna add a test. A text widget. Next dragon. Drop that on your canvas. Panel F two be magic. Underscore Mana costs will be the name of this one. And last but not least, we're going to add an image widget. This, too, is gonna be added to our canvas panel getting a hit F two on this one. And this one is gonna be called B magic. Move my mouse cursor out of the way there. Underscore button. So it's a little weird in that this is actually an image widget, but we're naming it button because, like we had the l trigger button up over here, we're gonna have a button to represent our our trigger. Okay, So with all that in place, let's start setting the details. So starting with R B Magic starburst, make sure that that guy is selected. We are going to anchor this one to the upper right square here. The position for the X is gonna be negative. 1 62 The why is gonna be 55. The size X is gonna be 50 and the size why is going to be 50. So that is gonna be our starburst, and we need to slot in that image of our starburst. So under appearance brush, I am going to left click and hold release left click down in my search bar and I'm going to do search for t underscore Star burst right there. It's gonna look kind of small, But later on, we're gonna use this to ah ah as a kind of animation that's going to spin behind our image holder here to represent whenever we change out whatever magic is slotted in that particular location. Okay, so next one, let's go select RB magic image over here in our hierarchy. Ah, the anchor for this one is also going to be the upper right square there. This guy Position X is gonna be negative. 1 83 position. Why is gonna be 31 size X? We're gonna set to 90 and the size why is going to be 90 as well? We'll set the Z order for this to be five. And the brush the appearance brush image is going to be left. Click and hold Release left, click. And this one is gonna be magic. Underscore. Empty. This sort of black looking empty, empty circle, if you will. Okay. And next one, we're going to select RB Magic border down here in our hierarchy, this one, too, is gonna have the anchor point in the upper right corner. And these positional coordinates are relative to that anchor point once again. So Position X is going to be negative to 25 relative to that anchor point. And this little flower icon represents our anchor point. By the way, position why is gonna be negative. Five size X is going to be 1 60 Sighs. Why is going to be 1 60 and rz order here? We're gonna set this to be 10 over the top of our starburst there, Um or sorry, RB Magic image. And then for our appearance brush, we're gonna left click hold release left, click. And here we're going to do a search for t underscore Black Magic. This is kind of the holder, if you will. The asset that's going to serve as the frame for our black magic image. Okay, we do want to make sure that we draw this as an image, which it is. So this is all looking good. Next one. We only got a couple more of these and we can put a wrap on our hunt here. So RB magic man accosts like that guy anchor point. As you would expect by now, upper right position X relative to that anchor point is going to be negative. 1 60 Position. Why is gonna be 96 the size X 50 size? Why, 50? The Z order. You can see it's behind things. So let's bring that to the top by putting it at 15. That will put it to the top of the stack. I'm going to set our text here. This is going to be a placeholder. Valium. Just gonna set it to 99 for now. Eventually, we are going to bind this to a variable. I do want the color of this to be yellow, so I'm gonna set the be the blue value here to be zero under the appearance section. The font family is going to be our Gothic numbers size will be a little bit bigger. Will send it to 25. We do have some outline settings here is well, the outline size is going to be too. We're gonna leave it at a black color here. The A, as one is going to make it. So that shows if you set this 20 That outline is not going to show. So make sure the outline color A is one. That's the Alfa value. How transparent or opaque it is. Ah, shadow offset. Here. We're gonna set that to two in the X and the y. And you currently don't see any shadowing to this until you set the shadow color a the Alfa Value to be one like so, lastly, I'm gonna set the justification here. So you see, it's a little bit over to the left. Let's set that to be a little bit more to the middle. And maybe that's not centered perfectly, But I'm going to say good enough for now. Uh, sorry. We do have one more widget here. That is RB magic button widget. So make sure you select that guy is you may expect this is going to be anchored in the upper right corner. Position X is gonna be negative. 65 position. Why? We got 45 Size X is going to be 65 size. Why is 60 We're going to give us a Z order of 15 even though it's not really going to be touching this too much. Just this kind of a precaution, in case it does intrude on it a little bit. And our brush image here, I'm gonna left click and hold left. Click release and t underscore. Our trigger 01 is the one we are looking for here. Now, I actually am going. Teoh, give this a little bit of a tent here. You don't have to do this. And maybe this doesn't look good. You can see I've kind of got a white frame here to indicate white magic, and I kind of keep this button looking white is well, I've kind of got this dark color for black magic as well. Just kind of this hot pink color. I'm just gonna cull arises button a little bit. Totally your choice year. But I'm going to set the G value here under the tent, not the color rapacity, the tent was that the G Valley to be 0.5 and the B value is going to be 0.5, and that's basically going to give it a pinkish color hot pink. That kind of matches this side of our mana equation. So that is pretty well going to do it for our hut. Let's compile and save and play and see what this looks like. A lot of work done over the course of four videos here so you can see how this all kind of looks on our screen, and I'm just gonna hold down, shift and then do F one. And if I do that, my mouse cursor will appear on screen so I can kind of resize this window and you can see that our mana objects right appear in the upper right there, staying anchored to the upper right hand portion of the screen. Where's this health character info up over here is staying anchored to the left most portion of the screen so that you kind of resize it will try to keep those things in their respective corners, but guys that is looking pretty good. So job well done. We have a HUD layout. All together. Now we just need to bind some of these various widgets to some variables that is upcoming. We will see you guys in the next video. 22. HUD - Player Attributes: Welcome back, everyone. In this video we will be adding some health and man of variables who are player character so that we can ultimately reference them in the HUD. So we're gonna be laying down a lot of groundwork here. Uh, I am currently looking at R W B P Hud Asset, and if you remember, right, we've got things like this Health meter here, this pink bar and over in the details panel, we've got this percent value that goes from 0 to 10 being a 0% 1.0 meaning 100%. And as this scales up and down, you can see our meter either increasing or decreasing. Now, you'll notice something about these numbers. These are what are called float values. They are decimal point values. Now I'm going to actually set some of our variables on our player as float variables. Even though you may say like, Well, why don't we just have a nice round number, like, say, 100 health? Why? Why is it not an integer variable? Well, I'm gonna set him his float variables first so that we can do some math on them to convert them to a percentage here so that it will play nicely with our HUD meter here. So let's jump on over to our BP player where we can create some of these variables jumping back to my main editor. I'm gonna come under my Metroid Vania Blueprints folder Characters folder. There is my BP player. Double click on her to open her up. And over here in the left hand side is where we are going to create some of our health in mana Variable. So right here, click this plus variable button to add a variable. I'm gonna call this 1st 1 Health Max, and the type that I want this one to be is again not if not an integer variable, which is a whole number but a float variable, which is a decimal point number. I was asking me right now to compile to set a default value, but I'm not gonna do that just yet. I'm gonna create all of these variables first and then set their default. So with our health Max created, I'm going to select it. I'm gonna right click on it and I'm going to duplicate it. And this one I'm just gonna be called. Just gonna call this one health current. Now, with that already highlighted just like it is now, I could hit control w on it now. Give that a world to create a duplicate of it straight away. As you can see, when you right click on any of these, the hot key for duplication is controlled. W I'm going to select this new one that I just created. I I am going to call this one health percentage. And now I've got health Max Health current health percentage. I'm going to create the manna equivalent of all these. So I'm gonna select Health Max right there. It's highlighted. Yellow. I'm gonna do control W. And I'm going to call this manna, Max. Then I'm going to select health current. It's highlighted. Yellow control, plus W This is going to be called man occurrence, then. Lastly, I'm going to select Health percentage is highlighted. Yellow controlled W on that. And this is going to be called mana percentage. I could have duplicated any of them. I really wanted to. I didn't really use that shortcut to well when I was renaming them, but I could have Okay, so I am going to compile here so we can set some default values that I'm gonna start up with my health, Max. So I want our health max to be 100 to start with, and I'm gonna create a category for these variables. Right now, I'm seeing this default category, but you can name your own categories, and all you need to do is selecting Here, left, click and drag to kind of highlight all that text. And I'm gonna create a category called player Attributes Hit, Enter. And now you can see over in my variable section, it is created a category called player attributes and move this one on in there. So holding strong with my health variables. First year, I'm gonna help select health current. Next, I'm gonna set this also to be 100 and I'm going to set the category here by clicking this drop down to player attributes. Gonna select health percentage next. This one I'm going to set to be ah value of 1.0, meaning 100% full health category here is going to be player attributes and I'm going to do the same with our Mana Max gonna set the Category two player attributes. Although the default for this I'm gonna set this to be 50 just to be a little different, man, a current selecting that one. Next, we're gonna put that in category player attributes, and I'm going to set our man a current to be 50. So full and then, man, a percentage much the same. Gonna set this as our category of player attributes and 1.0. So we got to be sure to compile and save this, guys. That is gonna be all for this one. We just want to get some groundwork in place because upcoming next, we're gonna be creating some player functions that are going to utilize some of these variables. We will see you there. 23. HUD - Player Functions: arrive. Welcome back, everyone. In this video, our goal is to create the functions capable of modifying our characters. Health and Mana amounts. So in the last video, we created some variables to contain some health and mana data. And this one, we're going to create the functions that are going to modify that. And this is gonna take place inside of our BP player. So if you don't already have it open, here is the pathway. How to find your BP player. Double click on her to open her up. And within here we're going to work over in the functions tab of the my blueprint tab. So come over here to the right words as functions, click this plus function button and we're going to name this function updates health. And with this function entry tunnel note here selected, we're going to add an input to this. So click this plus button. We're going to call this in coming damage, and we're gonna make this a float variable, okay. And next, we're going to bring in our player attributes here. They were collapsed just a moment ago. I'm gonna bring in my health Current left click. Andrey, we're gonna get that and offer health current. We're gonna drag out aware, and we're going to tap the minus key. We're looking for a float minus float node, and we're gonna take our incoming damage and we're going to subtract that from our current health. So if you remember right, our current health is 100. So we're going to subtract whatever our incoming damage is from that. Now we want to clamp this value so that the remaining math that we're going to do here remains within a range of 0 to 100. So drag off of here the result of that math, we're gonna do a clamp float, node, and we're gonna make sure that this value this return value here always stays within Ah, minimum of zero and a maximum of 100. And then the return value here, we're going to set as our health currents so we can drag and drop this on top of the return value to bring in this set of right away. There it is. And let's make sure that we hook this in right there. Okay, off of this return value, we are going to drag off and divide we're looking for float divided by float, and we want to divide this number by our health, Max. So here to weaken, simply drag and drop this variable onto the input. Like so and then the result of this math we're going to set as our health percentage. We can drag and drop it on like that. So let's just run through a quick test scenario here. Let's assume our health current is 100 like it is. And let's say we've got some incoming damage, which would be, say, 50. So 100 minus 50 would be between our clamped range right here. So would be 50. We don't have to worry about clam PM and that would be set as our updated value 50 50 divided by our health. Max, which is 100 would then equate 2.5 or 50%. Now, this return is going to be important here. This health percentage because this is what's going to be bound to our health meter right over here. If you remember right within my WPP Hud, down in the details panel, our health progress bar is going to be bound to this percent value right here So next video that will be upcoming. Okay, if you don't already see a return, no doubt. Here. All we need to do here to finish this function office to drag off of here, type in return. And we need to add this return note, and that is all finished up. Okay, let's compile and save this in next. Let's add another function function plus function. This one's gonna be called updates. Mana, this one's gonna look a lot like the one we just created. Although we are not going to create an input on this one later on, we will, but not now. I am going to bring in our manic current weaken drag and drop this indoor graph. We're gonna get that. We're going to subtract this by float minus float. We're just gonna keep this to a hard coded value of 10. This is just gonna be temporary for now. So I'm going to right click on that node and leave a note Comment for temp or rare E. And here, too, we are going to clamp this value, so clamp float, and we want to make sure that this is going to stay within a range of zero 2 50 and the return value This we're going to set as our man a current again. You can your drag and drop this on the return value to bring in the center like so and then off of this. We want to drag off, aware and divides the float divided by float in. The number we want to divide by is our Mana Max. Go ahead and drag and drop that on here and the return value of this we are going to set as our mana percentage. So Dragon dropped out on this output pin, and immediately you will bring in the man a percentage center, like so gonna drag off of here in type in return to add a return note. And there is our function for updating the manna. So if you want to pause the video here to make sure you've got this all like so now would be a good time to do so. I'm just gonna jump over to update health so you can get a gander at what that one looks like. In case you need to pause the video here. Okay. And so with that, I'm gonna build out some test scripts. You're just to make sure that this is going to a work appropriately for our next video. So doing a little prep work here? I'm going to jump on over now to our event graph, and it's currently empty and we're just gonna create a couple of tests scripts and we need some events. So I'm going to right click here in some empty space and I'm gonna look for event. Let's do a church for the H key for health. And so we're gonna make it so that when we press this h key, we're going to update our health so we can drag in this function like so. And here is our incoming damage input that we included in our update health function. So this incoming damage right there. So when you think about creating these function nodes, what you ultimately result in, here's my event graph right here, which ultimately kind of result in is think of this being your finalized node. What I have in the dotted line ends up being our update Health function notes. So it's gotten incoming damage in footwear and then it's gotten execute in in execute out wear and all the math is done inside of the function. The one difference here is asking for a target. And right here it says self, which is gonna work for our purposes here. Now, I'm gonna hard coat in an incoming damage value here of say, let's go. I don't know. 10. Sure. And next, What I'm gonna do is right Click and I'm gonna look for events M for event mana event AM right there in for manna. And here, too, we're gonna drag in our update mana function and hook it in, like so I'm gonna put in the comment box by left clicking, dragging type in the sea key. And I'm just just gonna call this test scripts. Now I'm gonna compile and save this. We don't have anything to show off just yet. We've done the ground work by creating these player functions. We need to hook up some bindings within our W b P hut next to see this in full effect so we can affect our meters and our new miracle health and Mana values as well. So, guys, we will see you in the next valley in the next video where we will make that happen. See, there 24. HUD - Bindings: Welcome back, everyone in this video we're gonna pick right up where we left off in the last one. The focus on this one is to create some HUD binding. So in the last one, we created a couple of functions year update, Health and update Mana and even made some tests scripts in order to see this actually affect our health meters and our mana meters etcetera, we'd actually buying these two variables over in R W B P Hut assets. So if you don't already have your w b p hud Asset open, this is where you can find it in your content browser content. Metroid Vania Widgets, WPP, HUD. So double click on that guy to open him up. And before we even get rolling with all that, I do have a little bit of a mistake over here in our hood that I want to correct. Um, what? You'll notice here if I select our man a meter, let me select my man a meter. Which it over there and let me just scroll on down in the details panel. I'm just gonna move the percentage on down. You can see that this background images, man a background image is not size appropriately, and I recognize that when we're building this out and promise we'd come back and fix it so that time has come. So I'm gonna select my man a background widget here really quickly. And what I failed to do is in the render transform section of parameters right down here in the details panel. Come under, transform the scale value. We want to set the scale for the X and Y to be 1.4 in the X and 1.4 in the why. And that should be size pretty appropriately. So now that if we take our man a meter and fill it all the way up to 100% it should have a nice border around it. That is all well and good. All right, now, on to the next stuff. Well, we're going to do first is we're gonna jump on over into our graph tab. You got a couple of event nodes, and year, we're going to delete the event pre construct, and we're going to delete out our event tick, and we're going to do something off of event construct, which you could kind of think of like an event. Begin play for a normal blueprints. What we're gonna do off of this is I'm going to right click. I'm gonna get player. Character player Index zero is us. And then I'm going to off the return value cast two R b p player. And in doing this, I will be able to get a reference to our player and stored in a variable. So I'm just going to right click here are as BP player. We're gonna promote this to a variable. A new variable shows up over here, and I'm gonna call this simply player. So this will store are BP player into a variable. In fact, I'm just gonna put in a comment box here. Left, click and drag type that Seiki reference to player. I'm gonna compile and save this right away. And I did this for a reason because it's going to give me a little bit of a short cut now to buying some of our variables to our various HUD elements. So I'm going to jump back over here to our designer tab and let's see, the first thing I want to bind to a variable is going to be our health meter here, so make sure you've got this pink bar selected. That is your health meter widget and down in the details panel. We want to find our percent. This is what we want to bind to a variable. So if we click right over here where it says bind, we now have this sub object properties for player because we created in a reference to our player. Now, if we come under our player, lo and behold, we have this health percentage variable that we can read directly from our player. So let's plug this in straight away. And now this should be bound to our health percentage value that we have within our BP player. You know what? Let's test this out right away. We don't have this number hooked up it all, but the meter should start decreasing bit by bit when I press the H key. According to our tests script, we should be reducing our incoming health by 10% 10 health all the time. So let's just go ahead and try this click and play. If I tap that h key, you can see that pink bar moving down a little bit by little bit. Okay, so that is working well and good. So that's the first step. Jump back to your W b. P. Hud. So with that, I want to change this value next. So our health current text widget lets school up. We want to bind this text to a widget. Lets come under bind. We've got our player here, and I can't find anything here. So what could I do? Well, what we can do is we can create abiding. Okay, let's create a binding here. This is going to jump us on over to our graph tab where were prompted to create a function . I don't like these function names. I'm gonna hit F two right here. And I'm simply going to call this get currents health. Okay, Now you see, the return value here is looking for a text value. This differs from our BP player health current, which is a float value. So that's why we weren't able to find that directly from r W b P hud. But there is a way that we can extract that information here and plug it into our return value. All we need to do is get our player character by right clicking in some empty space. Right click Get player character we will cast to are well cast two R b p player. Make sure we hook in this wear like so. And now that we can talk to our BP player here, we can drag off of this and say yet health kind. Now this is a float output. But if we plug this float out, put into this text input. It will bring in a conversion node to convert that float value to text. Okay, so let's compile and say that and then give this a play. So now when I type the H key, that is R H event, you should see the meter decreasing by 10 10% and you should see the numerical value there with 100 decreasing by 10 as well. Here we go. 90 80 70 60 50 40 30 2010 0 and notice I cannot go below zero because I clamped that value from ever falling below zero. So pretty sweet. We're on our way. Next, let's address our man a meter. Go ahead and select your man a meter widget and over in the details panel where we've got this percent lead. Bind this. And here we combined it to our player, man A percentage. Okay, I'm gonna trust that. That's gonna work right away, so I'm not gonna jump in and play right away. Next, let's go ahead and take our man a current widget. That is this new miracle value printed over the top. We're gonna scroll up to the top where this text is. We're gonna bind this. We're gonna create a binding here. It's gonna jump us on over to the graph tab. Prompt us to name this particular function. I'm gonna click on it, hit f two and call it yet. I'm current manner and we can do just like we did before. Where we Right. Click. We're gonna get that player. Character player Index zero is us. So we're going to drag off of here. Cast two R b p player. And now that we are able to communicate to Rvp player, we can extract the value of a variable from it. So let's drag out of here and do a search for manna currents. We want to get man and current like so plugged that into the return note and plug this directly into the return value to bring in the conversion note. And that should be all well and good. Let's compile and save in play. So now I got my h key for the health. So I'll do that. First, you can see the health decreasing. Now, how about the M key? Here we go. 12345 It's all decreased as well as that. The meter and the Texas decrease and I cannot go below the number zero in either. So guys, job well done in this one. We have finished bindings of variables to our HUD for the time being. Anyways, next up, we got some hut animations, so we'll see you in the next video. 25. HUD - Animation #1: All right. Welcome back, Everybody. In this video, we are going to work on creating some HUD animations. We've got a HUD layout in place. We have bound some variables to our HUD. But if I click the play button up here right now, you will notice that our hut just kind of magically appears on screen. And that's not very cool. A lot of games have these hot elements, you know, flying in from the outer edges of the screen or fading into existent, that sort of thing. So that's a con thing we're gonna be working on over the next few videos here. Now, I'm not gonna animate all the different HUD elements in this one video. In this video, I'm going to be focusing on creating a hut animation for the upper left hand portion of our HUD. That is our player portrait and health information, that kind of thing. So to get us started here, make sure you find your way over to your w b P hud that is in the content Metro in Vania Widgets folder. Let's open this guy up. And to create an animation for your hut elements, you need to come down into this bottom left area of the editor here where it says animations. And we want to click this green plus animation button. And I'm gonna name this animation HUD left intro. This is gonna be the animation that we play for the left. Most portion of our hud. Now, with this animation selected, I now then get to decide which various widgets here. I want to be included with this animation. This animation is gonna be called in some script that we create a little bit later on. So the first thing I want to animate here is going to be our portrait background widget. That is gonna be this kind of pink and black ink stroke in the background. And the way you can add these things down to in in your animations timeline is to click some of these little buttons here. That's kind of a diamond shape with a plus button on it. And when you do so it's gonna add your portrait background down to your timeline, where you can modify some of these properties over time. Now, before our add our portrait background down here into our animation timeline, I'm gonna modify our position. Why the default position? I said it in these locations. All these widgets in these locations to get us started because I wanted you to see where the final position for all these widgets is going to be when we finish. Now that we're going to start animating some of these things, I'm gonna start changing some of these initial positions. Okay, so with our portrait background widget selected, come under the details panel, and we're going to change the position wise default from negative 50. Gonna change that to be 100. So it's going to start down there. I'm also going to change the initial capacity of it. So if I scroll down here, there is going to be color and opacity. This a value. I'm gonna change that to be zero, as in, we are not going to see it at all at the very beginning. Okay. And then if I scroll down further as well, under my scale, settings, scale, X and Y under rendered transform, I'm gonna set the default value for this to be 0.5 and 0.5. Okay. Again. You can't see it right now, but don't worry. We're gonna fix that. Here it a little bit. Okay, so then jumping back up to ah, we'll go up to our position. Why here? I'm gonna click this little icon here When I do, I notice you gotta have HUD intro left selected in your portrait background selected position. Why? Click this little button right here. It's gonna add a key frame for this property to our current animation. So down here in our timeline, which you now see is we've got our portrait background listed under our timeline. And if I click this little down error this a this little triangle to show the properties you can now see that I've got my negative. 35 103 50 and 3 15 values that match our position. Why her position? Exposition? Why? Size X in size. Why settings now? One source of confusion here that I wish unrealized. Fix this up. You will notice that position X of negative 35 is equal to what is now labeled left in the timeline. Likewise position Why of 100 is now labeled top in the timeline, which I find to be highly confusing and many people do, but just know that that exists, so you don't get too confused. Okay, so what you see down here is this little red dot that represents, um, a key frame on your timeline. And so right now, our timeline is basically zero seconds long, and the way you can expand this out is you can grab this little right section right here to expand out this timeline like So Now we're going to make this a relatively short animation . And I don't really want this to be 1.2 seconds, but to shrink or expand your timeline right down here, you could hold down the control key mouse wheel in to kind of expanded out. Like so. Okay, so at this time of zero, I do want our top property for our portrait background here to be 100. And if I was to right click on this key frame, I could come under properties and see that it is at a time of zero, and the value is 100. Okay, What I'm going to do next is I'm gonna move our timeline. You can grab your timeline, dragon over, like so and by default, it's snapping at every 0.5 seconds, which is fine. I'm gonna move it on over 2.4 seconds. That's 4/10 of a second. You know, if I click this little plus button right here, I can add another key frame for this property. This top property, which is the equivalent of our let me select portrait background our position. Why? Okay, so we've got top selected. Let's click this little plus button with our timeline at 0.4, that's gonna add a key frame. And now what I can do is with our timeline right here over this key frame. I can change the value of this, and I'm gonna change it to be, uh, negative 50 right here. So you can see over the course of 4/10 of a second, it's gonna slide up like that. Okay, now, I'm gonna move our timeline over to, and I can right click and drag at this point in the timeline. If I right, click and drag down here so you can drag that, you know, left click on her little timeline. Slaughter. Move this out to 1.5 seconds at 1.5 seconds. I'm gonna click this plus button to add another key frame. And you can see that extended out that the bounds the endpoint of our animation here, all the way out to 1.5 seconds. That's what this little red line represents here, the end of our animation. So then make sure you move your timeline slider here to 1.5 seconds, and we are going to leave that value at negative 50. So the idea here is that this particular element we're gonna slide up, like so over the course of 1.5 seconds. Okay, That's not all we want to do here. I do want to change the opacity settings for this background as well. This portrait backgrounds, I'm going to scroll down in our details and find your color and opacity. Make sure you've got your timeline slider back to zero seconds and then I'm gonna click this a button, click the plus button right here. And now you can see I've added color and opacity to my timeline case and I do have three keys. I want to stay here. This first key is that time zero value of zero. I'm gonna move my timeline slider again. Like I do to the 0.4 2nd mark, I'm gonna click plus button right here to add a key frame here at 4/10 of a second. I'm going to set this value to be one, and you can see that makes our image show up in the background there. Then I'm gonna move the timeline slider all the way there. 1.5 seconds, and I'm gonna change. I'm gonna add another key frame right here as well to maintain that value of one. Okay. Can kind of see how that's gonna kind of fade into existence right there. Okay. And you're kind of getting to see my work flow here as well. So I'm gonna change one more thing about this portrait background. Let's move our timeline, cider all the way to the zero second mark. Let me just create a little bit more space here. The next thing I want to modify overtime is our scale settings for the portrait background . So find your scale settings. Click this plus button right here to add a key for it. Make sure your timeline slider is at zero. And now we've added this section to our portrait back around Timeline, Expand out this triangle, and it's already got a key frame there for our scale. And I'm just gonna expand outer scale here and shows the X and Y scale simultaneously. Okay, so it zero seconds here, I do want the scale to be 0.5, and I'm gonna move our timeline cider to 4/10 of a second. And here I'm going to change our X and y scale to be one and one, and then I'm gonna move that slider all the way to with 1.5 2nd mark. I'm gonna click the plus button here to add key frames for the X and Y, and I want to keep it at one and one. So now you can see if I scrub through this, what's gonna happen here is going to kind of fade into existence and pop up like that. Now you see how it does that little bounce right there? I don't want it to do that. So way I can get rid of that is by left clicking right here, left, click and drag and highlight all of our keys. And then if I right click on any of those highlighted keys. I can set our key interpretation from auto to linear, and then I'll make it so that that little bounce doesn't happen. So now you're gonna get in effect. That looks something like that. Okay, so that's all the animation we want to do for our portrait background. Next, we're going to affect our health background. 26. HUD - Animation #2: and apologies here. If I start moving a little bit quicker, I want to make sure I get this in under 20 minutes, which is Ah, the required amount of time I gotta get this video in. So with that, I just collapsed my portrait background here by clicking this little triangle to give you some more space to work. Make sure your timeline is set back here to zero seconds. You've got your HUD left intro animation selected. Next. Select your health background. And the thing we want to change about this first is gonna be our position X. I'm gonna click this button right here, but before I do, I actually want to change the default position for this. I don't want it to be to 10 by default. I'm gonna change it to be negative. 500 like so? So it's gonna be starting off on the left hand portion of the screen. I'm gonna change all of its default parameters right away. So negative. 500 for that position, X under the color and opacity. I'm gonna change that. A value to be zero and anything else I want to change about this. No. So this is gonna be the to so timeline at zero. Gonna change our position X year over time. So click right here to add a key frame for this and you can see our health background, which it has been added to our timeline. I'm gonna open up this triangle right here to reveal our left, which is equal to position X negative 500. Negative. 500. So, at a time of zero, we do want our value to be negative. 500. I'm going to next set a key at 0.25 seconds. Click right here to add a key frame. And I'm gonna change the value of left here to still be negative. 500 that I'm gonna move our timeline. Slatter, over to 0.55 seconds. We're gonna add another key value of this one. I'm gonna change to be to 10 and hopefully you're catching on to my work flow here. Moving the timeline cider here now to 1.5 seconds clicking to add a key frame for the left property. And here, too. I'm going to leave it at 200 in 10 so you can see how that's gonna kind of slide in from the side. Okay. Next, I'm gonna move our timeline slider back to zero second mark, Let's come under the details panel. Find our color and opacity. And let's change this a value over time, the Alfa Value. So clicking this little drop down triangle to reveal that. So it zero seconds. I want that to be zero key to. I'm gonna set to be points to five seconds. Click right here to add a key. Um, I am going to leave that it zero seconds. Then I'm gonna move it over to 0.55 seconds. We're gonna add another key here. I'm going to change a value to be 1.0. So now you can see that element that widget, Lasky moving the timeline slider all the way to a 1.5. I'm gonna click this plus button. And I do want that a value to be 1.0 so you can see that it's going to slide in from the side and also sort of fade in as well here too. I want to highlight all these keys. So left click right about here in drag to highlight them all. I'm gonna right click on any one of them. And I'm gonna change their key interpolation to be linear. So it's not gonna do that a little bit of bounce when it slides in from the side. So that's what we got so far just scrubbing through left and right. Okay. I'm gonna collapse this now. And our next element here that we are going to be animating is going to be our health meter itself. So you got HUD left Intro Selected Health Meter. Select that next. And the properties that we're gonna change about this one are going to be the position X as well as the opacity again. Before I add this to our timeline down here, I'm gonna change the default position of our position. X here is not going to be 2 30 anymore. I am going to change this to be negative 500 and scrolling down under the style section. Not under these style section. Where am I looking for this one? Ah, the appearance feel color and opacity right here. I'm going to change this to be zero by default. Excuse me. Okay. And then, with all that done, gonna scroll back up to the top, and I am going to select our position X little button right here to add a key for this to our timeline. And you can see now our health meter has been added to our HUD left intro could expand this out. So at zero seconds, we want the left value to be negative. 500 moving 2.25 We're going to click on R plus button right here. We're gonna leave that at negative 500 moving the timeline slider over 2.55 Adding another key frame. We're going to change this one to be 2 30 sliding that in moving the timeline slaughter out to 1.5 seconds clicking this plus button. We're going to also leave that at 2 30 Now let's move our time on slaughter all the way back to the beginning. That's good. Let's change our filler bill color and opacity a value. So timelines are back to the zero second mark. Click this button right here to add a key for our Alfa. There is our field color in opacity. Settings currently are a value at time. Zero is also zero, which we want. Let's move our timeline, cider. 2.25 seconds at a key. Leave that value at 0.0. Next, we're gonna move the timeline slider. 2.55 seconds. Let's change the A here to B one. And then we're also going to slide this all the way over to 1.5 seconds. And at a key for this to ensure that that is one is Well, let's left click. Select all of these. And I am also going to then right click to set the key interpretation for this to be linear as well. So now you're starting to see our intro animation come to fruition. All starting to come together. Just a couple more hut elements to animate. Here are portrait and this numerical value. Let's collapse our health meter. Here I am going to select our health current this numerical value next. And with that, I'm gonna come over in the details panel and change out some of the default values. Ah, the position. Why here? I'm gonna change that from being 42. Negative. 100. That's gonna be the new default for that. And I'm gonna change these scale setting for this scrolling down and find scale. I'm going to change the default for this to be zero in the X in zero in the UAE. So essentially, you can't see it. Okay, so make sure your timeline sliders vacuum. Zero second mark. I'm going to click on our position. Why button right here to add a key frame for that, we've added our health current widget to our timeline. Gonna expand out this triangle. So the zero second mark, I do want the top value here, which is equivalent to position wide to be negative 100. Now, I'm gonna move our timelines ladder all the way. 2.85 seconds at a key frame. And the value I want for this is going to now be 40 What it was before. Move our timeline, Slatter, Back to the zero second mark. Let's come find those scale settings. There they are. Plus button right there. Expand this out, expand out the scale settings. And at the zero second mark, I do want them to be zero at the 0.55 2nd mark. I'm gonna add some key frames from these, and I'm gonna also want them to be zero Then let's move the time on cider. 2.7 seconds. Add some keys for this. And here I'm gonna change the X and wide to be 1.5, not 15. 1.5 and 1.5. Then I'm gonna move the timeline slider out. 2.85 Add keys for our X and y scale. And here I'm gonna set the value to be X one and whoops, X one. And why? Once you can see how that's gonna be a popping into view, right? You got a little play button here if you want to see what that's gonna look like, Okay. Now, I actually do want to set the used to be linearly interpolated as well. So I'm gonna left click right here. Highlight all of them that I'm going to, right? Click and set the key interpellation to be linear for those as well. Okay. One mawr Siris of ah of Ah, we want to say animations here to go for this Hud left intro animation. So I collapsed. That Siri's right. They're gonna move our time on slaughter all the way back to zero seconds. It's and we want to modify our portrait picture next for this one. I only want to change the opacity of it over time. So come over in the details panel and I want to find our color and opacity settings. I'm gonna click the plus button right here. Actually, before I click that plus button here to I'm gonna change the default in the color and opacity a value to be zero. Then I am going to click right here to add a key frame for this. You can see that our portrait pick has been added to our timeline expanding out the properties here. So time zero I do want the A value to be zero. Moving the timeline slider to half a second, gonna click this plus button to add a key frame for that property, setting the value to be zero as well and then going to be moving the timeline slaughter all the way out to 1.5 seconds. Setting are a value here to be one. So let's play this back. Moving the time on slaughter all the way back to the zero second mark. If I now hit the play button down here, you can see how that's all going to come together when it slides in. Looks pretty nice, right? All right with that, make sure that you have saved everything. This won't actually appear like that just yet. If you were to click the play button, we actually need to tell our game to play this animation. That will be upcoming soon. But in our next video, we're going to work on creating an animation for animating the right side of our hut elements. We will see you guys in the next video. 27. HUD - Animation #3: welcome everyone in this video. Our goal is to create a snazzy looking animation for the right side of our in game Hud, we want to bring that in in a cool fashion. So without further ado, let's jump right to it. If you don't already have the w b p HUD Asset open, you can find your way back on here by coming under the content. Metroid Vania Widgets folder. There's your W B P hud double click on it to open it up. And just like we did in the last one, we're gonna create a new animation down here in the lower left hand corner. Click on this plus animation button. That's green. We're gonna call this one HUD right in True. And we did a lot of this stuff in the last video. So this one's gonna be just kind of all follow along with steps. The workflow is gonna be really, really similar to what we did in the previous video. So just follow along and we will get through this as quickly as possible. So with your right are your hut right? Intro animation selected. What widget? Over here do we want to animate first, I'm going to start with our be magic border. So under the hierarchy over here, find your be magic border. And the thing I want to change about it is going to be this top parameter, which is also known as position. Why? So with my timeline here set to zero, I'm gonna click right here to add a key fort. But actually, before I said a key for it, I do want to change its default value. I've currently got the position. Why set to negative five so that I could see it when I click the play button. So this position, why I am now going to change to be negative. 2 38 Why? Negative to 38 Experimentation, I guess. Okay, So with that, you're going to see that is off the ah, the screen. Here. Um, I am going to now click this position. Why button right here to add a key frame. And I'm just going to expand this out. And so at the zero second mark, I want that to be a value of negative to 38. I'm gonna move our timeline slider over to 9/10 of a second, right? there 0.9 seconds. Gonna add another key frame for our top parameter here by clicking this plus button. And here I'd want the value to be negative to 38 as well. Next key. I'm gonna slide the timeline slider over on 1.2 seconds. Like so we're gonna add another key. Sorry, I added a wrong key. I said it for the right option right here. So I'm just gonna select that key and just hit the delete key. I meant to set the key for our top parameter here and here. I want the value of that to be negative five. So it's going to slide it down really quickly between that time increment. And then lastly, I'm gonna slide our timeline slider over to 1.5 seconds at another key. And that is going to remain at negative five. So you can see if I jump our timeline slider back to the front here. When I click play, it's just going to drop that down into position. Little bounce there. If you don't want that bounce, we can get rid of it. You could get rid of it by simply selecting all these keys right here. Left clicking and dragging and then setting the interpolation here to be linear. That will get rid of that little bounce that you just saw. Like So Okay, next I'm gonna bring in time. I slaughter all the way back to the zero second mark. I'm gonna collapse this magic border, so I've got a little bit more room down here so you can see what I'm doing. The next one I'm going to animate overtime is our be magic button. Okay, with that one selected, the thing I want to alter about it over time is the scale of the button. So coming under our details panel, scroll, scroll, scroll. There is our scale settings. I'm gonna click this plus button, but before I do, I want to change the default value here from one in the X to be zero and zero in the why. So we're changing the default of RB Magic button to be zero and zero. And now, with that now set as the new default, I'm going to click right here to add a key frame for this property that will add this to our timeline. Down here can expand this out could expand out our scale. There are key frames for the X and Y. Next, I'm going to jump on over to 1.3 seconds and I'm going to click right here to add new keys . The value here will still be set to zero seconds. Gonna move the timeline slider to 1.4 seconds, adding mawr keys here, the value is going to be 1.5 in the X in 1.5 in the why and then lastly, I'm gonna move the time on Slatter to 1.5 seconds. Adds more key frames for the X and Y, and the X value is gonna be one. And the why value is also going to be one. So the idea now is if I click right here to bring the time back to the beginning. If I click play, you're going to see that button kind of in large and view. You saw that as I scrub through it. Kind of that little bounciness again. To get rid of that, all we need to do is select right here. Left, click and drag. Highlight all of our keys. Right. Click on any one of them and set our key interpolation to be linear. That one is all set. So let's collapse this Siris of parameters. Move our timelines slider back to zero. And the next one we want to change up is going to be our be magic image to go on and select this widget. Come on over to the details panel, way up at the top. What we want to change about this is the position why I am going to set a new default for the position. Why, before we get started here and that I'm going to change to a value of negative 202 So that is going to slide that off the top of the screen as well. Okay, then, with this, I'm gonna click this plus ads key frame for this property to the current animation under position. Why? And again, position why is equal to what is labelled top down here in our timeline. So there's our first key frame Gonna move our timeline slider over to 9/10 of a 2nd 0.9 seconds. We're gonna add another key frame. The value is also going to stay is negative to go to moving the timeline slider over to 1.2 seconds at a key frame. This value is going to be 31 and moving our timeline slaughter over to 1.5 seconds, adding a key frame. It is going to stay at a value of 31. So clicking right here to bring our timeline back to the front and then clicking play. You could see what that looks like. And again, I want to set these keys left clicking and dragging to be linear so they don't do that Little bit of bounce that you just saw to the front. There we go. Okay. Next one. Bringing our timeline, Slatter, All the way back to the zero second mark is going to be our be magic man. Accost widget. Okay, that is this number 99 right here. And with that guy selected, we're going to change its scale properties to come under these scale settings way towards the bottom. Here, render transformed scale here too. I'm gonna set the default value of this is currently one, but I'm gonna set that to be zero and zero. And with our timeline slider at the zero second mark, I'm gonna add key frames for scale properties. There's RB magic costs or Magic Mana cost rather, let me just expand out the appropriate set of parameters. Here. There's our scale settings. So what? The zero second mark? I do want those to be zero at the 1.3 2nd mark. I'm gonna add keys for the scale, and I also want them to be zero at the 1.4 2nd mark. I'm gonna add some keys here. I'm going to set it to be 1.5 and 1.5 and then I'm going to move our timeline cider to 1.5 seconds and add some more keys for our scale. And here the value is gonna be one and one, okay? And I'm going to left click and drag around all these and set the key interpolation to be linear. And if I click back here to go back to the front and click play now, you can see how that's all popping in, sort of at the same time, our button in our numerical value there for the mana cost or are jumping up about the same sort of scale, the same amount of time. OK, a little bit more to go here. I'm gonna move my timeline slider back to zero. I'm gonna collapse this series of parameters. The last one we want to cover in this particular video is going to be well, actually, no, we got a few more. Let's do a few more, shall we? Let's do be magics. Starburst Next. Like that guy, That is this tiny little starburst back here scrolling up to What do we want altering this one? We're gonna alter the the opacity setting. So find that color and opacity section of parameters. It's under the appearance of section. Currently, our colorful passing here is got in a value off. One gonna change the default here to be zero. Okay. And now we want to add this to our timeline. So click right here to add a key frame. There's RB, magic, starburst color and opacity. We've got our key set at zero second mark. Next, let's move the timeline slider to 1.2 seconds and add another key, also with a value of zero. And then we're gonna move the timeline slider over to the 1.5 2nd mark and set the value to be one. I suppose we really didn't need to do anything with that one. But it was a little weird to see something on the screen until that the rest of that black magic kind of slides down into position. So that's why we're kind of were basically waiting until the Black Magic slides on into position before we even show that starburst, which is hidden behind there, Right? Okay. Lets collapse that bring our timeline slaughter all the way back to the zero second mark. The next one we're going to animate here is gonna be our Mana base. Find your mana based widget. And with this, we're also going to change the opacity setting. So with that selected come under the details panel, we got color and opacity. Let's click, right. He will actually let change the default first from one to be zero there. We cannot see the base anymore. And now let's add a key frame for this. It is added down to our timeline. So at the zero second mark, the value is gonna be zero. We're gonna slide on down to the one second mark. Add another key value is still gonna be zero. And then we're gonna sly the timeline slider over to 1.5 seconds. Add another key in the value here is going to be one. So that's going to sort of fade into existence. Here is well, like so Okay, let's collapse this move our timeline slider back to the zero second mark and the next thing we're going, Teoh Alter is going to be our mana overlay. So go ahead and select that guy. We'll make this the last one for this video because we still got more work to do and we can focus on our white magic in the next video. But let's just finish it off of there, man Overlay. So with our man overlay selected over in the details panel, we're going to alter the scale settings for that. So before we do anything, let's change our default value here for the X and Y scale to be zero and zero. And then I'm gonna click right here to add key frames for this property. There it is down in our timeline slider, expanding out some triangles here to review those scale settings so that the zero second mark We want the value to be zero. With our timeline Slider moved on over to the 6/10 of a second mark. I'm gonna add some or scale keys and we will keep the value here at zero as well. And then lastly, I'm gonna move our timeline slider on over to the 1.1 2nd mark, and I'm gonna add some scale keys in the value here is going to be simply one end one. So with that, just gonna zoom in a little bit sick. Its sort of see we got going on. Um, you know what? I will set these values here. These keys are gonna left click and drag. Said Thies to inter Pilates linearly as well. A man a base that was just color capacity. That's not a big deal. Um, okay, so with this, we're gonna jump onto the front of our timeline slider here, and I'm just gonna click play to show you what we've got so far, it's gonna kind of come on down like that. That's pretty good. Not too bad. See it one more time. All right, so we got this part of our right side of the HUD taking care of. In the next video, we will take care of our left side of the right side of her. HUD will finish off the right HUD animation there, so it's going to offer this one will see you in the next room. 28. HUD - Animation #4: All right. Welcome back, everyone. That last video was going on a little bit too long. So in this video, we're going to continue creating our HUD right intro animation by focusing on these white magic elements right here. So if you took a break between that video in this video, how do you get back here? Well, over in the content browser, find your way to content. Metro and Vania Widgets. W B P hud. Double click on there. And we were working with this Hud, right? Intro animation. Okay, So continuing where we left off in the last one. This time I am going to select our white magic border. That's W magic border widget right here and over in the details panel. I'm gonna change. We're going to change the position. Why of this? Over time, I'm gonna change the default value here from negative five to negative 2 38 That is gonna jump it up top here. And then I am going to select right here to add a key frame for that property down to our timeline. With our timeline at zero can expand these properties out again. Position Why equates to this top right down here. Why? They have different names. I'll never know. And so at the zero second mark, it is set to negative 2 38 Let's move our timeline slider over to the 9/10 of a second mark at a key frame. The value will stay at negative 2 38 at that time. Gonna move our timeline, Slatter, down to 1.2 seconds. And here we're gonna add a key with a value set to negative five. That we're gonna move our timeline Slatter to 1.5 seconds. Add another key. And the value here is going to remain at negative five. Okay, I'm gonna collapse this Siris of parameters for right now, I'm gonna kind of slide this up and give us ourselves a little bit more room here. Start to get a little type. I'm gonna bring our timeline slaughter back to the zero secondmarket. But you know what? Something else I do want to do with our white magic border selected? I just expanded out that triangle. I'm gonna left click drag around all these keys then right? Click and set the key interpolation there to be a linear. So it doesn't have that little bounce when it moves on down. Okay, timelines. Daughter, Back to zero. Collapsing these parameters. The next one I want to change is our white magic button widget. Select that guy over in the details panel. Find your way on down to the scale settings Here, too. We're gonna set our default settings from one to be 00 in the X and y gonna click right here to add key frames for this property to our timeline. There they are. Expanding out are triangles. So with zero second mark, we want him to be zero at the 1.3 2nd mark. We're gonna add some keys, and we still want the value here to be zero coming to the 1.4 2nd mark. Can ADM or keys starting get good at this by now. I bet skill will be 1.5 in the X and the y. Then we're gonna move our timeline slider over to 1.5 seconds. Adds more scale keys in the value Here will be one and one for the X in the Why? Just like we've been doing, I'm gonna collapse these Siri's actually you know what? Let me see what this is gonna look like. You see, it's got that little bounce there as well. So let's set some key interrelation for this Left click drag right click. We're gonna set our key interpretation here for the used to be linear. That's gonna be good. Moving our timeline slaughter back to the zero second mark collapsing this set of parameters. The next one we're going to change is R W Magic man. Accosts Select that widget. And here, too in the details panel, We're going to set the scale setting. So find your way on down to the render transformed scale settings. We will set the new default for the X and the Y to be a zero and zero. And then we will click right here to add key frames for this property. There they are. Scale. So what? Zero second mark? We do want the value to be zero at the 1.3 2nd mark right there. We're gonna add some more keys. We still want the value to be zero at the 1.4 2nd mark. Gonna add more keys and the value for this is going to be 1.5 and 1.5 in the x and Y Moving our timeline, Slatter, over to 1.5 seconds. We're gonna ADM or scale keys in the value. As you may have guessed in the X and Y will be one and one. All right, you're seeing how this is all coming together. I'm here to I want to set these keys left click drag to interpret late linearly so they don't do that. Weird bounce. Move that time on slaughter. Back to the joke. Zero second mark collapsed. These were almost finished with this. So stay with me. We're going to select our white magic. Overly. That's W magic overlay. And we're going to change due to do the position. Why? Currently it's set to 33. I'm going to set the value for this to be negative 200 by default. That's gonna jump it up there a little ways that I'm going to set some keys for this position. Why? So click right here. It adds it down to our timelines. So at the zero second mark, we wanted to be negative 200 at the 9/10 of a second mark. Gonna add another key. I still wanted to be negative. 200 jumping to 1.2 seconds. Gonna add another key. But the value here is going to be 33 and then moving our timeline slider over to 1.5. Adding another key and the value here can remain at 33. All right, next one, we're going to change. Let's see how this looks. Yeah, you know what? I better set Thies to be linear as well. I will left, click and drag right click Linear So we don't have that weird bounce. Everything works nicely. Alright, Timeline Slaughter back to the zero second mark. We're gonna collapse these. The next one we're gonna change is R W Magic. Ready that? Ready text Right up there. Okay. And I only got a couple more properties. We're gonna change your widgets, rather, um, we are gonna come down to these scale settings, right? Click. Sorry. Scroll down into the details panel until you find the scale settings. Not right. Click. There's your scale settings. We will set the default to be zero in the X zero in the why Click right here to add keep reams for the scale settings down to our timeline. So at the zero second mark, we want the scale to be zero at the 1.3 2nd mark. We're gonna add some key frames and we still want this Teoh the scale to be zero and zero at 1.4 seconds. However, we're gonna add some key frames and we want the value here to be 1.5 in the X 1.5 in the Why move the timeline, Slatter to a second and 1/2. Add some or key frames and the scale here is going to be one end one in the X and the y. Then here, too, I'm gonna left click drag, and we will set thes two linear early inter plates. Have trouble saying that word. So apologies on that gonna move are timeless. Letter back over 20 seconds collapsing this Siris of parameters. And lastly, we're going to select our white magic Starburst this guy right appear w magic Starburst. Come under your details panel and find the color and opacity settings set this a value here to be a new default of zero that is gonna make it disappear now anything between zero and one makes it semi transparent. Right? So I'm gonna set it to be zero, so I can't see it at all. Then I'm gonna add a key frame for this property down to our timeline. Zero second mark. I want that property to be zero at the 1.2 2nd mark. We're gonna add a key frame, and I still want the value to be zero. And then I'm gonna move our timeline slider over to 1.5 seconds. Add another key frame here. The value for a are Alfa value is gonna be one, like so. So now I'm gonna jump to the front and gonna move this down a little bit. We don't need to see all those properties, right? And if I click the play button, you can see how our mana information are white and black magic skills are going to animate onto our HUD. That was a lot of work, but guys, that looks pretty pretty snazzy. So, with that, always make sure you compile and say it was a good sanity Check for anything that you're doing it in real. That's going to do it all for this video. We will see you guys in the next one 29. HUD - Script: All right. Welcome back, everyone. In this video, our goal is to make our HUD animate onto the screen through scripting. If you hit the play button between videos here, you will have noticed something. And that is that we don't see any of our hood on the screen. That is because we created those animations where we're starting our various widgets off the side of the screen or faded out that kind of thing. Now we need to tell those animations to play so that we can see all of those HUD elements again. So if you haven't already done so, find your way on over to the content Metroid Vania Widgets folder and double click on your W B P hud widget blueprint to open it up. Now we have been working mostly in the designer tab. Up until this point, this is going to take place over in the graph tap. And by this, I mean the scripting in order to make our animations happened. Now make sure you're in the event graph tab and not in one of these function tabs for the various functions that we created earlier and currently in the event grab, we have a short little script getting a reference to our player. And that was for some of the HUD bindings that we created earlier. So I do want to do something off of this event construct here in addition to getting a reference to our player. And the way I'm gonna do this is I'm gonna drag this event over here, and I can't have multiple copies of event construct out here. But I can sort of split this signal here using a sequence snowed. So I'm gonna bring out a secret. So by simply right clicking, typing in sequence and through this we could make it so that when we hook into our sequence node, we can now do X. Why? And if we needed, add another pin Z right off of here. So that's a really easy way to make it so that you can have one event do multiple things. Okay, So what I want to do off of our sequence note here. Well, firstly, I do want to make sure that we are creating that reference to our player. Don't want to make sure that I don't keep that unhooked up. That's got to be hooked in, but I want to do something else is well. And what I want to do is I want to play in animation. In fact, I want to play to animations. So if I simply do a search right click for play animation, you can see that there is a user interface function for play animation. So select that guy and it's gonna say the target is a user widget. And here I could slot in which animation I want to play. Now, if I look over my my blueprints panel under the variable section, there is something called animations right here. And if I click this little drop down arrow, I will reveal the two animations that I created in the previous videos. Hud, right intro and HUD left intro Notice that those names are identical to the animations I created over here in the designer tab. Okay, So which animation do I want to play first? Well, I want to play our hud left intro first so I can drag out a copy of this, and I could just drop it right on the in animation. Okay. And I could make it now so that I could hook are, then one Wear into this play animation. Compile, saving out If I click play, you see how it animated onto the screen. But one thing I don't like about that is it happens so rapidly. I don't want it to happen quite that quickly. So what I'm gonna do before I play this animation is I'm going to add a little bit of a delay and I can add a delay note here simply by holding down the D key and left clicking. That will bring in a delay note. And I'm going to rewire this like so. And the delay I want to set here is going to be for Let's try two seconds. So now if I compile save in play after two seconds, you're going to see the left side of my hood animate on. So that's pretty good. Now, what about the right side of our Hud? Well, I do want to add a little bit of a delay. There is. Well, uh, no, actually, I don't want to add a little bit of delay there as well. So let's do this. I'm gonna add another play animation, noting we can right click and say pull a animation. Hook this in like that in here. Which animation do you want to play? Why are hood right animation? Now, if I was to drop it in here, you'd see it would replace my previous animation so we can't hook to animations into the same play animation function node. So I'm going to do the left first and then the right immediately after. Like so Okay. And if I compile and save and play, this is what we currently have. Looks pretty snazzy, ripe, and I want to do one more thing after this is I want to add one more delay note. Hold down the deaky and left click for the shortcut. For that is I'm going to delay by. We're going to say 1/4 of a second. So 0.25 seconds and then I am going to play a sound plea. Sound to D A to D sound is a non localized down. It's just you can hear it from wherever you are in the level. I am going to slot in the sound v r Underscore. Ungh. Grab underscore que And I do want to change some of the details about this I'm gonna click this little drop down arrow. I'm gonna set the volume multiplier to be 0.5 and the pitch multiplier to be, Let's say, 0.7. And the reason I'm adding this is because I want to just animate our our ah widgets on here with a little bit of a sound effect. So this is the way I can add a sound effect to accompany these widgets flying onto screen. So let's try that compile, save and play. And I think it adds a nice little Wu sh as that comes flying onto the screen. So I say, That's a keeper. One more thing I want to do here before we wrap this up, and this is just kind of building some stuff out for what's to come down the road. We have this event construct, and we've got this sequence notes were doing multiple things off of event construct. Before all of this, I am going to sneak in something called a do once node. Now, for this point in the project, this is not necessary. But we're actually building this in right now because later on in the course, we're going to be toddling on and off a magic menu, a black magic menu in a white magic venue. And if we don't put in this do once noted here, and I just want to get it out of the way now, doing that bringing on our future white magic and black magic menus would make this HUD play again and again and again. So this is a way to ensure that we Onley play it once when we start up the game. So with that, guys, let's put a little bit of a comment note around this Siris of nodes right here, left, click and drag Tap that Seiki. And I'm just gonna call this play Hud animations like so and I will color it green to signify a job well done. Everything looks like it is working there as well clicking. OK, why don't I colored this green as well? You can see how I saved the color up there. By the way, you could save a color by selecting Ah, you know, choosing a color, then left clicking and grabbing it and placing up along the top of your save colors. Bar kind of handy, right? All right, compile and safe guys that is going to do it all for this video. We now have a sweet looking HUD, scripted and animating onto our screen. We will see you guys in the next video. 30. Interactive - Base Class: All right. Welcome back, everyone. We have finished up creating some HUD in this series of videos right here. What we want to do is create some interactive elements. So we're gonna have some interactive skill orbs, if you will sort of placed around our test level here. And the idea is that we can interact with these things to collect them and add some skills to our character to get us started here. What we're going to do is create a base class. So the goal of this particular video is to create an actor blueprint from which all our interactive actors placed in our test level here will derive from. And this means that any other interactive blueprints that we derive from this class will be Children and thus inherit any properties we implement in this base class. If that sounds a little confusing, stay with me here. You're gonna like how we build out this system. So I'm gonna be working in my content. Metro Vania Blueprints Actors full there. So find your way on over to this directory, and once you're here, we're gonna right click in some empty space. We're going to create a new blueprint class. This is going to be based on a parent class of actor, something that we can place or spawn in the world. And I'm gonna call this BP underscore interactive object underscore base can. With that selected, I'm going to double click on it to open it up. I'm gonna docket across the top here like I like to do, and I'm gonna add one component to this. So come under your components panel click add component. We are looking for a box collision component, and I'm gonna name this Interact collider like so. And the size of this doesn't really matter too much for now, because for objects that will inherit from this, we can modify the size of from their. However, I do want to change some of the collision settings for this. With this selected come down in your details panel by scrolling on down, you'll find a section of parameters called Collision and under collision Preset. Let's expand out this triangle right here. I'm gonna changes from overlap all dynamic to be custom and right now ah, we have everything set to overlap. However, I want to change the visibility Trace channel to be block. Now, the reason I'm doing this is because for some upcoming player interactions that we have coming down the road here, this is an important step that we need to take to ensure that that works properly. So make sure you set your collision presets here to be custom. And then we are wanting to change our visibility Trace channel to be blocked. Everything else here can be set to overlap with that we can compile and save. And that is literally all we wanted to accomplish in this one. So job well done. We got a little bit more work to do here. But that's gonna do it all for this one. Guys, we will see you in the next one. 31. Interactive - Notify Layout: Welcome back, everyone. In the last video, we created an interactive base class for an object that we can interact within level In this one. We want to create a widget blueprint that can be used to present various notifications to our user. So we need a system to message to the user. Hey, how to collect a skill orb, that sort of thing. So that's what this woman is going to lay the groundwork for. So, without further ado, come under your content. Metroid Vania Widgets folder. And inside this folder we're going to create a brand new widget blueprint by right clicking , coming under user interface widget blueprint. And we're gonna call this asset W B A p underscore. Notify. Then we're gonna double clicking on it to open it up. Now, in this notification message that we're going to create the layout for we are going to be needing a B button texture, so I need to import that first. So let me just jump on out of my w b p notify. For a moment here, I'm gonna navigate on over to my textures folder and you could see that I've got a few buttons in here, but not the B button. So you should find that be a button texture added as a downloadable to this particular video lesson. Mine is located in a separate folder here on my computer. So I'm simply going to left click and drag this down into my content browser. But for you, you should download it first. And then from your downloads folder left, click drag and drop it into your content browser like I am doing. Okay, so there is my B button texture. And again, if this unsightly background really bothers you, you can double click on this asset change the texture group here to be you I and then save close out. And if you jump back to the content browser, all is now right in the world. You don't see that very, very terrible looking background. Okay, so I'm gonna jump back to R. W B P. Notify here a widget blueprint, and with that created now or that added to our content browser, I am going to add some widgets over here into our hierarchy. So I'm gonna add the various widgets first, and then I'm gonna set the details for them. So the 1st 1 I want to add is an image gonna drag and drop this onto our canvas panel. I'm going to select it hit F two and I'm gonna call this background underscore pink. Okay, then I am going to select another image. Drag and drop it on top of our canvas panel. Gonna hit F two on that guy, and I'm gonna call this back round underscore Black gonna do one more image drag and drop on our canvas panel. This one hitting F two on it. I will rename to background underscore Black underscore 1 80 you'll see why in just a little bit here. Next thing I want to add is a text widget, not a text box, but a text widget. Lets drag and drop this on top of our canvas panel. I will rename this to be message. And then I want to drag and drop one more image on to our canvas panel hitting F two on this, I will call this button. Underscore, Interact. Okay, so now, with all those widgets added to our canvas panel, we are going to set the details for each and we're gonna start with our background pink right here. So make sure you got that selected. And the first thing I want to do is set an anchor point for this. So over on the right hand side in the details panel, I'm gonna set the anchor point for this to be the bottom middle box. This one right here. Okay, so it's gonna move the anchor point widget right down here and now the locational settings and the positional setting. I should say the positional settings are relative to this. I'm going to set my position X to be zero. The position why'd to be zero. And that's gonna jump it way down here. Let me kind of zoom up in on that, and I'm gonna set my alignment in the X to be the midway point. So I'm gonna set that to be 0.0.5 and watch when I hit return. Well, that's gonna do to our widget here. It's gonna happen, right half of it on this side of the x axis, half of it on that side that I'm going to set the why for the alignment to be 1.25 So that's going to nudge it up some now for the size X in the size. Why? I do have some settings I want to set for this. I'm gonna set the size X to be 5 30 and the size. Why? I'm gonna set to be 1 50 Okay? So you could see this notification is meant to appear towards the bottom of the screen. Now I do have, ah, some brushing here that I want to slot in. So where this brush image appears in the details panel left click. And right down here in releasing left click, I'm going to do a search for T Underscore Inc Pink. So that is what I've got going on right here. Okay? And it's draw as an image, so that is looking pretty much how I want it to look. Okay. I think everything looks good with that. So let's move on to our background, blacks like that, and over in the details panel, I want to set the anchor of point for this particular widgets to our bottom middle box, just like we did with our pink. Okay, I'm gonna set the position X to be zero. The position Why? To be zero. So you could see what that does likewise. I'm going to set the alignment here in the X abi's 0.5, not 0.5 point five. My bad in the Why to be 1.5 That's gonna nudge it up some the size X I want to set to be 5 73 and the size Why I'm going to set to be 1 80 Like so And the brush down in the appearance section I'm going to left Click hold left click released, left click And I'm going to do a search for ink Let's do a search for ink Underscore black Hubble. That and I'm looking for t underscore in underscore Black That texture. Okay, so you can see how this is starting to shape up a little bit. Okay, Just double checking all my parameters here. That looks pretty good. Okay, so the next one I'm gonna select is our background black 1 80 As you may have expected, the anchor point for this will also be that bottom middle box. The Position X. Actually, you know what? Before I do the position X in the position, wine, all that sort of stuff, let me slot in the image for this. So you have a little bit more of a visual to go off of when we move this around and resize it. So for this, the image is also going to be our Inc Underscore. Black. Okay, now it's currently way up in the Ah. Well, you can't really see it right now because we have the position X set to be this hideous value. Let's set that to be negative. 16. And the position. Why? We're gonna said that to be eight. Why those values? Because I did a lot of trial and error. So now you can see it down here gave very small yet. But if we change the position Sorry. The size X to be 5 76 Not 5 76 65 76 And the size wide to be 1 80 That's going to stretch it out quite a bit. Now. You can see it's not exactly in the location that we want. I'm going to set the alignment here for the X to be 800.5 and the alignment in the wide to be 1.5 like so and right now, you're gonna be like, Well, that's Basically the exact same is the background black that we just added. Why did we do that? Well, not quite finished here with our background. Black 1 80 scroll down in the details panel, and you're gonna be looking in the render transform section. What I want to do is I want to change the angle here to be 1 80 and that's essentially going to flip that ink upside down. And the reason I added two of them here is because with both of them added one of them right side up the other upside down. This creates a little bit more of a squarish look, which is what I want. Okay, so that's looking pretty good. Let's select our message. Tech text block widget. Next. As you may have imagined, our anchor point for this is going to be this bottom middle box. The position X and Y is gonna be zero in zero. Um, I am going to set the text right away. I'm gonna come back up here, but I'm going to set the text right away to just be some something called interactive message. Right. Then I'm going to set Theis size X here to be 3 40 The size why is going to be 50? The alignments of the X is going to be a 0.45 A lot of fine tuning. I did hear in the alignment in the why is going to be 2.15 just to nudge that up, Some flipping my page Oh, notes here I do have some appearance settings that I want to set for this. I am going to set the be value for our color capacity to be zero. I wanted to be yellow. I'm gonna change the font family to be our Gothic letters Looking pretty cool. Yeah, the size of our fine. We can leave at 24 the justification for our funds. I'm scrolling down a little bit where there's this justification. I'm going to set that to be centered, so it's just gonna nudge it on over slightly and that should do it for that one. OK, one more. Here, let's select our button. Interact which it coming under the anchor section. Let's that the anchor to be the bottom middle. The position X is going to be zero position. Why is gonna be zero the size X in the size. Why is gonna be 70 by 70? The alignment I'm gonna set to be a 3.4 and the Why 1.9 and I do want to slot in an image under our appearance Brush here. I'm gonna left Click really slept Click and I'm going to look for button underscore. Be right there so you can see where we're gonna have a B button and then some interactive message that we're going to swap out with some better text later on. So that is looking pretty good. Not quite finished yet. But with this done already, let's compile and save. Actually, one more bit that I forgot to do here with our button interact. If I scroll down in the behavior section currently, the visibility is set to visible. I want to set this to be hidden for the time being. It's not actually gonna make it go away right now, but through some scripting later on, we're going to be able to show and hide that button as we see fit. Um, OK, Next, let's go on to creating a variable. I'm gonna jump on over from our designer Tavernier over to our graph tab and over in the mind blueprints panel. We're going to create a brand new variable. And I'm gonna call this, Let's call it received message, and I'm going to change the variable type here from a Boolean to a text variable. Now, if I compiler blueprint, I can set a default value, so I'll just compile here, and I'm gonna call this received message. And the reason we need to create this variable is for the next step here. So the next step is going to involve us jumping back over to the designer tab and with our text message here, that guy I'm talking about right there are interactive message. Come over to the details panel where it says text. And currently we've got the text set as interactive message. We want to create a binding for this. So create our select this little buying button right here, and you can choose create binding, and that's gonna jump us from the designer tab back on over to the graph tab where were prompted to create a new function. Now, I don't like this function name right here of get message text. So I'm going to reveal this function that was just created in the my blueprints panel. I'm going to select it. I'm gonna hit F two and I'm gonna change this function. Name to be Get interactive object message like so and I'm going to do is with that variable that we just created called received message. I'm talking this guy right here. We're gonna plug that into here like So Now what this is going to do is it's gonna make it so that when we do eventually show this notification, this place holder interactive text message is going to get replaced by whatever this function dictates, which is over here, this received message. Now we are going to be able to change this, receive message through scripting. That's to come. So right now, if this doesn't make it a lot of sense, that's OK. These pieces will all come together down the road. But long story short, we have this component in place, are interactive, notify layout is all completed. So let's compile and save. That is going to do it all for this one. Guys, we will see you in the next one 32. Interactive - Notify Animation: All right. Welcome back, everybody. In the last video, we created a notify here little notification message for when we are going to be able to interact with something in this video. Our goal is to create an animation to bring on this W B P notify in an eye pleasing manner . Because it would seem a little weird to just kind of have this pop into existence. Not very exciting. And we wouldn't really learn about widget blueprint animations. So let's create an animation for this if you took a break between videos and don't remember how to get back to where we were I am currently in the content Metroid Vania Widgets folder And we're right here in W b P Notifies open that guy up. And this is where we left off in the lower left hand portion of the widget blueprint. Designer tab, we're going to create a new animation. So click that green plus animation button. We're gonna call this animation intro. It's gonna be our intro animation. Okay, with that selected Ah, what do I want to change here? Well, I want to change our background black. I'm gonna change several things here, but I'm going to start with my background Black. So select that guy, then over in the details panel. One of the properties I want to change about it is it's color and opacity right here. Now I am going to change the default values for these now to be something else. I have the values, what I have them at right now so that you could see where this message is going to appear on screen and what it's going to look like when this animation is finished. With that done, though, I'm going to change the default values for the very beginning point of their animation. So with black background black selected, come over to the details panel under color, end opacity and we're gonna change is a value here to now be zero. So you're not going to see one of those black backgrounds? Okay, then I'm gonna click right here to add a key frame for that property to our timeline, and I'm gonna bring this on up a little bit. Try Teoh, maximize our screen. Real estate, like so okay. And with our color and opacity expanded out here. So it zero second mark, I do want that? A value there to be zero. Meaning you can't see it at a time of 0.3. I'm gonna add another tea, and I'm going to set the value to be one. Okay, Next I am going. Teoh, change the ex. And why scale of this particular widgets? I'm going to set our timeline slider back to the zero second mark and scrolling down a little bit in my details panel background, black. There is my scale settings, the render transform settings. Let's click right here. Actually, before we click right here, I'm gonna change my default scale to be zero in the X in zero in the why Now, I'm gonna click right here to add key frames for the scale. Properties is gonna add that down to our timeline, expand out the triangle, reveal our scale settings. So it zero second mark. I want the value to be zero at the 00.1 2nd mark and you can hold down the control key and scroll wheel in to expand or squish your timeline. I'm just gonna expand it out here a little bit. So at the 0.1 2nd mark, I am going to set some keys, Azem keys, the X value I'm gonna set to be one. And the why value I'm going to change to be to okay, and then I'm gonna move the time on cider 2.3 seconds. Gonna add some more keys for the scale. And I am going to set the value for both of these the x and the Y to be one. So you could see how that one black ink there's gonna kind of, like, flare out and squish back down. Cool. Right. Okay, I'm gonna move. Our timeline started back to zero seconds. That is enough for background black. Let's do background. Black 1 80 Maybe I should have called it upside down. Right. Okay. First thing I'm gonna change about this is the default color end opacity. So instead of a value of one here for a I'm gonna set that to be zero. Gonna click right here to add the keys. Key frame for this property to the timeline down below. So it zero seconds I do want that a value to be zero at point three seconds. I'm gonna add another key frame. And here I want that value to be one Let's go change the X and Y's scale Next. So I'm gonna move the timeline, Slatter all the way back. Like so. Zero second mark, scroll down our list of details. There are my scale settings. I'm gonna set the default in the x and Y to be zero and zero, and then I'm going to click right here to add a key frame for that property at time. Zero. There are my scale settings. Next, I'm gonna go to the 0.1 2nd mark gonna add some scale keys here. I'm going to set the X value to be 1.5, and I'm gonna step the why. To be one. Okay. And then I'm gonna set my timeline slider to the 0.3 2nd mark. Add some more keys for the scale and the ex. And why here are going to be one as well. So you're kind of getting ideas to what this is gonna look like. One's gonna flare out a little bit more. One's gonna flare up a little bit more. It's looking pretty cool, right? Okay. I'm going to squish that set of parameters. Let's do our background pink Next, Like that widget here to get a scroll up in the detail of panel, find our color end opacity settings. I'm going to set that a value to be a zero by default that I'm gonna click right here to add a key frame for this to our timeline. There is our background pink color and opacity a value at time. Zero is also zero. Move that timeline cider. 2.3 seconds. Add another key for R A L for value. And here we're gonna set the value to be one. And you can see that transition right here from completely transparent to completely opaque moving our timelines letter back to the zero second mark scrolling down in our details panel. Let's adjust the scale of this one. Over time, I'm gonna set the X and Y to be zero in zero. Now, by default, we're gonna add a key frame for this property to our timeline. There they are, Transformed scale. So it zero second mark X and wire zero at the 0.15 2nd mark. I'm gonna add some more scale keys here. The X scale is going to be gotta flip over my page. Oh, notes the X value is gonna be 1.5 and the why value is going to be 2.0. You can already see it up there that I'm gonna move my timeline slaughter to 3/10 of a second. Add some or skill keys. X Here will be one. And the why will be one as well looking pretty good so far. Let's collapse these set of parameters. Move that timeline slider back to the zero second mark. And now let's deal with our button. Interact widget, Right. Let's come under the details panel and find the color and opacity settings for it. I'm gonna set that a value defaulted back down to zero. For the time being, I will click right here to add this to our timeline. There's our button, interact, color and opacity. A value is zero at time. Zero. Let's move the timeline cider to 0.15 Add another key and I'm going to maintain that value of zero. So I still wanted to be zeroed out halfway through. Then with the timeline cider at 00.3 seconds, we're gonna add another key. And here the A value is going to be one, so you kind of See how that's going to work. Its gonna all that ink is gonna flare in, and then the buttons gonna fade in, Like so. All right, I got my timeline slider back to the zero second mark. We're gonna collapse these properties, and let's see, we need our message. Let's select our message widget Next. And the 1st 1 we're going to deal with here is our color and opacity. Where is it? In here. Got a scroll up. Scroll! There it is. Appearance, color and opacity. Let's change our a value here is going to be zero by default. Now, let's add this to our timeline clicking right here. So at the zero second mark, I want the value to be zero for the Alfa. Moving the timeline slider. 2.3 seconds. We're gonna add another key frame, and I'm gonna change that value to be one. And then I'm gonna move the timeline slider back to the zero second mark because the next thing I want to change over on the right hand side, I got to find our scale settings. There they are, under rendered transform. Let's set the default here to be zero in zero in the x and Y clicking right here to add a key frame for the scale properties down to our timeline. Did I not click that? I don't think I must have missed it. There we go. Okay. Expand out our scale properties. So time zero, the value is going to be zero Moving our timelines ladder to the halfway mark. 0.15 I all I do not want the value to still be zero, but I am gonna add more keys. X value here is gonna be 1.5 and the Y value is gonna be 1.5 as well. And then I'm gonna move our time on slider over to 3/10 of a second, add some or skill keys, and here the X value is going to be one. And the why value is gonna be one as well. So backing up our timeline here, I'm just gonna collapse. Everything kind of maximize our screen real estate, gonna click right here to move our timeline to the front. And if I click play, you see what that's gonna look like? It's just gonna kind of flare out like that. That's pretty cool. right. Not too bad. Okay, so no scripting yet will do that when a situation needing for this notification occurs. But with that, we can compile and save. And that's all we wanted to accomplish in this one. We now have a notification animation job. Well done. We'll see you guys in the next video. 33. Interactive - Base Class Script: All right. Welcome back, everyone. In this video, we are going to be adding some variables and script to our base class interactive blueprint so that we can inform our player blueprint that an object can be interacted with. So again, where we're going with this is we're going to be creating these interactive objects. He's sort of floating orbs out in the environment that we can interact with. And when we do interact with them, they're going to give us a new skill that we can utilize. This is laying down all the groundwork for that. So toe, get us going here. What we need to do is work within our BP interactive object based class that we created a couple videos ago. Um and that is located in your content. Metroid Vania Blueprints Actors Folder. So double click on this guy to open him up, and we want to be working in the event graph of this. And there's gonna be some events here by default toe. Try to get just started. The Onley one we need for now is this event. Begin play. So I'm gonna left click and drag and hit the delete key to delete these other ones out of here and off of event begin play. I want Teoh create a reference to our player right away. And I'm going to do so by first dragging off of event. Begin play and bringing in a sequence. Note the reason I am bringing in a sequence notice because you can only have one event begin play within an event graph. This is a way for us to sort of split the signal so we can do multiple things utilising one event. It's just kind of a cleaner way to go about scripting things. Okay, So before I do anything off of this, then zero where I'm just gonna right click and I'm going to type in, get player, character, and then off of this, I'm gonna drag out a wire and cast two R B P player. And now we can hook up our then zero output pin into this. Like so and then awful of S B P player. I'm gonna drag, actually not gonna drag out away. I'm going to right click on this pin and I'm going to promote to variable. And that will store are BP player in a variable that I will now call player, and I'll just left click and drag here and put a comet box around all this Tap that Seiki and I'm gonna say reference to player. I'm gonna move this up out of the way a little bit with my player variable selected over here. I'm gonna change the category from default. You can literally type in here, so I'm just gonna select this and drag out. So I override all this. I'm gonna change the category here to be interactive object variables. It's not when I hit Enter here, You're going to see over in the variable section. There is now a new category created called interactive object variables, and player is stored inside. Okay, so that's the first thing I want to do off of this event. Begin play. Its second thing I want to do is drag aware off of this. Then one I'll put and I'm going to do a search for create Widget. And in here I'm going to slot in my w b p. Notify that I created in the last video and off of this I'm going to right click at not right. Click on the return value I'm gonna drag off of the return value. No, I am going to right Click on the return day. Sorry. Brain farted there for a moment. I thought I was gonna add this to the view port like you often do after you create a widget . But no, this one I want to store. So I'm gonna right click on the return value, gonna promote this to a variable. And this one is gonna be called W B P underscore. No tiff fire like so. So we're gonna store this W b p notify widget to a variable as well. I do want to place this within that same category as my players. So I'm gonna select over here, and I'm gonna change us from default to interactive object variables. Like so gonna left click and drag around these guys. Tap that Seiki and I'm going to say reference to W b p underscore. Notify. Like so. Okay, so just framing this up for you a little bit so you can see what we have in case you need to pause the video. And again, I'm in my BP interactive object bakes. Okay. Other things I want to do here is I want to create two variables. So first variable I want to create down here in the lower left variable Plus to create a variable I'm gonna call interact message and I'm gonna change this from being a boolean variable to a text variable. And I'm going to place this in our interactive object variables category as well. And one more variable. I want to add your so under variables, click plus variable. I'm going to create one called S F X underscore can interact. This is going to be of this of the variable type sound base. So I just clicked right here so I can change the variable type. I'm going to do a search for sound base, So object types sound base object reference like so, I'm gonna place this into the same interactive objects category I'm gonna compile here and here. I can slot in a default value for this, and I'm gonna I do have one in mind here. So if I select this little drop down, there's one called Flowing floating you. I close it's in the VR editor sounds He can slot that in right away. So these are some variables that we're going to set on some of the Children that we create from this parent object that we just created here. So that's the purpose for us creating these right now in our base class, our player are W B P notify Air interact, message. This EST effects can interact all these different variables right here. When when we create some Children of this base class, they will inherit all of these properties, which is going to be crucial for what we're about to do. Going forward. So with that, let's compile and save and put a bow on this series of videos, guys, that is going to do it all for this one. We will see you in the next one. 34. Skill Acquire - Assets #1: All right. Welcome back, everyone. In this Siri's videos, we're going to be working on putting together some skill acquisition blueprints, the idea being that our character can move throughout our test level, interact with some of these skill acquisition blueprints and then thusly add to her bag of tricks learning things like a double jump, how to shoot a fireball, how to transform into mist, etcetera. If you are wondering right now what you're seeing on screen and maybe seeing yourself Hey, I don't have all that stuff yet. What is going on? I have currently jumped on over to an older version of this project, one that I've created in preparation for this course. I just want to give you a quick primer here as to what we're gonna be putting together. So you know what to expect going forward. So I'm just going to jump in and play here. You're gonna hear some background music and and all that kind of jazz, right? So the idea here is that we're gonna create some of these pedestal looking things, and when we interact with them, we're going to learn various skills. So I've got one for learning a double jump. We've got one for a back dash. Those we're gonna have similar looking pedestals that you can interact with right? Then we've got some for some, like white magic skills this one's gonna be for learning inability called the lens of truth , allowing you to see hidden platforms and see through walls that kind of thing. This one is going to be a white magic skill for transforming into mist. You see what that whole pedestal is gonna look like? And we've got some black magic skills that we're going to acquire. This 1st 1 is gonna be shooting out a fireball, and then this last one is gonna be inability called Electro Spark. It's gonna be kind of like an area of effect sort of attack. So all these pedestals that we're interacting with back here, these are some skill acquisition blueprints that we're gonna be working on building in this series of videos. So to start us out here, we need to import some assets, and in order for me to do that properly, I need to exit out of this project and open up the one that we are currently working on. So I'm gonna pause a video here and I'll pick it right back up when I have the other project loaded that we're all working on seeing a bit. OK, we are back in the project that we were working in and I am currently in my content Metroid Vania Audio folder. And I'm here for a specific reason attached to this lesson in the course outline. You should find a whole bunch of assets that you can download. Ah, that you're supposed to import into the content browser during this video. The first asset that's included along with this video is one called SFX Skill acquired. So I'm going to jump to my folder right now That has this asset. There's my s effects skill acquired and Onley need to do to bring this into my content. Browsers left, click drag. And when you see that plus button, you can just release and that will import it into the appropriate folder. And then I'm gonna jump on over to my Metro in Vania Textures folder because it got a whole bunch of textures I need to import in here and I'm just gonna hold down the control key and scroll wheel back a little bit just to minimize or, I guess, make these icons a little bit smaller and all the rest of these assets here are all gonna be textures that I'm gonna import. So I'm gonna select right here that I'm going to hold down the shift key so that I select all the ones in between when I select the last guy. So I just selected right there. Hold down, shift key. Select the last one. Now I've grabbed him all that. I'm gonna left click and drag these guys down into the content browser once I see that little plus button by my mouse cursor. Now, when these do import in and it will take a little while here, you will notice that some of them will have that sort of ugly looking background. Not this sort of nice checkerboard background. Um, know that we can get rid of that and I'll show you how to get rid of that in just a moment here because that does drive a lot of people nuts, including myself. So I'm just gonna give us some time here to finish downloading while we are waiting for this to download. Just wanted to point out some things about these different icons that were importing. We've got some button icons. We've got some icons here like this. Nice electoral spark and fire balls. Well, these are gonna be some icons that we see in our interactive menus that were creating a little bit later on. And then we've got icons. It sort of looked like this that are going to be projected onto our pedestals that we're about to create those skill interact pedestals. And then I've got some images in here that are meant to show when we do collect some of these skills as to what that skills gonna look like as a sort of ah tutorial, if you will, a little pop up tutorial when they do acquire that skill. Okay, you can see in the background here that these different textures have finished importing. So I'm just gonna minimize this folder, and again, you're going to see some of these ugly looking backgrounds. If you want to get rid of those ugly backgrounds, all you need to do is on. All you need to do is click on each one of them, right? You do need to click on each one double click and just change your texture group here to be you I And then when you save that out and exit, you will see that you have that nice checkerboard background. This black circle in the back is intentional. So some of those that you do see with the black circling back that is intentional. I'll work on getting rid of those backgrounds for the rest of these between videos. But I want to get rolling with some of the other aspects I need to take care of in this video as well. One thing I need to do is I need to create some D count materials. And there are a few icons that I want to create decal materials out of one of them is the DeKalb back dash. Where is that guy? DeKalb back. Dash is this t icon back dash right there. So what I'm gonna do with this t icon back dashes, I'm gonna right click on it, and I'm gonna choose to create a material, and it's gonna create a material in this folder which I will eventually moved to a separate folder. But here, I'm gonna create it. And there is that material? I'm just gonna rename this really quickly to decal underscore Back Dash. And then I'm gonna double click on this guy to open him up. And what I want to do inside of here is alter a few things. I'm gonna change this. A preview image from being a sphere to a flat cube like that. Gonna look a little bit nicer for our purposes. And what I am going to do is with our DeKalb back dashes. Giant master material knows, selected over in the details panel, I'm going to change our material domain to be deferred Dickau material using the Virginia arriba that's fine shore and then blend. Well, I'm gonna change this to be translucent, like so. And then what I want to do is I want to unplugged this from our base colors. I'm gonna hold down the altar key and left, click, and I'm gonna bring in a multiply node so I can do this by holding down the M Kiemas and Mary and left clicking. And I'm gonna plug this into the A and into the B. If I select this multiple, I know what I'm going to set the be value for this to be 0.5 instead of the base color, I'm gonna plug this into the missive color, and then I'm gonna take out of here and plug this into opacity. And what you're gonna end up with is it's kind of hard to see in the view port there, but you should see something that looks like that. And if you can't see it, just kind of hold down, left, click and tumble around it. That is what you should be seeing. So this image right here, we're gonna project onto one of our pedestals are our skill interactive pedestal for are back dash. Okay, So with that done, let's go ahead and save this. Hey, everyone. I wanted to make a real quick update to this decal material before we continue on, because I've gotten a few questions from you all saying that hey are decal material when we apply it to this diess which you will be doing later on in the course that it's showing up a little transparent like you're seeing before you what students really want. And I agree with you all as you want your various decals to show up something Mawr like that. How do we make it so that it doesn't show up like this, But mawr like this. Well, that's why I stopped the video right here. To add this update. Let's go back into our decal material here. I'll go back into my DeKalb back, dash, and this is currently the set up that I instructed you to do to make this happen. It's pretty simple. We're actually gonna delete out our multiply note. Here's to go ahead and nuke that out and take this top pin and plug it into your base color . So you got a two node set up like this. Next. We gotta make sure we've got our master material knows selected here. And we want to go into our DeKalb blend mode, which is currently set to translucent. Now, take note. You've got two different modes here. Said the translucent. We want to set our DeKalb blend mode. This one right here to be this guy de buffer, Translucent color, normal and roughness. Now, if you do not see this option, and I'm going to set it to that right now, if you don't see this d buffer option which can do is going into your settings project settings. And I already had my tab open type in D buff in the search bar. And make sure you've got this d buffer decals checked on. So with that on, you should be able to find this decal blend mode of color normal in roughness. And then all we need to do here is save. And then we should see this mawr prominently on the diets. Not quite. So see through now, note that not all of these different details are gonna show up is strongly as that double jump one that I had over to the left. So let's see what we got now. Okay, are back pass one showing up a little bit stronger. And if I go over to my double jump one, which you're gonna be creating here in just a little bit, you can see that I've already updated my DeKalb double jump here to reflect this d buffer. Translucent color, normal in roughness. Okay, so for the rest of this video, you're going to be making the rest of these decal materials. I suggest going with this set up as opposed to the initial set up that I just showed you earlier in this video. So go ahead and do that and enjoy the rest of the tutorial and the rest of this course, And I'm going to click on my master in the test map tab there. And I actually want to duplicate this back dash a few times because I need to do this for our double jump in our electro spark in our fireball and our lens of truth and our myths. So I'm gonna hit. I'm going to select our DeKalb back, Dash, and I'm going to control W to create a duplicate of it. Control W sorry. I mean, let me just rename this really quick. I'm gonna call this decal underscore. Double jump hit Enter. And with that selected, I'm going to hit controlled W to duplicate it. This one I'm gonna call decal, Electro spark hit. Enter with that selected I'm gonna do control w again, this one I'm gonna call decal Fireball. With that already selected, highlighted in yellow, this will be controlled. W again to duplicate it. This one will call decal lens of truth. That's gonna be the name of an ability that we can get And then I'm gonna do control w one more time, and this one's gonna be called decal mist like so Okay, before I modify the rest of these, I'm going to select all six of these. You could do that by either control clicking on all of them like that. Or you could select one, hold down the shift key and select that last one to select. All in between, I'm gonna movies on over to my materials folder right away. So left, click and drag over your Metro Vania Materials folder. And when you do, it's gonna ask you, do you want to copy them here or move here? Select Move here. Okay, Now, I'm gonna jump on over to my materials folder, and I already have taken care of my DeKalb back. Daschle, let's do our double jump next. The only thing we need to change out here is the texture sample. The rest of this is all gonna be fine. So if I click on our texture sample node, I could do a search for t underscore icon and I'll find the double jump right away, and you can see it's actually write down below it. So I'm gonna select that. Save that out. That's gonna be pretty good. Then after this is finished saving, I'm gonna come back to my main editor here. You can click that square icon again if you want to see that. And sometimes these are really tricky to see. Let's go, Electro spark. Next, I'm gonna select that texture, sample node. And in the details panel, I'm looking for T icon Electro Spark. Let's see that guy. Next. I am going to select my decal. Fireball double click on that. Select my texture sample node. Let's change that to the T icon. Fireball And I did name these also. Very specifically, you'll notice I have different assets named Fireball that we just imported. But for these, these decals, I'm looking for the tea icon version of them. So these icons are different from the ones that are going to appear in our our interactive menus. Okay, so that one's looking pretty good. And then I'm gonna come to decal lens of truth. Select that texture sample, T icon, Lens of truth. That's the one that ah, that ability is going to allow us to see hidden passageways or see hidden platforms will be kind of cool and then next, gonna come over under decal. Missed selecting this texture sample and we're looking for t icon. Missed. There we go. And now the last thing that I'm gonna want to do here is gonna come back to my content browser here, and I'm gonna change thes thumbnail images a little bit in the way I can do that is if I come under my view options here in the content browser, I can go into thumbnail edit mode. Check that on and you can see that there's a little message. You're saying that we are in thumbnail edit mode and I'm going to change the preview asset for all these to be on the square. And then you can actually move these around a little bit in the viewer to tumble it around . It's not an exact art, but you kind of get the point. I like seeing this a little bit better than these rounded spherical shapes helping kind of visualize what that's gonna look like. And there we go. When we're done editing, we can click here, Let's save all. And as I mentioned before between videos here, I'm going to double click on all these various textures, and I'm going to clean up the background so that that looks a little bit nicer. And I get rid of some of this this Jang keenness that's kind of seen in the background of some of these with that guys that is going to do it all for this one. We will see you in the next video. 35. Skill Acquire - Assets #2: Welcome back, everyone. In the last video, we imported some assets and we even got a preview of what's to come. Those skill acquisition blueprints and some of those skill acquisition blueprints that we saw in the last video contains some sort of orbs that were kind of floating above those little altar sort of things. So what we're gonna be doing in this one is creating some or assets for those blueprints. Specifically, we're going to be creating some material assets needed for some of those skill acquisition blueprints that they're gonna be materials for some of those floating orbs above those altars. So let's hop right to it. We're gonna be working in our content Metroid, Vania Materials folder. And the first thing I'm going to do here is find some empty space over in my content browser. I'm going to right click and in my right click menu. I want to create a brand new material. Now, I'm gonna call this one m underscore skill underscore base, and I'm going to double click on this guy to open it up. And I got a set up of nodes here that I'm gonna try to put together and The idea here is that I wanna have a material that kind of flashes between two colors. Kind of subtly so the way I can get a ah, no doubt here that allow me to choose a color is to right click. And I can search for something called a vector parameter. And I'm gonna call this. It's gonna prom me to give a name in missive Color one like so And I would double click this or not Double click it. I'm going to control C control V to bring in a copy. Although this one I'm gonna call you missive color over in the details panel. I can change it to to Okay. And I'm gonna change this first e missive color by selecting it. I can't come under the default value, and I do have a particular value in mind. I'm gonna just hard code. Um, you could choose a value from here, but I'm just gonna punch in some numbers. I want the are to be one not for one. The G two B zero, the B two B zero and the a T V one. So straight up red right there in this second e missive color that I'm selecting over in the details panel. I'm going to set values for this. I'm gonna leave the R and G as zeros, but I'm gonna change the B two b one and the A to be once I've got red and blue out here. Now I want to flash between these two colors. So in order to go between two different values here, I'm going to bring in something called a lurk node. I'm gonna right click, do a search for a alert node, or you could simply drag off of here like this and do a search for a alert node. The one I'm gonna be looking for is linear inter plates like Sil, and I'm going to plug this into the B value and on orange go from the A color, which is currently read to the B color, which is currently blue. I need to plug something into the Alfa here, and what I'm gonna do is I'm going to bring in a sign node sine waves go up, down, up, down, up, down, Right click! Gonna do search for a sign node and I'm gonna plug this into the elf of value and with my sign node selected, I need to specify a period. And this period, I'm gonna put as a value of four. This is the amount of seconds it takes to go from a to B. Okay. And in order to make this really work, I need to plug a time node into the sign node. So gonna right click over here type in time in the time note I want to plug into here, and there is more than I want to put in here. But just to give you a quick preview of what we're going to be creating here if I plug this into my e missive color right away, you see how this goes from red to blue Back to red, blue, etcetera. So that's all just to demonstrate what we're gonna be doing. But I do want to add some more notes here. So I'm gonna unhook this by holding down Ault in left clicking Now off of this lurk node. I am going to bring in a multiply note. But instead of actually searching for the multiple, I knowed I am going to hold down the Emma Kiemas and multiply and left click and I'm going to do that once. And I'm going to do that twice. I actually want to of these out here. I'm gonna plug this look out, put into the B value this very first multiply and then up above here to plug into the A value I'm gonna right click, and I'm gonna bring in a scaler parameter. And I'm gonna name this scaler parameter glow amount plugging this into the A pin there. So what I can do here is I can select a value, and I'm gonna set my glow amount here to have a default value of say, let's go five. And you see that number reflected right here in the Paramus setting and it says Paramus five, right on the node. Then I'm gonna take the result of this, and I'm gonna plug it into another multiply node like so. And I'm going to take this multiply node and this one is going to go into the missive color like so OK, but there's a little bit more work I want to do here. I do want Teoh give this a little bit more of a gas a glowy look like, right now, it looks rather flat, right? So one thing I can do is I can bring in what is known as a friend. L node. Looks like Fresnel. Gonna right click and do a search for this guy right here. The one that looks like Fresnel called for now. And I'm gonna plug this into the B value. Like so. And you can see in the preview window here is sort of what that looks like. It's sort of I think it gives it more of a glowy, sort of look about it. I don't even know how to describe this look, but I really like it. And last thing I'm gonna try doing here, maybe I'll keep this. Maybe I won't. Is gonna select my master node here, and I'm gonna change the blend mode from opaque to translucent. And then I'm gonna take the output of my friend l node here and plug it into this opacity input. This was not available before this opacity was actually great out until I changed my blend note here to translucence. I'm gonna plug this into the opacity. Let's see what kind of a look this gives us kind of see through like that Sort of like that . Yeah, I kind of dig now with your friend l knowed selected here. You can change play around with this exponents like you change it to be something like one . You can sort of see what that's gonna look like. You can change it to something like 10 and you can see that that color ring is really gonna be pushed out to the edge. I think for the time being, I'm going to go with a value of one. Something like that. Maybe I'll keep that. Maybe I'll change it. Put a value of one is gonna be good enough for now. With that, I'm gonna save this. And I'm not quite done yet. We want to do next is come into the content browser. And if I right click on our M skill base here, right click, I can create a material instance from this this is kind of a way to create a very performance material that is essentially an offshoot of our base material. Here. You're going to see what kind of parameters that gives us to make these really easy to alter from our base set up. So I'm gonna create a material instance, and I'm gonna call this 1st 1 m I underscore. Be magic. This is gonna be the material that we're going apply to the the orb that's floating above our black magic Alter. Okay, I'm going to double click on this guy real quick and you can see now I've got some parameters that I can change about this. This is different from our material set up that consisted of all these nodes. Right now you can see I had a parameter note here called the missive color Oney vector parameter. This is another vector parameter node called the missive color too. And this is is scaler parameter know that I called glow amounts and notice all these names right here. In my material instance, they are right here as well. Vector parameters and scaler parameters. And with these now, in my material instance I can adjust them as I see fit. So let me see for my black magic here, I'm gonna click on this missive color one gonna expand out this triangle here a little bit and for my our value, I'm gonna change that to be 10.8 the G value. I'm gonna set to be 0.5 Got some very specific values in mind. And for the B value, I'm gonna change that to be 0.35 I'm gonna leave that a value at one. It's sort of this dark, purplish, maroon type color and then for my missive color to I'm gonna check that to make it so that I can edit it, gonna click this little drop down triangle, and I am going to make this straight black. So 00 b has got to be changed to zero. So it's gonna change from this sort of, uh I don't know how you describe it. Dark magenta, toe black in the skill, er, parameter value Here. You could change it if you want. I think I am going to leave it at five. So that's gonna be pretty good. I kind of like that. So I'm going to say that that I'm gonna come under my in the test map tab one more time to jump me back to the level editor. I'm gonna right click on my M scale base, and I'm gonna create another material. Instance, this one will be called M I for material instance, and in this case, it will be underscore W Magic. Let's double click on this guy to open him up. And of course, I do have some settings for this, so I'm gonna click on Ari Missive color one and expand out the properties right here. The R value. I want to be 0.7 the G value I'm gonna be setting to 0.7. The B value I want to be one in the A value will be one as well. You miss it color to gonna select that. Expand out those triangles, the r G and B value. I'm gonna set to be one all across the board, so sort of a light blue transitioning to a straight up white. I think I'll leave my glow amount at five as well. Yeah, I could change that, but that's looking pretty good. I'm going to say that Black magic. Let me see. Glow. Mom gonna check that 10 now, you know what? I'm just gonna said that back to five. That's going to be pretty good. Say that is Well, okay, so now we've got a couple of material instances that we can apply to some of those orbs that we're gonna have floating above our skill. Our skill alters if you will. We're going to interact with those skill altars and acquire those skills guys. That is going to do it all for this video. We will see you in the next one. 36. Skill Acquire - Assets #3: Welcome back, everyone. Into this video, we are going to customize some particle assets for our upcoming skill acquisition blueprints. We're going to actually be duplicating in a fact found in the affinity blade effects pack. And I just want to throw this out there from the get go. At some point in the future, the Infinity Blade effects pack may become, ah, not available to you all. Or I know that at some point in the future at the Games is looking to transition from their current particle system, the Cascade editor, over to a newer system known as Niagara. Now, if that takes place, um, and you do not see or have access to this upcoming particle system that I am going to be duplicating and using as a base, that's fine. This whole video that we're about to be working on is, for the most part, optional. It's just add a little bit of jazz to our upcoming skill acquisition blueprints, so this is a non essential video. But if you care to follow along with this one, it's ah, it's a good way to kind of learn a little bit how particles are made and some of the things that you can do to tweak and tune them. So without further ado, let's jump on into our infinity blade effects pack. You should have added this to your project way towards the beginning of the project. And if you haven't done so, you can go to the epic games market place to find it. And in here I'm going to jump into the effects, pack the effects folder rather, and then in here I'm gonna look for the F X Mobile folder and you're going to see my pathway along the top here. I gotta drill down quite a lot that I'm going to go into this ice folder and then into this combat folder. And inside here is in effect called P Moving, spinning ice P moving, spinning icers two of them There is this moving spinning ice 00 And there's this moving, spinning ice zero to I want to work off of this p moving, spinning ice 00 So what I'm gonna do is I'm gonna right click on this asset, and I'm going to create a copy of it or rather duplicated, and I'm gonna call this 1st 1 p underscore Let's try that again. P underscore skill. Enter there, then, with that one already selected, I'm going to do control plus w to duplicate that again. This one I'm gonna call p underscore W magic. And then with that, select that I'm going to do control. Plus W again to duplicate that. And this one will be called P underscore. Be magic for Black Magic. Cancel with those three created, I'm gonna move those over to my Metroid Vania folder structure here, so I'm gonna expand this out, and it's good to have the sources panels showing So this is the button to show or hide the sources panel, in case you were wondering. So I am within my content Infinity blade. This pathway right here. And I'm gonna be moving those particles that I just duplicated into my Metroid Vania particles folder. So I've got my be magic here. I'm gonna select that. I've got my w magic. Where did that go would be down here in my list. W magic W magic W magic w magic. There it is. And then I've also got p underscore skill which is located right there. So I just control selected each of those 12 in three up here. And then I'm just gonna left click and drag them on over to my Metroid Vania particle folder. And when a release, it's going to say, Do you want to copy them here? Move them here. I am going to move them here. And so now I should be able to jump into my Metro Vania particles folder. And there they are. Okay, so I'm just going to double click on my p underscore skill to open this guy up. I'm gonna dock him across the top here, and this is what our particle effect currently looked. Looks like, and we're gonna be making some modifications from here, so you could see this particle effect is made up of different emitters. Each one of these columns, if you will, is a different emitter. And there's some that I just want to disable right from the get go this burst fire pillar. I'm gonna click right here. That'll bring on this little red X mark that will get rid of that. Um, the particle emitter right here. It's called particle emitter. I'm gonna click right here to disable that and then mouth circular I'm going to click right here to disable. That is Well, okay, So what do I want to modify within here? Well, there's this loop fire pillar. I'm gonna come under here. And in this particular emitter, there are different modules that we can modify, and the one I want to deal with is this color over life. So select this color over life module and within here I am going to expand this color over life triangle. So I'm gonna click here. Click here. Going to click here. There's a lot of these drop down triangles that you gotta expand out, going to click here for our points and then click here for our 0.0. And you can see that this is where we're sort of getting this bluish color right now. I want to change this out for our skill. So for this out value gonna click this drop down triangle and I'm gonna hard set some RGB values for this. I'm gonna set the our value to be one. I noticed that the G value to be one and the b value to be zero, So I got this yellow swirl. You could see that loop fire pillar is going to affect that yellow swirl. That's kind of emanating up. Okay, next one I want to modify is our sparks color over life. So here's our sparks emitter gonna choose the color over life module for this guy. And here, over in the details panel under color over life distribution. Constant curve points zero. We've got this out value. And here, too, I'm gonna change the out value by plugging and some numbers I'm gonna change. The are to be one which it already is. The G two B one and the B two b zero. You can see that's gonna start yellowing up some of those sparks, if you will, that I'm going to scroll down a little bit into this one point and I'm gonna change the value here to be our value of one b value of one and RG value of one rather in the B value to be zero. So that's gonna maintain its yellow color all the way through from the beginning of its life too. The end. It's not gonna transition to another color. So this module does what it says it does is pretty self explanatory. You can change the color of, in this case, these sparks. He's a little like floating squares over time can. Next, I'm going to select our flare react emitter right over here. So this column and we want to come under color over life and under the color over life distribution. Constant curve points. Ah, we're going Teoh, leave this zero point as 000 straight black. However, under the point number one, I am going to change out the our value to be point to the G value to be point to and the b value we're gonna change to be zero. So it's kind of this more subtle yellow, that sort of glowing cone out there. Okay, with that, I'm going to save this particular particle out. And this is the particle effect. I'm going to be playing around our skill blueprints when we ah, when we obtain our skills for double jump and are back. Dash, I'm just gonna close this out for now. And you know what? Before I close out of that one for good, I'm actually gonna double click on it one more time. One thing I want to do is I want to change the thumbnail image associated with this now that it's yellow, just gonna use my scroll wheel to scroll up a little bit, and I'm gonna click this button right here to generate a thumbnail image and then save that . And then when I close out of here now, you can see that that thumbnail image is going to give a better visual representation as to what this particle is gonna look like. Okay, Next, let's do much the same in r p underscore. Be magic particle here is double click on that guy to open him up, and I'm going to disable our burst fire pillar. I'm going to disable our particle emailer emitter by clicking right there, and I'm going to disable our mouth circular. And I'm gonna be changing a lot of the same properties that I just did, although just a different color. So let's come under our loop Fire pillar emitter. Choose that color over life. We've got a lot of these drop down triangles expanded, which is all well and good. And underneath this zero point right here 0.0.0 I'm gonna change our value to be 0.8 The G values going to be 0.5 and the B value is gonna be 0.35 It's going to change it to this kind of dark, maroon ish red sort of color. It's pretty hard to see within their right now, but you'll see more of this color coming up. Okay, Next, let's come under our sparks color over life sparks emitter color over life over in the details panel under the zero point and again click thes drop down triangles. If you need to reveal all these, our value is going to be 0.8 g values gonna be 0.5 and the B value is going to be a 0.35 Now, I like this color a lot, and I don't want to keep punching in this number again and again. So what I could do is I could click on this little color bar right here is gonna bring on my color picker and I could left click and drag this up to this upper bar right here to save that particular color. Select can make it so I can set this color a lot easier going forward. So with that done just gonna click, OK? And then with this color over life sparks gonna come over under the one point And because I've already got that saved out, all I need to do is click on this out value under 1.0.1 click that color bar. There is my safe color. So I'm just gonna select that, Then click OK? And I'm good to go there. So you can kind of see what those sparks have that maroon ish. Ah, purplish color is Well, okay, next one for this, I'm gonna come under our flare wrecked emitter come under color over life in a here. We want to come under, not the 0.0, but the 0.1 I want to come under and here I'm just going to click on this out value for the color bar and change it to that save color that we got those rgb values. Click OK, And you can see Is that very dark reddish color. Okay, I'm happy with this, So I'm gonna zoom up in on this a little bit by using my scroll wheel. I know this is pretty tough to see, but I'm gonna click here to generate a thumbnail image for this. I'm gonna say this and then I'm gonna exit out of here, and there is my updated thumbnail image. So that is looking good. Okay, Last but not least, I'm going to modify r p underscore white magic. So let's double click on this particle system docket across the top. And as we did before, we're going to disable our burst fire pillar. We're going to disable our particle emitter right there, and I'm going to click on our mouth circular to disable this particular emitter again. This disables these particular columns. Thes individual emitters in a particle system is made up of different e emitters. Okay, then, under our loop fire pillar emitter, I'm going to select our color over life module. And I do have a color for this one that I do want to set. So under color over life distribution, constant curve are 10.0 here. I'm going to set our our value to be 0.7 g value to be a 0.7 RB value is gonna be one kind of this very light blue color, and I'm gonna save out this color right away, so I'm just gonna click this bar right here. Bring up our color picker. I'm gonna left, click and drag to save this up here. Gonna click OK, that'll make these next steps a little bit faster. So now I'm gonna come under our sparks emitter sparks color over life Select that module and under 0.0 are constant career of 0.0 Right here We're going to change the out value here to be gonna click that color bar. There is our color that we had saved Gonna click OK, so you can now see those value set for our one value. Here are 10.1. I'm gonna click this color bar right here Said that is well click OK, And then last but not least, I'm going to jump on over to our flare erect emitter and we've got a color over life module . And under this, I'm going to select our 0.1 not 0.0 point one. Select this bluish color right there. Left click. Let's choose that Save color that has that for RGB values Gonna click. OK, and then here too. I'm going to just zoom up in on our view port by scrolling in a little bit, generating a thumbnail image kind of this white ish glow for our white magic skills. And I'm going to save and I'm going to jump back out. And now we have three modified particle systems that we can use in our upcoming skill acquisition blueprints. Alright, guys, that is going to do it off for this video, we will see win the next one. 37. Skill Acquire - Assets #4: Welcome back, everyone. In this video, our goal is to create a static mesh asset that will be using in some of our upcoming skill acquire blueprints Said will be creating specifically, We're going to be creating this sort of bookish looking static mesh that is hovering above this pedestal. So I have temporarily jumped back to an older version of this project that I created in preparation for this course. You can see where we're going with this, creating some of these skill pickup pedestals. And in the last video, we created some of these particle effects. Well, we didn't create them from scratch. We duplicated and modified some particles to create this black magic skill pickup. Particle effects surrounding these orbs there you could see some of those icons on the pedestals as well. Fireable icon. And here are some of our white magic skill pickups that we're gonna have. This is gonna be transforming into mist and our lens of truth. There is a particle effect that we created in the last video for that. And then over here, we've got this skill pick up. This one's gonna be for a back dash skill. And this one is going to be for a double jump skill. And above these pedestals I'm gonna have this bookish looking thing is, if we're reading that tome and learning that skill, right and you can see that here is that particle effect that we created in the last video for that. So I thought it would be a good time here before we get started creating this particulate static mesh just to review what we've created so far in the way of some particles and what is to come. So with that all said, I'm gonna close out of this project and jump act into the project that we were working on so we can get started creating that static mesh seeing a bit. Okay, welcome back, everyone. I have now loaded up our project once again for where we left off, building out this character skill system. And when I wanted to do is I wanted to jump on over into our infinity blade Iceland's pact that we added to our project towards the very beginning to grab a static mesh out of there to create that sort of book looking static mess that you saw in my other project. Okay, so I'm gonna come under infinity blade Iceland's. And here I want to come under environments in here. I want to come under ice again. You can see the path that I am traversing Teoh right along the top of my content browser here. So, Isis, I'm looking for environment graveyard. Where is it? Environment Ice Graveyard Ice Gravier There it ISS ice graveyard. And in here I'm looking for a static mesh And inside of here I'm looking for this guy right here. This s M e N v ice graveyard. I can't say that word. SAR cof f Yeah, that's basically a mummy. Whatever that word is. So that's the one I'm looking for. I'm gonna bring one of these into our levels by simply dragging in dropping. And if at some point, the future of this constant pack becomes unavailable for you to use you could probably use is simple cube asset to kind of recreate this book looking static mess that we're looking to create here. But since we've got this nice looking Zach match available to us to this present day, I'm going to use this, but know that you can use a cube as well. Okay, So what? I'm gonna do it. This first mesh is I am going to change some settings about it. I'm gonna just the rotation and scale of each. So I'm gonna make this much, much smaller. I'm going to lock by scale settings over here. Lock him, and I'm gonna change the X, y and Z to all be 0.1. Okay. Very, very small. Zoom up in on it a little bit, and then I'm gonna duplicate this asset right away because I am going to want to have two versions the of this sort of book looking things. I'm gonna hold down the Alte left, click and drag. There is my copy of it. This one on the left. I'm going to select that first. You know, I'm just going to call this in the details panel. I'm just gonna call it mesh one just to keep myself organized in this one over on the right hand side. I'm just gonna name that mesh underscore Old too, just in case I lose track of them anyways, going back to our mesh. No one here. I'm gonna change some of the rotational settings on this. The X rotation. I'm gonna change to be 21. The Why I'm gonna change to be negative 19. And the Z I'm gonna change to be negative. 97. Something like that. Okay, mesh number two. Here I am going to change the rotation settings for this to be x 21. Why? To be 19 and Z to be a negative 83. Okay. And then we're gonna try to position them so that they are in a very book like manner. OK, And you might have toe change your snap settings to your mind are currently my snap settings are set to snap settings of 10. I'm gonna temporarily undo the use, turn off my snap settings by making that not be orange. And I got really fine precise control over this, And I probably should be a good designer and go into my Ortho graphic views. But I'm gonna go something like that and call that pretty good, right? Doesn't have to be perfect. Something like that. Okay, now, what I want to do is I want to create a custom static mesh out of these two static mesh pieces. So what I need to do select both actors. You can see I've got one selected over here on the left hand side. I'm gonna hold down control and left Click the second Once I've got both of them selected and then I'm gonna right click on them. And in here there is going to be a convert Actors to static mesh option. So I'm gonna click on that and it's gonna say, Where would you like to say this? To what? We should say this to our content. Metroid Vania meshes folder and I'm going to call this s m underscore Move skill because this particular asset is going to be above our pedestals were regained the ability to back dash and two double jump So I'm just gonna call it our move Skill static Mecir gonna click OK, and with that done, I should be able to traverse into my Metroid Vania meshes folder And there it is. And again, if you want to pivot the way this looks in the thumbnail image you can click this view options go to thumbnail edit mode Click that to turn that on. Then you can click on the thumbnail and move it left and right a little bit kind of reposition it like So I kind of like that angle. I'm going to say I'm done editing. And then that asterisk means it's not safe. So I'm gonna click, save all right here, and I will save selected. So that is now saved. Alright, guys, we've got that static mesh created. That is all we wanted to accomplish in this one. We will see you in the next video. 38. Skill Acquire - Data: Welcome back. Once again, everyone, I am temporarily back in my older version of this project that I created in preparation for this course. The reason I'm here is to show you exactly what we are looking to do. Once again, seeing is believing, right? So in this video, our goal is to create the enumerators and struck assets needed for the skills are player will soon acquire. Now, these assets will provide important data about each skill. So, such as its name, its associate ID image, it's man accosts, etcetera in order for us to build out our skill system. So again, laying down some or groundwork for what's to come. Now what I'm talking about here is, if I jumped in and play, I'm gonna interact with some of these pedestals. And as I interact with this one, I'm gonna gain the electro spark ability. Now you can see on this sort of pop up screen that appears we collect that ability. There is a man accosts associate ID with this skill to use it. There is a text description, for example. I'm just gonna collect a few these I'm not gonna I'm not gonna stop the video for each one of these. So Mana cost description. Mana cost description. They got a few these right? Okay. And when I bring on the screen where we can change out some of these abilities right up here in the upper left portion of our HUD is what ability we have slotted in for our white magic ability slot and our black magic Ability slot. So I could bring up this menu screen right here. It shows the name of each ability, how much each cost in terms of manna. That's for our black magic, right? And also for away magic. I can bring up on that, and it shows things like the name the Mana cost for the black magic. We also have to consider, like, how much damage each things each thing does. So the idea in this videos, we're going to build out some of the data structures for all that. So with that known, I'm gonna jump out of this project and jump back into our current version of the project so we can get started. I'll see you on over there. All right, guys, we are back in our project that we were working on previously. And if you notice I'm in my content. Metroid Vania Blueprint E. Newman's folder in Inside of Here is where we're going to be adding our first Innu Marie Shin assets now e new moms or in numerator is for long any new moves for short. They allow you to access your own that custom list of settings or states. So what I'm going to use these four is to create a list of display names for things like our white magic and a black magic. So in this folder, going to right click, gonna come under a blueprints right here and right in this little fly out menu. We've got this in new Marais, Shin option. So go ahead. It's like that. And this 1st 1 I'm gonna just gonna call E for in numerous shin underscore be magic that I'm gonna double click on this guy to open him up. And this is where we can create our list of names. So right along the top here, where it says enumerators way over to the right. You've got this new button. I'm gonna click that five times. 1234 and five and then I'm gonna enlist. My name's over here on the left hand side. First name is gonna be none. Second name. I'm gonna change to be a fireball. Third name will be electro spark. Fourth name will be a blood lust. Now, blood less is not in actual skill that we're going to implement. But I just wanted to fill out our screen with some are black magic selection screen with some sort of dummy skills. And then last one, is there going to be another dummy skill? It's not actually gonna be hooked up. Gonna be called Arctic Blast Art Arctic Arctic. You know what? Let me check on this spelling of that one between some videos here. But I think, actually, I think that's supposed to be Arc Dick Blast Arctic Blast. I think that looks more correct. Gonna hit. Save right there. That's going to be our list of names for our black magic skills. Next, I'm going to come back to our content browser. I'm going to right click once again here in some empty space. We're gonna come under blueprints, enumeration, and this next one we're going to call e underscore w magic for our white magic skills. double click on this guy to open her up. And just like we did before, I'm gonna click this new button 1234 and five times. And our names here are going to be none. Next one is going to be lends of truth. That's going to be the ability that allows me to see hidden passages or hidden platforms. Next one is gonna be called Missed, where we are going to be able to transform into mist and passed through gates. Next one is going to be called Shield. This is not going to be an ability that we're going to create, but it's just gonna be a dummy skill to help fill out or white magic selection screen. And the next one is going to be called Time slow. That also will not be a skill that we hook up, but in the interest of making a fully fleshed out white magic selection screen, that one will be there as well. OK, I will hit. Save with that and then we can exit out of each of those created in new Marais Shin's one Maureen UMA rations that I would like to create down here right click blueprints E numerous . Shin, I'm gonna call this one e underscore skills. So this is going to be a list of all the different skill names that we will implement within one enumerated list. So double click on this guy gonna docket across the top, and I am going to click on the new button. 123456 and seven times. First display name will be a nun. Second display name will be double jump third display name. We will change to be back. Dash next display Name will be changed to be Fireball. Next one will be electro spark. Next one, we will change to be lens of truth. And the last display name here will be changed to missed. Let's go ahead and save that guy. Now is the note. We will be using these lists later on to instruct our project. The magic list are gonna instruct our game with magical skills. The player has slotted the elements list. Or rather, the skills list will be referenced to modify the amount of Sorry. We are not going to create an elements list. Never mind strike that last one. Okay, so with all those finished. We're going to create a few mawr acid types here, so we've got three enumeration. Next, I'm going to jump on over to another created folder. Now, this newly created folder can be created inside of our Metroid Vania Blueprints folder. So I'm just going to right click right here on our blueprints folder, going to create a new folder. This one is gonna be called damage types. We're gonna be creating a new type of blueprint here called damage Types. And this is gonna be coming into play further on down the road when we create some of our black magic skills to damage a dummy enemy, if you will. So we're gonna build that out now, just so it's all in place. And to do this inside of this folder, we're gonna right click going to choose a new blueprint class. And it's not one of these common classes. You gotta search for it in the search bar down here. So if you do search for damage type, there is the guy that you are looking for. Select that and then select his green button. This 1st 1 I am going to call b p underscore damage underscore fire. And then with that, select that I'm just gonna do control plus w to duplicate it. And I'm gonna call this next one BP damage lightning. I'm gonna have one to fireball style attacks. That's gonna be the Fire one, obviously. And then we're gonna thio going to have another black magic skill called Electro Spark. And that's gonna be lightning. Now, I'm not going to be doing anything within these for the time being, so I'm just gonna save these again. This is laying some groundwork for what used to come with that out of the way, we can move on over to our Struck's folder and inside of our blueprints, Struck's folder, we're gonna be creating something known as a structure asset now a struck or our structure , Or rather, it's noted they struck For short is a collection of different types of data that are related and held together for easy access. You can think of instruct as a I heard it referred to as a bucket that holds other variables inside of it. So think of it like that. A bucket that holds a collection of variables. All right, so we're gonna create a struck variable to hold all the attributes related to our magic skills. So inside of here, we're gonna right click, come under blueprints. And in this little flower menu, we've got a structure that we can create And I'm gonna name this 1st 1 str underscore skill data and then I'm gonna double click on this guy to open him up. And if you remember, when I was in my older course in preparation for this one where I was interacting with those different skill alters that we could obtain those skills from assumes, I obtained one of those skills. There was a widget blueprint that appeared on the screen that gave some information about the scale that we obtained, like double jump. And then it gave a text description, all this kind of stuff. Well, we need to pull that data from somewhere. We're gonna be pulling it from this struck. So what we got here is some struck's that we can name, and then a sign, a variable type to them. So this 1st 1 I'm gonna call title T i t l e. And I'm gonna change the variable type. Just gonna slide this on over to be a text variable right there. I'm gonna pull this down a little bit because I'm gonna be adding a few more variables. Here, click this new variable button. This next one will be called the description. This will also be a text variable. Another new variable. This one will be called in a put button and this is gonna be a slate brush variable type. So if you just do search for slate, you know, whittle it down and that's the one you're looking for right there. A slate brush. Let's do another new variable. This one will be called skill icon. That will also be a slate brush. Another new variable. This one will be called skill Image, which is gonna be a little bit different from the icon. That will also be a slate brush. Let's do another new variable. This one will be skill on border color. This will be a slate brush as well. Then we're going to do another new variable. This one is going to be skill funds color gonna change this one to be a slate color. So I'm gonna select here and we're gonna changes to be slate color right there. all right. And actually skill. Border color. Um, due to do you know what? I'm gonna leave that a slate brush for now. I can't remember if we need that to be a brush or a color. I want to say it was color, but my notes are saying brush right now. I'm just gonna leave it be for the time being, um And then gonna add one more new variable here. This one is going to be magic skill. And I'm gonna put a question mark at the end of this because this is going to be a boolean variable with all of our skill types. Um, most of them will be magic skills. We're gonna have a skill called Missed where we can transform into mist and another one called lens of truth. Those are gonna be white magic skills. We're gonna have our fireball and our electro spark offensive black magic skills. Those are gonna be considered magic. Skills, however, are back. Dash and our double jump skills are not going to be considered magic skills. And depending on if it is a magic skill or not, it may cost Mana which magic skills will, Whereas non magic skills like double jump and our back dash will not. Okay, that is gonna be enough for that struck. So I'm just gonna say this one and we can exit on out of here. Then I'm gonna create a new struck in the same folder. Get a right click here. Come under Blueprints. Fly out menu. Select that structure. This one is gonna be called str short for structure magic attributes. So this structure is going to contain all of the data, the attributes for our various magic skills. I'm gonna double click on this guy. And this 1st 1 we are going to call name. This will be a text variable next, one new variable. I am going to call icon Slate. This will be a slate brush, Another new variable. This one we will call mana cost. And I'm gonna make this a float variable. And I'm gonna peel this down because there's two more I'm gonna create here. Another new variable. This one is going to be for damage. And I am going to leave that as a float variable type as well. Then we're gonna do one more new variable here, and this one is going to be called damage type, and this is going to be set to a damage type. Ah, When you whittle it down to damage type and you select over damage, it is gonna give you a little fly out menu here. You want to choose the object reference will choose object reference for now, and we're gonna hit, save, and we can exit out of here. So we're soon gonna create some variables of this variable type right here in our BP player in order to determine attributes about her specific magic skills That is to come. But we have some of that ground work in place for what is to come. So, guys, that will do it all for this video. We will see you in the next one. 39. Skill Acquire - Skill Attributes #1: awry. Welcome back, everyone. In this video, our goal is to create some skill related variables inside of our BP player so that our player character knows what skills that have and whether or not they're allowed to perform a certain move yet or not. So we just did a lot of prep work, creating a few structures, some enumerators, etcetera. Now it's time to put some of that stuff toe work, and I'm going to start off in our blueprints. Characters are BP player asset. That's the guy you're looking for, or the girl I should say you're looking for right there. Double click under BP Player to open her up. A lot of variables we're gonna be creating in this one, and we will be setting some of these variables to contain some data that is going to be important to us down the road. We're gonna create four variables right away. So most of our work in this section are this video Rather is gonna be taking place in this variables section down here. So I'm just gonna pull this up a little bit to give ourselves a little bit more room, and right away I'm gonna create a brand new variable right here. Click that plus a variable button. And I'm going to call this 1st 1 be magic, slotted like so and over in the details panel. I'm going to set our variable type here to be Let's do a search for that e numerator we just created. It's gonna be called e underscore. Be magic right there. E be magic. Okay, the category that I want this to live in. I'm gonna be categorizing a lot of our variables here for easier organizational purposes. I'm gonna select honor category and then drag, and I'm gonna type in a category known as player info. Okay, It says, given a default value by please compiling the blueprint. If I compile this, you can see I could click this little drop down menu. And now I can pick from those different values that I put in are enumerated list. There I put in the labels of Fireball Electro Spark Bloodlust, Arctic Blast. I'm gonna leave this as none for now because later on in the course is where we are actually going to set this variable. I am fine with this being none for now. Okay. With this variable created. I'm just gonna select it. Make sure it's like yellow, you know, highlighted like that, then good. Then I'm going to do control plus W to duplicate it. But this variable I'm going to call w Magic Slotted. That's white Magic slotted. And the only thing I need to change about this one is the variable type is not going to be e a b magic. It is going to be e w magic with white magic. So now if I was to compile this, you can see here in the little drop down lists I can choose from the different labels that I put in my e white magic in numerator. Okay, here, too. I'm fine with that set to none for the time being. Okay, Next variable I will be creating by clicking on this plus variable button over here. I'm going to call this one skill acquired. And with that selected over in the details panel, I'm gonna change the variable type here to be another in numerator. It is R e skills in numerator. Okay, I'm gonna put this in our category of player info is well, and you can see that it is categorizing them all into this player info category. And here, too. If I was to compile in the default value, I could see all of my different skills that I could assign. Here I am fine with this being done for the time being as well. Can't go add another variable click on this plus variable button. This one is gonna be called B w magic Ready Question Mark. And you can tell by that question, Mark, I'm gonna change this variable type to be a Boolean variable type, and I'm gonna actually leave a tool tip for ourselves here. Tool tip. I'm gonna leave for this one is going to be messages our White magic menu to indicate if White Magic is ready to be cast so white magic is going to have I'll say cast or not, are white. Magic is gonna have a cool down timer associated with it once it's activated. So this bullying is going to be turned true or false based on that kind of thing. Um OK, so I'm going to also put this in the category of player info, and I'm gonna compile here and by default, I am going to say Yes. The white magic is ready, so make sure you check that guy as well. Okay, Now I want to create some more variables. You're quite a few more to create. In fact, going to come under my variables plus variable button. This one is gonna be called B has a double jump question mark, this is going to be a boolean variable. However, I am going to put this into its own category. So come under category. Let's overwrite this default text to be skill dash, double jump like so I will actually leave a tool tip for this as well. And I'll have this a sets true when interacting with appropriate BP. So when we interact with the ah, the pedestal of the altar, if you will, that grants the double jump ability. This is gonna be set to true. So if I compile this again, I want this default value to be false. Okay? And you can see we've got a new skill category right down here for double jump. Okay, um, next one I would like to add is do, do, do, do do. Let's see. Ah, yes. This is gonna be a big one. new variable. Let's click this plus variable button. This one is going to be called double jump data hit Enter on this guy. And if we come over to the details panel, this variable type is gonna be that struck variable that we created earlier on. If I just do a search for its S t r underscore or just struck, let's come under due to do to do what did we call that strike? There it is. Str skill data. That's the one we're looking for. So it's under structure str skill date us If we set that and we compile this blueprint and we expand out this triangle right here, we can see we can input all this data for our double jump things such as the skill icon Input button, etcetera. In fact, we are going to populate this with some default values right now. So the title of this and again this is all going to be data that shows up when we first acquire the skill that little pop up screen that you saw that said like learned double jump and then it gave a description as to what it does and what button you need to push to actually use the skill, that kind of thing. So I'm gonna input the title here, as I learned. Double jump. Maybe after this video jump back into the old project just so you can see all this text coming to the screen. The description here, I'm gonna say the louse. Ah, second jump. I'll not capitalize. Jump, jump! While character is air born, I'm not sure if airborne is one or two words, but we'll say it's one word. Here are input button. So we've got some or triangles here to expand out our input button the image for this I am going to select Release my click, and I'm going to do a search for t underscore Button A. So I'm gonna slot that in right there. Write in a journal tile. These skill icon that I want to slot in for this. If I select hold down my left click and release here, I'm gonna be looking for icon underscore double jump So you could see all these assets that we imported earlier. They're coming into play now, so there's our skill icon. That's the icon that's actually going to appear on the pedestals well, but we will also see it in that little pop up image letting us know about the skill that we've acquired our skill image coming down here. But a change or skill image. This is kind of going to be the preview image as to what this skill does. I'm gonna left click hold left, click release. Here's where I'm gonna be slotting in our image. Underscore double jump right there. You can kind of see a little thumbnail images to what that image is gonna look like then, um, I am, you know, I mean, how may change up our image size here a little bit as well. I believe I had some specific settings for this, but if this is not looking quite right, this image size that's here by default, we may go back and change is later on. Okay, So far are skill. Border color. I'm gonna select. This will open up this little drop down triangle. Um, I have some tent settings in mind here, so I'm gonna come under skill border color intent, and I'm gonna change the our value here to be 0.15 the G value to be 0.15 in the B value to be zero. So we're gonna have some elements in that little pop up that appears telling us about our skill, and it's gonna have sort of this yellowish gold is border color on some of the elements that appear on the screen. The A value we can leave here as one, and then the skill font color. I'm gonna want to be similar. So what I'm gonna do here is I'm going to select this skill border color tint. I'm gonna select this little color bar right here, and I'm going to say this to our color picker up here. So our skill font color gonna expand that out, select this color bar right here. And there is my save color. So I can just slot that in there right away, too. This is not going to your magic seals, so I'm gonna leave that unchecked. And with that, let me just double check over everything in this particular variable here to make sure we are happy with everything. For starters, I should put this in the same category that I just created for our skilled double jumps. I'm gonna come under category and go skilled double jump. So that's gonna be contained in that category. And then let me just re expand out all these triangles. Ah, you know what? Our skill icon image size here that is going to be pretty large. If I do recall, I did set these image sizes appropriately for the screen. So I'm gonna set my ex value here under the tea icon. Double jump image, size four x 200 and why 200? We may go back and alter that, but I think that that is going to be what we desire there and then our skill image. Here I am gonna set our X to be a value of 5 16 and our why is going to be 3 63 Um, it's gonna shape it up. You can sort of see how it shaped it up just a tiny bit there, Um, in this smaller preview window. So go with that. For the time being. If we need to make some adjustments that later on, that is gonna be fine. So that's gonna do it all for those double jump variables. Couple more to create before we wrap this one up, going to come under the variable plus variable button and actually instead of instead of clicking on these in creating these from scratch, let's do this. Let's duplicate some of these ones that we have already created. We're gonna create a couple of variables for our back dash, so I'm gonna select RB has double jump variable selected right there. I'm going to do control plus W to duplicate it. And this one I'm gonna be calling B has back dash like so and I'm gonna want to change its categories. So not skilled double jump. I'm gonna create a new category called Skill Back Dash. Okay, that's pretty good. And then let's select our double jump data variable. Make sure it's yellow like that. Then do control plus W to duplicate that and we will call this back dash data. The only thing I want to do here is change out the category. I can select this drop down now to be skilled back Dash, and I'm gonna want to compile this because I'm gonna want to change out our default values here. They copied over the double jump value. So let's change those out right away and then call this video A rap? So what do you want to set onto this one? Well, let's see. I'm gonna change this to learn Back, Back, Dash, Let's make that learn back Dash with an exclamation point show because that's gonna make it a little bit more exciting, right? And for the description, we will say character, rapid back dashes away from danger. A nice ability. Also taken from Ah, Castle Vania. Symphony of the night. Gonna change the input button here. Not from the a button. We're going to do this with the T button. Why? That's the image that we're gonna associate with it anyways. Uh, the skill icon. We don't want the double jump icon I'm going to select here. Hold down my selection and I want the T icon back dash. Ah, for the image size for this, I'm going to change these skill icon once again to be Let's go 200 by 202 100 by 200. Skill image. We obviously do not want the double jump here. We want the T image back dash and the X value I have as 5 31 The Y value at 3 50 will leave it at that. The skill border color and the skill font color that can remain the same as well, because these are going to be considered movement skills. And this is just kind of the color that I am associating with the movement skills. So with that pending no errors that we made in setting these up. Let me see. I got a little exclamation point there. Let me see our double jump. We did do the exclamation point unlearned. Double jump. How consistent of me! All right with that, let's compile and save guys that is going to do it all for this video, we got some or variables to create, but those are upcoming soon see in the next video. 40. Skill Acquire - Skill Attributes #2: Welcome back, everyone In this video, we're going to continue populating our BP player with some more variables that are going to be needed for our skill acquisition blueprints that were going to be creating this one is going to be focused on our black magic skills. So we're going to create some boolean variables to tell our player whether or not they have certain black magic skills and then also some variables containing some data about those black magic skills. Now, I've got two versions of the unrelenting Open at the moment. Currently, I have our current project, which is listed right up here are Metro in Vain yous Skills project. And I'm just gonna minimize this one for the time being because I also have another version of this project open that I've created in preparation for this course. Now, eventually upcoming, we're going to be creating a black magic menu where a player gets to choose which black magic skill they want to have slotted in their hunt up here that they can use with their right trigger button. Now, this menu screen right here is just basically filled with a bunch of dummy data. I've got some magic meant for the title of that magical skill. Um, a numerical value here to represent how much man of that's going to cost etcetera. Now, in order to actually make this screen come to life, we have to bind this text right here. This number right here to some variables to dictate how much man of this particular magic skill is going to cost. And what is the name of that magic skill and what's the icon Associate ID with that magic skill. So the variables that we create in our BP player in this video are meant to lay the groundwork to help us out with screens like this. So with that all specified and understood, I'm gonna close out of this project to ensure that my frame right here while I'm recording stay is pretty high. And we're going to work in our BP players. So make sure you jump into this asset here is the pathway to find it and open it up. I want to take care of the fireball variables that are gonna be needed. So let's cheat a little bit and do kind of like we did in the previous video and select one of these existing Boolean variables Doesn't matter which one you select and I'm gonna hit control plus W to duplicate it. And I'm gonna rename this one. B has be magic. That's black Magic fireball question mark. And with that variable selected, I am going to give this a new category. So let's overwrite this category right here to be magic Black Dash Fireball and I should probably change a tool tip here. Let's see, it says said's true when interacting with appropriate BP, you know, we'll leave that That's fine. And if we compile this, you can see it's now in its own magic black fireball category. And I do want this to be false by default. Next one I'm gonna create I will also duplicate an existing variable here. I've got my back dash data it is of the str skill data. Variable time I'm gonna hit control plus w to duplicate this and I'm gonna call this fireball data and I can actually a drag and drop this. Move this down into my magic black categories. If I drag and drop it right down over this, be magic has fireball. You can see it moves it down here, and it actually gives it that category straight away, up here in the details panel. Now, I do want to keep my Boolean on top, so I'm just gonna reordered by dragging and dropping it on top of it just to kind of keep it nice and neat and organized. But that's a That's a handy little trick. So let's select our fireball data. And we need to compile this because there are some things that we need to change about this because it's currently got all of our data from our copied over back dash data. So let's expand out all these triangles right away so we can start to edit them appropriately. The title here is not going to be learned back, dash, but rather learned, actually, let's just call this. That's to learn. Fireball learned Fireball. Let me just double check my notes, and I will do Learn Fireball learned. Fireball, Exclamation point. The text description. I will change to be cast out a arranged fireball period. That's gonna be good there. Ah, the input button instead of the why. But I'm gonna swap this out for it is t underscore our trigger. That one right there. T underscore our trigger. Underscore 01 image sizes 10 24 by 10. 24. The skill icon. I'm gonna change that out to be the T icon. Fireball should look like that. Um, I am going to change the image size for that icon to be 200 by 200. Hopefully, I will not forget to change that for all every one of these. But, ah, when we go and test these later on, that will reveal itself. If I have forgotten to make that change on any of them skill image down here. I don't want that to be back. Dash yet. I'm gonna change that to be our fireball image. So, T image Fireball. Ah, the image size. Here I have. I've got a 64 by 64 which seems really small, by the way. But that's what I have my notes. So that's what I'm gonna leave it for Now we will see if we need to change that out later. The skill border color. Um I did save out a color earlier on that I liked so under the skill border color tent, I'm going to select this a little color bar and you remember this little kind of a ruinous purple color up there? That's the one I want to set. And if you're wondering what those RGB values are, there they are, right there they are, the G, the B. So that's my skill border color and my skill font color. I'm gonna set that to be the same and again here too. You can see those are G B colors and this is going to be a magic skill. So I am going to check this box right down here. Okay, so that's gonna do it for our fireball data. Ah, the next variable I want to create is gonna be a brand new one here, So I'm gonna click under variables plus variable, and this one is going to be called Fireball attributes Attributes like this and the data to are the, uh, rather the ah variable type that I want to change is to If I come back over into my main editor and I come under blueprints E Nunes, we got e b. But I'm not e Nunes Struck's rather is our str magic attributes. So if I double click on this, this is a variable type that I want to change it to. Str magic attributes because I want to get at these variables. So jumping back char BP player with our fireball attributes variable selected I'm gonna change that variable type to be I'll just do a search for magic attributes And there is str magic attributes Do you want to compile this so I can set in some values here? The name is going to be Fireball the icons late. I'm gonna expand out this triangle Put in an image here and the image I want to put in is t underscore. Fireball, that guy right there. Let's see the man accosts. We can fiddle with these values later on. I'm just gonna leave a small value of five. The damage that this is going to do, I'm gonna put 2 50 the damage type I'm going to change to be Ah, you know what I think I got are damaged type wrong here back in this the destruct variable . So let me go back into my struck magic attributes and I had this as a damage type. I'm gonna change. I'm gonna do a search for damage type and in here I'm gonna choose class reference. I had object reference. I'm gonna go class reference that I'm going to save this. And now if I jump back to my BP player and I compile once again you know, like I come on your damage type here I can now, so like this and I can choose my BP damage fire. So the mistake that I made from earlier on just cleaning that up here we are in our str magic attributes my bad. We want to change our damage type in the scr magic attributes to be damaged type, but it should be the class reference, not the object reference my bad on that one. So make sure you'd say that. Okay, Now you can see that this is not in the right category. So I'm just going to drag and drop this, um, above my fireball data to make sure that it's in my magic black fireball category. As you can see right here. And I actually want my data toe live right above it. Just because I'm 80 d like that. So now that looks all nice and organized. So there are fireball attributes that we want to live R B P player. Now we need to create all these same variables for our electro spark. Ah, black magic that we're gonna be able Teoh cast out. So we're gonna take a little bit of a shortcut here. I'm gonna actually duplicate all these three variables right here, Put them in their own categories and just swap out some of the information that is contained within them. So ah, select B has be magic Fireball. I'm going to hit control bus w on that and changes to be has be magic. The electro spark question mark. And I'm just gonna put this in a category of magic Black, The electro spark, like so Okay. And so with that done, gonna take my fireball data here. So, like that gonna control plus w to duplicate that And this is simply going to be renamed electro Spark Data like so I'm gonna move that down into here is well, so it's in my black Magic electro spark category. I will compile here because I'm gonna change out the data associated with this Some of this we can leave the same, but some of it I do need to change. So first thing we need to change is the text is going to be a learned electro spark. Exclamation points. Okay. And let's see what else we got going here. Let's Ah, we got title description is obviously not going to be cast out a range fireball. We will send set this up to be sends out an arc of electricity in all directions. An arc of electricity in all directions. I'm not really sure that makes sense, but we'll go with that. Ah, the input button is going to remain the same. The skill icon, however, is going to change you. T icon electro spark skill image is not going to remain. The fireball is going to be T image electro spark. I should go back to the skill icon. I don't want it to be 5 12 by 5 12 So make sure you change that to 202 100 again. That's for the skill icon here. The skill image. Um, let's see, I've got this set to be You know what? I'm not so sure about thes skill image sizes. Um, so I might change those later on. In fact, I'm pretty sure I need to change those out. But we'll deal with that. When? When we see those live in game. Otherwise, for the tints, the skill border color tint and the skill font color tint, we can leave those be as they were before, magic skill that can also remain being checked. Okay, I'm just gonna move this up into ah, actually gonna move this down rather into my list. I'm gonna take my B has be magic Electro spark. Move it above it just to have it nice and neatly organized. Okay, well, more to do here. I mean, it's like my fireball attributes, and I'm gonna duplicate this one by hitting control plus w. And I'm gonna be calling this electro spark attributes. Gonna move this down into position like so and with my electro sparks attributes variable selected. I'm going to compile that so I could change out some of these. Obviously, the name of this is not gonna be Fireball. I'm going to change that. To be electoral spark the icon. I'm gonna click this little drop down. That is not gonna be t underscore, Fireball. It is going to be well. Let's search for electro spark and it's gonna be t underscore Electro spark, like so And for the man accosts Ah, let's see what we want to do for this one. I haven't said to be 25 a little bit more than our fireball and the damage. I'm going to set it to be 100 the damage type is going to be be underscore damage lightning like So I believe that's all we want to do for the time being. Let's compile and save and call this video rap. We do have some or attributes I want to add for some black magic abilities that we're not actually gonna hook up in full. But to round out our menu screen, we're gonna want to add them. But guys, that will do it all for this video. We will see you in the next one 41. Skill Acquire - Skill Attributes #3: Welcome back, everyone in this video, we're going to pick right up where we left off in the last one, creating some or variables inside of our BP player here. So just to jump on offer moment and let you know where you are. In case you took a break between videos, we are within our content. Metroid, Vania Blueprints, characters folder Double click on your BP player. This is where we are creating variables. So we left off, creating some variables for our electoral spark skill that we're gonna be acquiring later on. Now we are going to be creating some variables for black magic bloodlust skill in a black magic Arctic blast skill that we're not actually going to hook up in full, but to round out our black magic selection menu to make that look all all full in nice. We're gonna add it for that as well. Just you can kind of get an idea as to what that would look like if you were to have a full fledged black magic selection menu. Okay, I'm going to take a shortcut like I did before by copying some existing variables down here , so I'm gonna select my B has be magic Electro sparked variable selected So it's yellow like this and then do control plus w to duplicate it and I'm gonna call This be has be magic and this is gonna be blood lust Question Mark and I do want to create a new category for this. So in the category section, I'm going to swap out magic black electro spark with blood lust, not lush lust like so. And you can see that category now exist down here. Uh, next variable I am going to copy is going to be our electro spark attributes. I'm going to select that do control plus W. And I accidentally deleted it out. So I'm just gonna call this blood lust attributes not good to delete the name out there could have saved myself sometime. And this with its elected, I could just change out the category up here to be magic black bloodlust, and you could see it's gonna throw it down there. Let's compile this so we can change out some of our variables. Here are bloodlust attributes, so let's change the name. For starters, from electro spark to blood lust, let's change the icon here from T Electoral Spark to let me just do a search for blood lust There's t underscore blood less that we imported earlier. Ah, the man accosts and damage and all this kind of stuff for this doesn't really matter cause we're not going to be hooking this up, but we get will make the mana cost be 50. Sure. The damage. 200. Why nots and the damage type. I'm just gonna set this to none, because again, this isn't inability, a skill that we're actually going to hook up. Okay, so that's gonna do it off for this one, although, because we're not actually going to be acquiring this ability, I'm gonna come over to my B has be magic bloodlust. And I'm gonna set this to true right away saying that Yes, we already got this. Ah, this skill. Okay, with that done, I am going to create a couple more variables here with my B has be magic blood less highlighted in yellow. Just like that. Gonna do control plus w. And this one is gonna be called B has be magic Arc Dick blasts like so and I'm gonna give us a new category for magic Black Arc, Tick blast. Okay. And then the next one I am going to duplicate is our blood less attributes. Make sure that is highlighted. Yellow do control plus w. And this one is going to be called, as you may have guessed Arc Dick Blast attributes. I'll take off the zero at the end of that and I will change a category for this to be into our magic black Arctic blast. It'll throw it down there. Let's compile. And now we can change out these values. So instead of blood less simply Arctic blast the icon, we can change out to be Arctic blast. There it is T underscore Arctic blasts And for the man accosts and all this stuff again, this doesn't really matter, but I'll change a man. It cost me 25 the damage will say 10 damage type. We will leave as none. All right, guys, we have all of our black magic skill variables created inside of our BP player. Let's compile and save one mawr time. Hopefully didn't make too many errors in that process. We still have some white magic variables to create in our BP player. So stay tuned. That is what is upcoming in the next video. See, there 42. Skill Acquire - Skill Attributes #4: Welcome back, everyone. In this video, our goal is to finish creating our skill related variables inside of our BP player here so that our player character knows what skills they have and what properties those particular skills have when it comes to our magic skills. Now this one is going to focus on our white magic skills. We did black magic skills. This one's gonna focus on white Magic skills and is gonna be much the same as we did in the previous two videos. So I'm gonna try to move a little bit faster in this one simply because it is very similar to what we just did. Make sure you've got your BP player open up here if you don't already. And just as a reminder, this is the pathway on how to find your BP player asset. If you don't already have it open, it's double click on it to open it up. And we can take a shortcut here by copying some existing variables. So the 1st 1 I'm going to duplicate is you can find any of these Boolean variables that we've already created. I'm gonna highlight RB has be magic Arctic blast and with it highlighted in yellow like that. I'm gonna hit control pills. W and I'm gonna call this one. B has w magic, as in white magic, Lens of truth, trust, truth like that, we are going to have a white magic ability called lens of truth. And I'm gonna hit enter right here and over in the details panel. I'm going to create a new category for this. This is going to be called Magic White under heard not underscore Dash lens of truth and hit. Enter there and you can see that that variable now exists in that category and by default. I do want this to be set to false and because I copied our Arctic blast, which I had said too true by default. Just know that I would go ahead and compile here and make sure that this is going to be set to false by default. We do not have the lens of truth by default. I am going to be creating a couple of new variables here for our white magic stuff that we did not do for our black magic. So I am going to duplicate RB has w magic lens of truth, so make sure that that is highlighted. Do control plus W. And this one is going to be called B B for Boolean is using lends question mark Um and we could change the tool tip here. In fact, I will cool wheel check to determine if skill can be activated more. It is activated and thus cannot. So are white. Magic skills are going to be a little bit different from our black magic in that when you activate your lens of truth skill, it's going to be activated for a certain amount of time. And once it's already being activated, we're going to say yes, he is use or she is using the lens. You can't activate it again when it's already activated. So that's what that one is going to be used for. V next variable I would like to create here is gonna be a brand new one. So let's click this plus a variable button over here and we're gonna call this one lens active time percentage. This is going to be a float variable. And I am gonna put this in the same category. So magic white lens of truth. And if I compile here. I'm gonna set Are active time percentage to be one point. Oh, so this is going to be something that's gonna be fed into, um, some of our widget blueprints to determine how long our lens is activated for So this one's gonna come into play later on as well. So building some some building blocks here for future scripting. Then I'm going to duplicate this ass or this variable right here. Selected control pills W. And this one is gonna be called lens Cool down time percentage. And I am going to compile this one and set to the default value for this to be zero category can remain the same there. Okay, then I can start to copy some of our existing variables up above. We are going to Cray one for lens attributes. So I'm gonna come up to my electro spark attributes that I've already created. You can see that that is my variable type right there. The str magic attributes the structure that we created earlier, and I'm gonna get control. Plus w on this and I would call this one simply lens attributes. I'm gonna change the category here to be magic white lens of truth. And then, with that guy selected, I'm gonna compile and then come over in the details panel and ah, change out some of these. So obviously the name of this is not going to be electro spark. It's going to be blends of truth. The icon slate is not going to be this electro spark I'm going to select here. And I'm just going to do a search for Lens. And it is t underscore lens of truth. Let me actually do search for t Underscore Lens lens of truth. There we go. That's guy you're looking for. And let's see, we've got this tints right here. We're gonna leave that be the man, Accost! We're going to change that to be 10 again. You can fiddle with that man. A caution. Make that be whatever you want to. In fact, I'm gonna No, leave it a 10. For now, Damage. This one is not gonna deal any damage. So we can zero that out. This is not gonna have a damaged type because this is not that type of ability. So we're going to change that to be none. OK, all finished with that one then we are going to create a duplicate of our electro sparked Dana. Right appear. So go ahead and select that guy. Make sure it's yellow like that. And then with it highlighted yellow, you can do control plus w to duplicate it. Or you can go this other out of right clicking and choosing duplicate. And I'm gonna call this, uh, what am I gonna call this lens lens? Underscore? Analysis Call. It lends attributes like, so that I call that other one lends attributes. I did. This one is gonna be called lens data. Sorry. I think I copied the wrong one here. So let me just delete this one out. This electro spark data, that's the one I want to duplicate. Not the attributes of already copied. The attributes. Let's copy or create a duplicate rather of our electro spark data. So I'm going to right click duplicate. That's where I'm getting all confused lens data like so. And I'm going to change the category here to be the white magic magic white lens of truth. Let's compile this guy right away so we can set some of the details for this. Let me just expand all these triangles right away, the title is going to be learned. Lens of truth. Exclamation point. The description. Let's change that to be reveals hidden passageways or platforms when activated. The input button is not going to be the right trigger. It is going to be the left trigger. So I'm just going to do a search for t underscore. L Trigger. That's the guy right there. Okay, The skill icon is not the icon for the electro spark, but the icon for the lens of truth. And I'm going to change the image size here to be 1 50 by 1 50 something smaller. So the skill icon image size 1 50 by 1 50 of skill image one. Obviously change that out. That is going to be T image lens of truth, these air, some screen shots that I took. We'll leave that image size as is for now, and turning over my page notes the tint for the skill border color. Um, I do have some hard value that I want to set in here, but I'm going to click in this little color bar to bring up my color picker, and then I'm gonna set my our value in here to be 0.7, my G value here to be 0.7 and my be value here to be once it's gonna be that shade of blue right here which now that I think about it, I think I've really got saved up here, which I do. So let me. Actually, we're gonna use this color right here. And those are these RGB values that we actually wants. If you haven't already saved that, you can drag and drop that up here too. You're saved colors. So that's what I want for my skill border color tint and then the skill font color. I'm going to want to be the same. So simply select this little color bar we can select are saved color up here, then click OK, and you could see we've got the same color set for the skill border color, tents and the skill font color. And this is going to be a magic skill, so make sure that you've got that selected as well. Now, with all these created, we essentially want to duplicate each and every one of these six variables and do the exact same for our white magic miss ability. So let's go ahead and do that. I'm going to select this first Boolean variable underneath Lens of truth. I'm going to right click. We will duplicate this, and I'm just simply going to change the name to be missed. Question. Mark, I am going to create a new category for our magic White Miss. So I'm going to overwrite our lens of truth year and put in mist. And you can see that that new category now exists right here. Um, R b is using lens, and it looks like I got a little space in between using and lens. I'm just going to eliminate that space just because I'm anal like that. And then I am going Teoh duplicate this one right click duplicate. This one is going to be called using Missed. I'll change the category here to be missed. A swell and I'll take my lens active time Gonna hit control plus w here and this is going to be missed. Active time, active time percentage. Rather Let's change that category to be are missed and our lens cool down time going Control w on that Change this to missed cool down time percentage and I'm gonna change the category for that guy over to Miss tas. Well, then our lens attributes gonna hit control pills. W there change this to missed attributes and I will change the category down to our magic white mist. And I'm just gonna copy our lens data. Next control plus W changes to missed data hit. Enter. Let's put that in our missed category. And now with that, I'm gonna compile and make sure that I've got the appropriate defaults for all these. So has magic missed? That is false. Is using this false missed active time is currently set to 1.0. Let me just double check my notes. That is going to be fine for that. The Miss Cool down time percentage currently set to zero. That is also fine. Now are missed attributes. We do want to do some changes. So let's change the name year to simply be missed. The icon slate is not going to be the t lens of truth, but rather t underscore. Missed. There we go. Let's change the mana cost for this to be something like 20 damage. No damage type. No miss data. Let's select that variable next, and we will expand out all these triangles right away. Gonna change this to be learned? Missed exclamation point. The description we're gonna change to be. What did I put for? The description transforms you into mist. Exclamation points. This allows you to pass through locked gates. Exclamation point! That's gonna be good for now. Ah, we're also going to be using the L Trigger button. But we do need to change out our skill icon here. We're going to change it to T icon. Missed skill. Image needs to be changed out to tea. Underscored image missed the one right below it. And our skill border color in skill font color is going to remain the same since it is also ah, that white magic sort of color that I'm going with. So that should do it all for this one. Let's go ahead and compile and save guys. We still have a couple of mawr sets of variables to create, but that'll do it all for this one. We will see you in the next one 43. Skill Acquire - Skill Attributes #5: All right. Welcome back, Everyone. In this video, we're going to finish off creating all of the white magic variables we need to have existing here in R B P Player Blueprint. We're running out of time in the last video. So making a separate video for this and I know this has been a lot of groundwork, but this is going to set us up real good for what's to come so we don't have to create all these variables down the road, so let's hop right to it. But if anyone took a break between videos here and don't remember how to get back to your BP player just going to jump back to the main level editor here, we're in the content. Metroid, Vania Blueprints, characters folder Double click on your B P player. So, like we did before, we're gonna take a shortcut here by copying some existing variables we're going to select. RB has w magic missed. And when it's selected and yellow like that, I'm gonna hit control plus W to duplicate it. This one is going to be called B has White Magic Shield. Now we are not We're not actually going to be hooking up this skill in the game. This is just to kind of help flesh out a white magic selection menu. We are going to be able to select between missed and lens of truth. And those are actual skills that we are going Teoh Gold go the full nine yards and actually implement them. The magic shield that we're going to have an icon for and presented on the white Magic selection screen that in our time slow white magic skill are not once I'm actually going to hook up because this course is going to be a massive to begin with, I had to cut some corners. Um, okay, so with this one created going to go into our category, we're going to create a new category for a magic white. And I'm just gonna call it shield. And you could see that category now taking place with that variable inside of it that I'm going to select our missed attributes. Gonna hit control plus W on this guy. And this one is simply going to be called shield attributes. Gonna move this into my new categories, selecting this little drop down list Magic White Shield and Let's compile this and make sure that our B has w magic shield. Uh, this one, because we copied it from our white magic. Missed It is false. By default, I am actually going to set this one to be true by default, because this is not, ah, skill that we're actually going to be obtaining. So we're just gonna say yes, he has it. So it does appear on our white magic selection screen right from the get go. Okay, um, I'm then going to select our shield attributes, and we do want to change out some stuff here. So the name of this is gonna be simply shield the icons late. We're going to change to be t underscore shield. There it is. The man a cost. Um, yeah. You can set whatever you want here. I'm gonna set it to be 10 and obviously this is not going to deal damage or anything like that. This is just for some visual flair. Okay, that's gonna be good for that. Let's select RB has w magic shield variable down here. We're gonna hit control plus W to duplicate that and this one is going to be changed to be has W magic Times. Slow question Mark and I am going to put this in a new category called White Magic Time slow. You can see that category now available down here. I am then going to select our shield attributes going to control plus W on this and changes to times. Hello attributes. Let's change the category to be magic White Time slope And then we will compile this and R B has w magic time slow. I do want that set to be true again. This is not a skill that we're actually going to hook up. And there are times slow attributes like that because we do want to make a few changes here . The name is gonna be changed to time slow, and the icon slate is going to be changed out too. T underscore time slow that icon right there, which looks a little pixelated, but that's all right. I'm gonna change. The mana costs to be 20 just to be different, and then the damage damage type can be, uh, zero and none, respectively. That is it. Ah, whole. A lot of work being done there, getting all of our skill attributes implemented inside of our BP player. Let's go ahead and compile and save one more time. Guys, that is going to do it all for this one. We will see you in the next one. 44. Skill Acquire - HUD Bindings #1: All right. Welcome back, everyone. So we spent the last few videos adding a whole lot of variables to R B P player in this one . Our goal is to bind some player variables to our various hut elements. Specifically, we're going to be binding some variables to our magic skill, Hud. And that's gonna be this part of our hut over here. We're gonna make it so that the appropriate images are going to show in these spots when we tell them to, as well as the appropriate man amounts depending on which ever white magic skill or black magic skill we have equipped. So I need to direct you to which assets we're gonna have. Open up here. Firstly, make sure you've got your W b P. Hud open. Here is the pathway for that. Make sure you got that guy open. That's where going to be doing the majority of our work. And I've also got our BP player open as well from the previous videos and the reason I have that one openness so that I could jump back to it and point out to which variables we want to talk to. So make sure you got both of those open, and I'm going to start off in my w b p underscore Hud. So the first thing I want to do is I want to create a function that is going to display the appropriate image here in our white Magic skill slot, depending on which everyone we have acquired. Right now, we've got this t magic empty this black circle right here, and we actually have a cool down timer that's overlapping it. That's why there's this faded white. But we need to make the appropriate image show up whether it be our missed or lens of truth image, etcetera. So what are we gonna do here? Well, with your W magic image, which it selected over here in the hierarchy, you can see it's highlighted here in green. W magic underscore image. Come over to the details panel and where it says appearance, brush. We want to bind this image to something. So let's click this bind button right here and create a binding, and when we do that's gonna jump us from our designer tab over to our graph tab. Now, right away, it's going to prompt us to create a function and I don't like this function name, so I'm gonna change that here in just a moment. But firstly, I'm going to drag this entry note over to let because I'm gonna be adding a whole bunch of script down here. I'm gonna break this wear right away by holding down Ault and left clicking. And so if I scroll up here in the my blueprints panel, I'm going to change out the name of this function that was just added here. Gonna hit F two over this, and I'm gonna change this to B yet. W magic image. Okay, so if you remember right in my BP player, I had various images I could display. If I click on my I'll say electro spark attributes. Not as a result. Sorry. The data. You can see that I've got a lot of not sorry. Let me check that again. Retract that once more. The electro spark attributes. You can see that I've gotten icon right here. Wouldn't this be a nice icon to display in our hut? I think so. Well, all we need to do is talk to this very bold that lives in our BP player. So how do we do this? Well, when I jump back over to my w b p underscore h hud, I'm going to right click here in our function that we're creating and I'm gonna say, Get player, character, We're gonna look for player, character and off of this. I'm gonna drag out aware, and we're going to cast two r b p player. That is a way that we can talk to R B P player Exactly. And out of this pin right here, this output pin. This is where we can extract some of those variables. So I'm gonna keep a wire extended from here, and I'm going to release my left click, and I'm gonna look for some of these variables, namely, I'm going to start off with looking for the lens attributes so we can get the lens attributes. So that's one of them. I want to extract, even extend another wire off of here, and I'm going to do a search for missed attributes. I want to get my missed attributes, moods, extend another wear, and I'm gonna get shield attributes. But I'm gonna extend another wire out of my as BP player and I'm gonna get time slow attributes because remember this variable in our BP player. If I select lens attributes, for example, it contains this slate image that we want to be able to slot into our W b P H hud right over there. Okay, so coming back to our graph and our function W magic hud. Okay, so we've got those four extracted there. So what I want to do here next? Well, there's one more variable created in R B P player that we haven't talked about it a little bit. It is this one right here, the w magic slotted variable that we added to a category called Player In Folks, you may remember we created some e Nunes. This one was called E Noon White Magic, and it allows us to define which white magic is slotted at a given moment, which we haven't hooked up the script for that yet, But we will. But it's a way for us to tell our player here Which white magic do you currently have slotted or rather equipped? Is it the lens of truth? The missed the shield of the time slow, and this is information we need to access over in R W B P Hut. You'll see why in just a moment here. So I'm gonna drag out of our cast to BP player here in the function that we're working on. And I'm going to do a search for slotted to get my w magic slotted. So I'm gonna bring this one way to the bottom here of our set up. So I've got all of our attributes of lens attribute Miss attributes shield time slow and then R w magic slotted. Now, what I'm gonna do offer this w magic slide is I'm going to drag a wire out of here, and I'm gonna do a search for something called a select node. It should have this sort of an icon right here. And I'm gonna bring this into the graft. And now the way this is gonna work is based on which white magic is slotted the time slow shield missed or lens of truth. We can select which one of those icons to return. So I'm gonna hook this all in right away by going times slow will actually can't hook it in straight away. I need to break these down a little bit further Now, if you remember right, our attributes here jumping back to our BP player, and I'll just look at our lens attributes. They consist of several other variables inside of them. Remember, this is a structure variable type in a structure. Variable type is a very hole that contains other variables in side of it. So I need to get inside of this variable to get the icon slate contained within it. So what I'm gonna do is jump back over to my BP, hud, in off of my time. Slow attributes. I'm gonna drag out aware, and I'm gonna type in break. And I'm looking to break our structure right here. And that's going to extract the information that I need. I could click this little drop down here to expose all the information contained inside of this structure, but I really Onley need this. I consulates, I'm gonna collapse. It's just to keep this a little bit smaller. Okay? So I can actually I could drag off of each of these and do that break as well. Or I could simply copy this note. I'm gonna hit control C and then I'm gonna control v it up here hook this in to our missed . Then I'm gonna hit control v up here to hook that in. And then what I want to do is I want to plug in the icon slate into the appropriate input on my select notes of time. So attributes I want to get the icons late from that and plug it into time slow. Likewise. I'm gonna take this shield attributes. I want to get the icon slate from that the mist. I should reorder this a little bit instead of lens on top just to keep consistent. I'm gonna put missed on top because in my select no, that's how it's all labeled. So I'm gonna go lens next lens attributes I consulate. Well, it didn't. Sorry, I did have that in the right or with two lens on top. Missed right here and then missed. I consulate right there. Now we also need to plug in something if we don't have any white magic slotted in here. So what I can do is I can right click on this none pin like so and I can promote to variable, which I'm going to do right now. And that's going to create a new variable over here. My my blueprints panel, and I am going to call this variable magic empty. So this is what image is going to appear if we don't have any white magic skill, slotted. And I do need to change the default image here and the image I'm gonna put in. Was it called image empty? I believe it was called on. What was that called? Let me just jump back to the designer tab T magic empty. That's what I'm looking for. So selecting my magic Empty variable t underscore magic empty. So that will be. That'll be the image that shows up if we have no white magic slotted in. Okay, Now I need to take the return value this and plug it into the return value of my function. Note here. And then I need to make sure that I actually hook in this execution wire from our BP player all the way over to our return note here. So let me just try to make this all a little bit more organized so you can see how this all shapes up. Try to get it all into one screen shots in case you're getting lost year, you could just pause a video and hopefully find your way. I mean, I had a reroute note right here by double clicking on this wire and that will allow me to sort of bend this wear around. So that is the function that we are binding to our white magic image right there. Okay, now I'm gonna compile and savior, and we can actually test this out if I jump in and play. So I jump in a play right now we wait for our huh? Do appear. You see, that I don't have any white magic in its image slotted in. But if I go into my BP player and I find this white magic slotted enumeration right here, let me just kind of hard set this. We're gonna set this through some of some script later, but instead of none, I'm going to change this to B. Let's change it. The lens of truth. Let's compile and say that. So now in my wbb. Hud, we're talking to our BP player here with our white magic image function. It's going to say, Hey, which white magic do you have? Slotted? And currently I have that slotted to lens of truth. So that is going to select our lens of truth icon slate because our w magic slotted variable was changed to lend of truth. Right? So now if I play and our HUD fly zone, you can now see, I've got the lens of truth image up there in the upper right hand corner. Now, of course, there's a little bit of a white filter over it. That's because it's ah, cool down, timer over. It will fix that up later on. But that is essentially how that works Before I forget anything. Let me go to my BP player here and I'm gonna change my w magic slotted back to you none, and then compile in safe. 45. Skill Acquire - HUD Bindings #2: next. We're going to do something really similar to the cool down meter, if you will. So I'm going to jump back over to my W b. P hud, and I'm going to jump back over to my designer tab. And over on the left hand side, we want to find r W magic cool down widget. And that's this sort of white filter that is overlaying our image. And there it is, our t underscore. Cool down now with this widget selected scroll on down until you find this progress percent and I don't know how my got set to something other than one point. Oh, but I'm going to set that back to one point. Oh, and I want to create a binding for this. I'm gonna just, like, binding, create binding that's gonna jump us on over to the graph tab, and this is gonna be very similar to what we just did. I'm going to start off by renaming our function here, hitting F two on this and I will call this yet w magic cool down. And here, too, I'm gonna want to, right click, get player character we're gonna cast to RB people Air BP player, You know, a hook in our execution wire through there and then out of our BP player. I need to extract some information I need to extract the lens. Cool down. Remember, I created jumping back over to my BP player. I created a lens cool down time percentage in a Miss school downtime percentage. And I probably should do the same for my shield in time. Slow as well. But let's just go with the lens and mispronounce It was my less lens cool down time percentage gonna drag off of here, and I'm gonna do missed cool down time percentage. Get them. And then I also need to drag out of here. And I also need to find out is w magic, which w magic is slotted. Let's get that just like we did before and then off of r w magic sauted drag out aware we're going to select bringing a select node. And now Ah, these are just a standalone float variable. I don't need to break this variable. It also Aiken, simply plug this into the mist input and I can plug this one straight into the lens. Cool down. And the nun I actually do want to be at zero, because if I jump back over to my designer to have here and you can see let me just kind of zoom up in right here. If I was to change the value of our progress bar here from 120 that white filter is not gonna be there. It also said it back to one for right now. But note that if nothing is slotted in for a white magic, it's actually going to read in the fear of the value of zero. I mean, I'm going to leave shield in time, slow as zero. For now. If we need to add those later, we will. But off of this, the return value. I could just plug this straight away into the return, value the note and then make sure that you hooked in your cast to BP player execution where as well. So that's what that function should look like for the time being. So let's compile and save. And right now I don't have any white magic slotted. So if I was to click play and you look up in the upper right hand corner of the screen, you can see that that white filter that was over my white Magic menu slot is no longer there because it's reading in the value of none because I don't have any white magic slaughtered at the moment. All right, so that's all well and good. Let's do one more quickly. Before we put a wrap on this video, I'm gonna jump back over to my designer tab, and the next thing I want to bind to a function is I'm going to select R W Magic Man accosts that number right there. And if we come over to the details panel where there is this text, we're going to bind a function to this. So click on this buying button create binding. It's gonna jump us on over to the graph tab. I'm gonna create some more separation year because we're gonna do something very similar to what we just did. Let's rename our function hit F two on this. Let's call it yet W Magic Mana cost. It will do much the same as you did before. Right Click Get player character. We're going to drag aware out and cast two R b P player hooking in our execution wire like so And we need to extract Let's extract the lens attributes because the attributes was where we restoring the man a data that I'm going toe also extract missed attributes. And then I'm going to extract shield attributes. And I'm also going to extract time, slow attributes. And then I also need to extract w magic slotted. We need to find out which white magic is slotted. That's the key there. Okay. And this is gonna be ordered much the same. So off r w magic slotted, drag out, aware we're gonna bring in another select node like so. But before we plug these into our select node, we need to break each of these variables themselves because remember this structure variable contains variables inside of it. So let's drag off of our time slow and let's break like so Now, in order to get to our actual man a values I do need to click this little drop down there is our man accosts and so I can plug in our man accosts here for our time slow at the very bottom here. And I'm just going to select this No, right here, and I'm going to hit control C to copy it and I'm gonna paste it for each one of my different attributes here breaking the mist attributes breaking the lens attributes. And then what I could Dio is hook in the man a cost for my shield right there. The man accosts of my missed right there. The man a cost of my lens of truth right there. And I'll leave none at a hard value of 00 And then I'm going to take this return value and plug it in to No, I'm actually not going to plug it straight in there. What I'm gonna do is off this. I'm going to drag out a wire and I'm going to round this value. We're going around the float value And then from here, I'm going to plug this straight in the return value to convert that now integer this is going to convert this in this rounding. We're going to convert a float into an integer, and then this is going to convert our imager into a text so it can read it to the screen. So let me try to fit this all on screen as well. Just going to drag our execution wire over to the return note, and it's pretty hard to fit this on the screen. But I'll do my best year in case you want a pause, a video and a little reroute note here. So hopefully that's a pretty good image as to what we have there. So compile and save. Let me just go back to my BP player here and I'm just gonna set my w magic slotted here for the time being. Just gonna change that over two. Missed. And now if I jump in and play in the upper right, you can see that I've got the mist image in there. It also shows the number 20 right below it to show that that cost 20 manna to use that skill. Of course, none of that functionalities hooked up yet, but we are getting somewhere. Okay with that, I'm gonna change us back to none. Before I forget, I'm gonna compile and save my BB player, and then I'm gonna jump into my w b p hud. Make sure that that is compiled and saved. If you have not already done so, guys, that is going to do it all for this video. We will see you in the next one 46. Skill Acquire - HUD Bindings #3: Welcome back, everyone in this video, we're going to continue right where we left off in last one. This one, we're going to be focusing on creating some bindings for our black magic skills. Um, and we're gonna be focusing right over here on the image first, and then we'll do the mana costs. So first things first come over into your hierarchy because it's a little bit easier to select the appropriate widget. We're gonna like this. Be magic, underscore image. This is gonna be the image that we want slotted into this particular piece of art and over in the details section under the appearance brush section. Here is where we want to click this bind button. And we want to create a brand new binding that's going to jump us on over to the designer tab and we're going to stretch this out just like we did before. And of course, I do want to give this function a brand spanking new name because that name is pretty hideous. So I'm gonna come over to the function section, hit F two, and I'm gonna call this get be magic for black Magic image. And this is gonna be very similar to what we just did. So we're gonna right click, get player character drag off of this in cast to BP player hooking in our execution wire like so. And now we need to extract some information from our BP player out of this as BP player pin first. When we're gonna look to extract is our fireball attributes Get fireball attributes going to drag off again. I'm gonna look for electro spark attributes. Drag off again. I will look for blood, lust, attributes and then drag off once again. And this one is going to be Arctic blast attributes. That's a word. I have a hard time saying that Arctic Arctic Platt blast you Not too good at that one, okay? And then we're gonna drag off one more time off of the SBP player, and we're gonna search for be magic, slotted, get be magic Slotted. So over in r b p player that we were in a little bit in the last video I showed you the under the player info we had a w magic slotted in new Marais Shin variable type. That was for E white magic enumeration. We also created this be magic. Slotted variable of the E B magic variable type this in new Marais Shin that we created earlier. We'll come back to this in just a little bit when we test this out. So jumping back to my WPP, Hud, I want a position this down below and then off of our be magic slotted. I'm gonna drag off of this and do a search for that select node. And now again, like before. I can't just plug these straight away into the select note because each of these particular variables contains variables inside of it. And I need to get to those. So I'm gonna drag off of my fireball attributes first. And I'm going to say break if I can spell break appropriately, break the structure. Magic attributes just f y I If you did not want to have an extra note out here, another way to get at these variables inside of here is you could right click on this pin right here, and you could split the struck pin. And it's going to give you the exact same information that this particular breaking of the magic attributes would give You can see name. I consulate, etcetera. However, I prefer usually keeping these combined and then breaking them off into a separate note like that give you the same information, though. So I'm just gonna right click on any of these pins back on my electric spark attributes. And I can re combine the struck pin so to two different ways to get this information. And the one I'm looking for is the icon Slate. I want toe extract from my fireball attributes. What is the icon slate associated with my fireball attributes? And I'm gonna plug this into the input of my select node. And just to drive home this point over here, my BP player under my fireball attributes variable. If I select that, that's the guy we're talking to. We are saying that Hey, this is the icon Slate. This is the image that we want to show over in the HUD when we have slotted in our fireball black magic skill. So with that, I'm going to simply select this node back here in r w B P H or W B P. Hon, you wanna control C control V and we can hook the rest of these up in a similar fashion control V for bloodlust icon Slate goes into the blood less input and then control V one more time to pace another. Copy that break note. Plug that into arctic blast. And I'm gonna try to move these all into position here so that eventually I can create it so you can pause a video if need be. You can see where all these wires are hooking in. I'll create a little reroute note here, okay? And we do need something to plug into. None. So if you'll remember earlier into the variable section we created this magic empty variable. I can simply drag and drop this onto the none. So that if we don't have any of those magics slotted as our black magic, we're gonna show this black circle. Okay, then I'm gonna think the return value here and plug it into the return value input of my return note, and then make sure you got this execution. Where in, like so So trying to bring this all interview here in case you want to pause the video. This is a set up we are going to have for binding an image to our black magic Hud. All right, let's jump back over to the designer view. We're not quite done yet. We do need to create a binding for our black magic man Us. You can select it here a little bit easier to select this guy from the viewer. Or you can come over into the hierarchy and select Be magic. Underscore Mana cost and right to the right of where the text is listed in the details panel. Select this buying button. We're going to create another binding here that is going to jump us on over to the graph tab and prompt us to make a new function. And you're getting used to this now, creating some space between these guys. Right? Let's rename this function right away. So gonna select that function Hit F two and we'll call this get be magic Mana costs. And just like we've been doing, I'm gonna right click, get player character. Which character specifically? Well, we can drag off of this return value in do our search for a BP player casting to the BP player, and then we can extract some information from our BP player and here we still want to drag out our fireball attributes. So I'm gonna drag off as BP and I'm gonna do a search for fireball attributes. And then I'm gonna drag off of here and do a search for electro spark attributes and another for blood lust attributes one more time, this one for Arctic blast attributes. And then one more time for our be magic slotted. And as we did before, I'm gonna drag off of my be magic slotted here bringing a select note. And how about I bring in a reroute node right away as well? Cause I know I'm gonna be needing that kind of snake around the rest of these nodes. And now I will start back at the top here with our fireball attributes. I'm gonna drag off of this, and it's a break. And I do need to click this little drop down arrow to get to the man accosts. So the mana cost from our fireball attributes is gonna plug straight into the fireball input of our select node. And that changes these all you'll notice. This is kind of a good concept to note here that when I plug in in this case, a float input into the select No note that they're all gray by default. The moment I plug in one of these, it says Okay, all right. You want to select some float values, do you? And it changes all the rest of these inputs to match. And it also changes the output, the return value to be afloat as well. So the moment you plug in a certain data type, it changes all the rest of the select note to be that same data type. Okay, with that, I'm going to select our break note right here. I'm gonna hit control C control V to paste this a few times and make sure I hook All these inappropriately are electro spark man accosts control V that again we will have our bloodlust man accosts and then control the again. Four are arctic Blast Mana cost. Let me just select this little reroute node kind of move this all into position. Make it nice and neat, and I will take the return value here. I am going to drag off of this since they around, we're going around that float into an integer and then I'm gonna take this integer and plug it right away into our return value to convert an integer into texts. And then I am going to make sure that I finish off this hook up like so. So let me try to fit this guy interview so you can see what that all looks like. All right. And we can actually test this out. So let me compile and save here. If I jump into my BP player and I select my be magic slotted variable, let me just change our be magic, slotted. Let's assume that I now have the fireball equipped. So now if I jump in and play over in the right corner, you can see that I've got my fireball image, and I've got that man accosts listed appropriately as well. Five. I must have left my white magic slotted image in there as well, because that is appearing. But you can see that that is working. So I'm gonna go back and change my be magic slotted to be none and my white magic slide. It is currently set the time. So I'm gonna sit that to none as well. All right, guys, with that, I'm going to compile and save over here. That is going to do it for our HUD bindings for the time being. Job well done. We will see you in the next video. 47. Skill Acquire - Base Class #1: hello and welcome again in this video. Our goal is to create a parent class that will contain all the common components are various skill pickups will need things like meshes, particle effects, etcetera. A few videos back. You saw me back in my older project that I created in preparation for making this course where my character was interacting with some of those altars out there in acquiring various skills. So what this video is gonna be all about is creating the general set up for that sort of alter that diets, if you will, that our character is going to interact with in order to then obtain a skill. So when this is gonna work is we're going to create a child class blueprint from our already existing BP Interactive Object base blueprint that we created earlier in this course. So just to direct you into the right spot, I am currently in my content. Metroid, Vania Blueprints, Actors folder. And I'm gonna double click on this BP interactive object base for the time being. And you can see that there wasn't too much in here. All we had was a volume a box trigger volume really box collider, if you will. We also created a few variables inside of here. They're gonna be common to a lot of the blueprints that we are going to be creating right now. So without further ado, I'm gonna jump back over to my editor and I'm going to right click on this BP Interactive object base. And when I right click on it at the very top of got the option to create a child blueprint class from this and I do want to select that and I'm gonna call this BP, underscore skill, underscore base. And if I double click on this guy to open it up right away, you may see that we've got this box collider out here that it actually did inherit. And it even says it is inherited from our BP interactive object based. There's an Interact collider and here on the child there it is a swell and even says it inherited. Also, something else to point out here is in the upper right. It says that our parent class is this BP interactive object based class. Now something else that you can see that was inherited from our interactive object based classify Come into the my blueprints panel. You see this little eye icon? And if you click this with a little drop down arrow next week, you can choose to show inherited variables. And what that does if I click this little drop down triangle next to the variables section here, you can see I've got this category called interactive object Variables. And if I click this drop down triangle, you can see these variables right here are the same ones inherited from my BP interactive object based class. So it's good to see that relationship. Okay, so I'm gonna exit out of my BP interactive object based class because I don't need it now. Gonna be focusing on our BP skill base for the time being. So what I want to do is I want to add some components to this particular blueprint that I'm gonna be common to. The different alters out there, the different diets is that we can interact with to acquire those skills. So I have a list of components here that I'm gonna be adding and then some some details to set for each of these. So let's do this one at a time. Now, This is gonna be a fairly lengthy process. I'm probably gonna have to break this out over the course of a couple of videos here, but we'll see how this goes. So I'm going to select our default seen route here. I've already got this Interact Interactive collider out here. I'm gonna add a component. This next one that we're gonna add is going to be a static mesh. And I'm going to simply call this diess like so and over in the details panel. We are going to set some parameters for this. First, I need to slot in a static meshed. Let's do a search for under the static mess static mesh section something called E N V Underscore Fire underscore its this melancholic troll free. All right. It's gonna be this giant podium looking thing, OK? And I do have some scale settings in mind for this, so I'm gonna unlock our scale so I can set these all independently scale is gonna be 0.6 in the X in the Why we're gonna set this to be 0.3 and in the Z I'm going to set it 2.8. Like so Okay, um, before I go any further. I should back up to our Interact Collider here. I did want to set something for that. Rather check it. So let me select our Interact Collider here and over in the details panel underneath the collision section. I just wanted to make sure that the Visibility Channel is set to block which it is. And this is all looking good. Yes. Custom query only world dynamic. That's all looking good. Okay, I just want to do a quick sanity check. Okay, So with that, we've got a diet in place. Let's select our default senior want once more. I'm gonna add another component. This one is going to be a static. Meshes well, and this one is going to be called still underscore mesh. And the details that I have set for this it's first, let's slot in a static mesh. So I'm gonna come under this little drop down, and I will do a search for R S m underscore. Move. Skill. We We created this static mesh earlier. A few videos ago. Now we just got to put it into position. So I'm going to set this the location for this to be 1 60 That's gonna move it up above the pedestal here. I'm gonna set the Z rotation is gonna be 90 that's gonna winging around here. I do have some materials that I want to set for this. So the element zero, I want to change this from whatever currently is here to gold. G o l d Straight up gold. It's a m gold, I believe. M underscore Metal Gold. Sorry about that. It's gonna have kind of this gold ish tint about it. Now I selected only Ah, that one side there, you know. Ah, better way to do this is I'm gonna jump over into our static mesh itself. So if I select this little browse to sm move Skilling accountant browser, I can select it right here, and I'm gonna double click on this mesh. And here in our static mesh editor. What I'm gonna do is I'm gonna change this to B golden here S s m are not s m m underscore . Middle If I can spell right metal, underscore gold and you could see how it changes the left side to gold. Now you notice that there are two materials here. What is this other one. Well, you may think it is the right one as well, and you would be correct. So let me just go ahead and change this to m underscore Metal gold. And now, if I save this, I can exit out of here, and I could see back in my BP skill base. My skill mesh is automatically gold on both sides. Now, I could have just changed the element one here to be gold as well. But I wanted to demonstrate that you can actually set the default materials for this in the static mesh editor itself. I was just going to change it here originally right away in this blueprint. But you can do it straight away from the static mesh editor itself. That's just a good to know. Okay, so with this particular components in place, I'm gonna attach a couple of components to this, so make sure your skill meshes selected. Gonna add a component. This 1st 1 is going to be a particle system right here, particle system, and you can see that it's attached when it's indented like this. And I'm gonna call this skill underscore V f X. And with that selected over in the details panel. I do have some properties I want to change for this. I gotta flip my page and notes around. And we created this particular particle system earlier, and it was called P underscore skills or skill. Rather, it's kind of this yellow looking swirly thing. So now you're starting to see some of these pieces come together that we created earlier. Now, I do want to set the Z location for this to be 40 going to set that up just a little bit higher. And that's all I want to set for that. Okay, so note this particle is attached to this mesh. Eventually, we're gonna make this mesh. Um, at least some of the measures Bob up and down a little bit. And when it does, that's gonna make this particle system a move along with it. Okay, I'm going to select my skill mesh again. I'm gonna add another component in this one that I want to attach to. It is going to be a point light, so note that it is attached to my skill mesh. That's why selected this first before I added my component. So with this point lead selected. I'm gonna hit F two on it and change the name over to skill. Underscore light over in the details panel. I'm going to set the intensity to be a lot lower. Said to be 25 the light color I'm gonna change to be from our color picker. We sort of had this, like, gold ish color is gonna change it to be something that matches that. No, actually, no, I'm not gonna do that. I'm gonna expand out this little triangle right here, and I'm going to reset this back to the default. Let me just hard set the our value to be 90 the G about value to be 90 and the b value to be zero. Um, the Attenuation radius at 1000 will say, Sure, that's gonna be all rights, and we will leave it as such. Now, I suppose you could play around with this intensity valley if you wanted to. Obviously, Ugo something. 5000. It's gonna be a little bit more intense than if you left it at, you know, 25. There's I don't know. What is that? Half a 1,000,000 5 million right there. So I'm just gonna go something small like 25. Something kind of subtle. And it's actually not gonna be that big of a difference. Okay, so with that and again, play around that variable, um, to your heart's content. All right. Next one I am going to set here. We need to select our default seen route first, because this one is not gonna be attached to our skill. Mesh. This one is going to be a static mesh. However, now you can see it's going to slot in my S m move. Skill because I currently have that selected in the content browser. That's gonna be fine. Go ahead and select that. Anyways, I'm gonna call this particulate er static mish candles underscore 01 and note that it is not attached to my skill mesh. So note the policeman of all these as we get working long so you don't make any mistakes here. So the static mesh that I want to set for this Is there something called candle stand candle stand. It's this one, right. Here s m underscore. Candle Stan 03 That guy, I do have some locational settings for this. The explication gonna go 1 95 for that in the material. I do have a material in mind for this. So select this and let's go for a candle. Underscore. Glowing. You got two different options here, and I'm not sure if I specified which one was with. So let me just select one of these. I selected the bottom one. We'll give it some time to kind of go in. I think these are pretty identical. So it looks it should look something like that. Okay. And if I'm just out of curiosity sake, I choose the other candle glowing. I wonder if that makes much of a difference. No, they look pretty much the same to me. So we'll go with that look right there. Okay. Anything else? I want to sit for this. Um, I am gonna set. I'm going to scroll down in the details panel are actually gonna set the visibility of this to be hidden for the time being, surrendering visible uncheck that. Okay, I think we'll add one more before we put the rap on this particular video with our candles . 01 static mesh selected over here in the components panel. Let's add another component. This one is going to be. What are we gonna set for this one? Got flip my page of notes because I don't remember everything. This is gonna be a particle system component, and we're gonna call this one candle light, underscore 01 And with that selected over in the details panel, we're going to slot in the particle known as P Underscore Light Corona. It's kind of this glow, right? And I'm gonna set the location for this to have a Z location of to 20 and I'm gonna set the scale. I'm gonna lock the scale here so I can set it uniformly. I'm gonna set it to 1.5 in the X. But why in the Z now, currently, you may be wondering what this glow is for if I temporarily go back to my candles 01 and under visibility make this scene. It's just gonna be a little glow coming off of our candle, like so. So I'm gonna hide this for our candles, a one for the time being, And then I'm gonna choose our candlelight, and I'm gonna make that hidden for the time being as well. And with that, I'm going to compile and save. And just call this rap on this video a little bit more to Dio. But that's going to do it on this video. Let's keep the momentum rolling on in the next one, we'll see you there. 48. Skill Acquire - Base Class #2: Welcome back, everyone, into this video we are going to continue right where we left off in the last video where we started to create our blueprint for our skill base. This is gonna be the altar or diess type of object that our character is going to interact with to collect some sort of skill. And where we left off in the last one is we added these candle static mesh and a candlelight particle system they're currently hidden. What I want to do is I want to add three more of these. And the way I can add these is I can select our candles. 01 which I currently have selected. I'm gonna hold down control in, select our candlelight particle system. Then I'm going to right click, and I'm going to copy these and then I'm gonna come under our default seen routes like that , and then I'm gonna right click and paste it, and I'm gonna pace it once I'm gonna pace it twice, and then I'm gonna pace it 1/3 time. So we should have four of these different candles. So first things first I need to rename the, so I'm gonna select this static mess right here and call this candles underscore to and underneath it it's gonna be candle light. Underscore or two. This one will be candles. Underscore 03 hitting F two candle light. Underscore. Old three have to. This is gonna be candles. Underscore all four, and this will be candle lights. Underscore zero. For now, I do want to change the details or some of these because the idea is I want to have some candles here, Here, here, in here. And then we're eventually going to be making some Children of this blueprint. And we can show or hide some of these candles as we see fit. If you remember from my previous play through in my previous project, I had different dioceses. Different alters, if you will, for different skills. I had this sort of a look going on right here for our double jump and back dash skills that I had a different look to the altar for our black magic skills. And then a different look for our altar, for our way magic skills. So I'm gonna select my candles 02 and let me set the location for this. The X location is going to be negative. 1 95 That should be all we need to change about that. It's already invisible, like I want it. Candlelight 02 The location is going to be negative. 2 20 And all the rest of these settings are absolutely fine. Candles. 03 I have, as a location negative 1 20 in the X and negative 100 in the Why probably would be good for me to turn these all visible in a moment here just so we can see where all these air place to make sure we didn't make any mistakes. I'm also gonna set the rotation for this one, the Z rotation to be negative 1 10 just to spin it around a little bit. And I changed the scale of this particular candles and candles. 03 Lock it all for the X, y and Z, and I'm gonna change it to 1.2, so it's gonna be a little bit larger, then the other candles, candlelight 03 The location there is going to be easy to 20. All the rest of this is looking fine. I believe I'll double check in this. I'm not so sure about that Z location right there. Let's go to candles. 04 I will turn on the visibility for all this in just a little bit, just to make sure that we did not make a mistake. I'm following my notes to the tea right now, but I am human. I do make some mistakes. So can also for the X location is gonna be 1 20 The Why location is gonna be negative. 100 z zero. The Z rotation, however, is gonna be negative. 1 60 And here too. I'm gonna lock the x y and Z scale, and I'm going to set the scale to be 1.2 all the way around. Candlelight. 04 for the location. I still have Z 2 20 rotation. I got Z of 50. I don't remember the rhyme or reason behind that, but I do. Ah scale 1.5 all the way around. Now I should let me select all of these. And I can select this candlelight 04 than come under it. Candles a one. Hold down the shift and click to select everything in between and I'm gonna turn them all to be visible So that is what we got for the time being. Candle lights. Let me actually make the candlelight ensure That's all visible to so candlelight. 04 And I can't even really see that, huh? Doesn't look very impressive if it is their candle. 83 t two. All right. Ah, it's way down there on the ground. That's probably why we can't see anything. Okay, Can't have candle 82 and three and four two is way off can relate to. So let me go ahead and fix that menopause video here. I'm gonna come back and fix it in just a moment and I'll let you know what that setting is , okay? And we are back. And I figured out the missing setting here for a candle light 02 should have a Z location of to 20. Also, just go ahead and double check that all your candle lights here, and I'm going to control select each of these in order to get them to show it's find. Have the rendering visible turned on. But the auto activate click that on that will make him appear. And that will show that, Chloe, But I'm gonna turn them off right now. So all the candle lights gonna not auto activate. And then for all the candles and gonna control select each of these, I am going to make these invisible for the time being. Okay, A few more components I want to add here. I'm going to select our default scenery because I want this next one to be attached to it. I'm gonna add another ecstatic mesh component, and I'm going to be calling this one. Candles underscore. Diess underscore one. And the first thing I want to do is slot in a static mesh and the static measures that I want to slide in his s m underscore Candles. Candle. Sorry. Underscored drips sm candle drips three. That guy right there. And the material for this we're gonna be looking for handle. Underscored glowing. And there's two of home for em. Candle glowing. I honestly don't know what the difference is. It may be a duplicated asset as well, but it should look like a glowing candle. Obviously, the location of this I'm going to set the X location to negative 90 The Why location to be 24 z location to be 95. The rotation for this. I'm going to set the Z rotation to be negative 90 and I am going to scale this up quite a bit. Make sure your skills locked that I'm gonna set it to three times its usual size. Something big like this. Now you may be saying, Hey ah, that's kind of weird that it's just floating off in midair like that. But with some of the Children blueprints that we will be creating from this, we're going to change the size of this altar. And some of these alters gonna be, like, a little bit wider, and these candles will be able to rest atop it For the time being, I am going to make this one invisible by un checking or yeah, checking this visible box to make it hidden. Like so, rendering visible Uncheck that. Okay. With that one added, I am going Teoh, right? Click and duplicate that one. This one is going to be called candles. Underscore diess underscore 02 This one is just gonna be on the other side over here, So I do need to change up some locational settings instead of negative 90. We're gonna be looking at positive 90? Why? Let's set this to be 20. Moved a little bit, Z, we're going to go 100 for this. The rotation. I rotated this one too. Negative. 40. We leave the scale at three times its usual size of static mesh and material are going to be the same as well. And if you do want to see what this one looks like, you can check this visible box just to see what that's going to look like. So I'm gonna leave it in visible for now. Okay? Next component I want to add here. I'm going to select my default seen route. I'm gonna add another component. This one I'm gonna do a search for and the one I'm going to be searching for is called a decal. And with this decals selected, you could see your pedestal here change quite dramatically. Don't get freaked out. I'm just going to call this decal underscore. Skill can. First things first. Here. I'm going to change up the location. The sea location for this is gonna be 1 20 The Why rotation is going to be negative. 90 the scale for this. I want to make sure that This is all a lock that I'm going to set it to be 0.1 so much, much smaller. So I have this this little green box, this green box area, whatever it intersects with it is going to project a decal. I think of it is like, ah, projecting an image onto a surface. That's the idea. Here, decal material. I am going to leave this blank for now with some of the Children that we create from this blueprint. We will populate it. But that is going to be fine. Decal size here. I do want to actually change up some of these parameters. I could use the scale settings as well, but I decided to go with the teach detail size here. I'm going to do to 56 the X the why is going to be 300 in the Z? Sorry, I have this all locked. I need to unlock this and I'm going to do to 56 in the X to 56. The why is going to be 300 the Z I want to be 400 so you can see it's pretty much going to take up the entire space of this diess. Okay? And that is looking pretty good. Don't think we are missing anything there. One Mawr components adhere. Select your default. Seen route. We're going to click on add component. We're gonna add a static mesh component, and this one will be called simply Statue. So with that selected, I do have some locational settings. But why is gonna be negative? 1 20? The Z is going to be negative. 10. The scale. I'm going to unlock and set the X scale to be one point to the Y scales going to say at one and the Z is going to be 0.9 now, I am gonna put a static mesh in here by default. Just you could see what it looks like. Eventually we're going to show or hide a statue, depending on which type of pedestal this is. Which skill we're gonna be offering up your static measure that I'm going to slot in is going to be sm underscores statue. 01 This tall king looking guy. Okay. So again, he's not gonna be present for all of our skill blueprints. But I'm going to scroll down the details panel for right now. The rendering of visible check box. I am going to uncheck that for the time being. Okay, so that's looking pretty good. We got all of our components in place. Next, I am going to add some variables to this. And these were gonna be variables that I want to be alive or present. I should say in all of the child blueprints that we create from this, So I'm gonna come under my variables section right here. Click plus variable. This 1st 1 I'm gonna call s f X Underscore. Skill acquired. This is going to be a sound effect that we play when we acquire a skill. I'm gonna change the variable type here to be a sound base sound base object. So it should look like that. That bluish kind of looking thing I will compile here right away and for our skill acquired . I do have. If I just type in S f X, there is S f x underscore. Skill acquired. We imported that one earlier, so that one is all good to go. Let's add another variable here. This one is gonna be called skill. Begin a position. We're going to change this variable time. I'm gonna click right down next to my text here to bring up a little sub menu. This is going to be a vector variable vector for locational data. And I am going to check this little closed eye icon right here. And that is that does the exact same thing is checking this instance edible box. We want to make sure that that is instance creditable. Also, I am going to duplicate this particular vector variable by selecting it, making sure that it is highlighted. Yellow doing control plus W. And I'm gonna call this skill end position. We're gonna make use of these in just a moment here so you can see what these are. Four S o r. Begin position. I actually do want to show the three d widget as well. This is going to expose a little purple diamond shaped thing. Once we place this skill blueprint in the level, you'll see that. And then for our skill end position, I'm going to click on this and we will show the three d widget for that as well. Let's compile this. I do have some default positions here that I want a place skill begin position. I'm going to set the Z values to be 1 50 in the skill end position. I'm going to set the Z value to be 200. Essentially, what I'm gonna be using these variables for is I want this static mesh in this case, a book to just kind of Bob up and down a little bit to help make it stand out and let the user know that that is a thing that they're going to be, quote unquote acquiring to gain a skill. Okay, so with that, let's go ahead and compile and save. 49. Skill Acquire - Base Class #3: what I want to do next year is jump on over to this blueprints event graph. Click this tab right here, and you could see some nodes existing out here. Some event knows event begin play is linked to our parent. Begin play. Because this blueprint is a child of this parent class right here that we created that leave. We can get rid of these other two events out here just to clean things up a little bit. Do not get rid of this event. Begin play, parent, begin play. Okay? First thing I want to do is I want to add something called A timeline in a timeline allows you to modify the value of a variable over time, which is something I want to do. I want to modify the position of this little book looking assets over time. So gonna jump back over to my event graph, get a right click in the graph, and I am going to add a timeline and I'm gonna call this skill mesh movements. Then I'm going to double click on this timeline. This is a special note that allows us to add some information quote unquote inside of the node, So I'm gonna double click on it. And inside of here, I want to add a track. I'm gonna add a float track, and I'm gonna call this movements. So this is going to allow me to change a float variable over time. In this case, we're gonna use it to modify the Z position. So I'm going to right click in this graph here, and I'm gonna add a key. This first key I'm gonna set to be zero for time, zero for value. I'm then going to add a second key. I'm just right clicking and moving this down a little bit. Adding a second key, this next one I'm gonna set to a time of 2.5 seconds and a value of one and then I'm going . Teoh, hold down, right click and move. Or to the right here a little bit Gonna add 1/3 key. The time for this is going to be five seconds and the value is going to be zero now. I can't see all of my different key frames here in view. So what you can do handy trick is I'm just gonna click on the graph here and type the F key , and that's gonna frame up all of my key frames here. Something I want to do with all these points is I want a left click and drag around all of them. It's a little tricky like this, and you'll know their highlighted when they're all yellow. And then you can right click on any one of them and said their key interpolation to auto. So you have this sort of a graph right here. This is going to create a smooth transition. So essentially what we're gonna be doing is over the course of five seconds, that book, looking messy you saw before is going to rise up, then float down and then we're gonna loop this. Then we're going to start at the beginning again. Rise up, Go down, rise up, go down, etcetera. Now, in order to loop this, I need to check this loop box at the very top. And also, I want to set this timeline to auto play. So make sure you have the east to check boxes checked as well. Length of five over here is perfect. Just what we want. I'm gonna exit out of this timeline and come back to our event graph. Okay with that. Just gonna create a little bit more space here. I'm gonna bring in. Our two variables are to vector variable skill. Begin the position and skill end position and place them about, like so in our graph. And what we want to do is we want Teoh, right? Click and type in alert. Vector. And I wanna plug begin position into a end position into B and our movements is going to plug into this Alfa valued. I'll explain what all this is doing after I get this all hooked up. Okay, then we gotta think, What is the thing that we want to move up and down between our begin position and are in position? Well, I want to use this skill mess. You remember? That is the book looking thing right there. So I'm gonna drag a reference to our skill mesh right into our event graph and then off of this. I'm going to drag off in typing set relative location. And as our timeline updates, I want to change the relative location of our skill mesh, like so relative to the default seen route here. I'm gonna take the return value for my lor put vector and plug that as theme new location over here. So let's back this up a little bit now If I hover over my lurk vector note here, it gives you a little tool tip and it says it linearly interpolated, that is, It goes between point A and B based on R l fa input Alfa is 100% a when Alfa is zero in 100% B when Alfa as one. So to translate this, when the Alfa value being plugged in from our movement is a value of zero. Like the very beginning of our timeline, our value is zero. Then we're going to be at skill begin position the A value as our Alfa value moves to one like we are doing here in our timeline right up here at the midway point, the value of this movement track is one this float variable. When that is one, we are going to be 100% or all the way to our skill end position so you can see that this is essentially going to be ping ponging back and forth between our begin position and our end position driven by our movement going from 0 to 1. Okay, hopefully that made some sense. There. I'm gonna left click and drag out a marquee selection. Tap that Seiki, and I'm gonna call this. Ah, skill mesh movements like so. And what we can do here is compile and save and let me drag this into the level. I'm gonna go back to my test map here and find our blueprints. Actors, Skill base. Pop this on out here. Now, I know that this is a little bit ugly because we don't have a detail out there yet. Gonna bring it up from the air and hit the n key. Let's bring this interview like so. And if I do Ulta Plus s cult key Plus s sorry. Hopeless s or rather let me just jump in and play. That'll be easier to see. There. You can see the book actually going up, in, down. That's pretty cool, right? And you can see that that one particle effect is attached to the book. So it's floating right along with it. Um, other things to note here. You can see, as I selected my blueprint here, I've got this skill, end position and skill begin position that were equal. Teoh are still begin Position and skill end position variables here. Right. So I said I wanted to make thes instance edible, which means back here in our level, we can see our skill begin position and our skill end position. Values are default values. What these little triangles allow you to do these three D widgets. They allow you to modify it these end positions or beginning positions in a very visual way . So let me take this end position here. And just to demonstrate this, I'm gonna drag this all the way on up like so. And you could see it updated my skill and position over here to be to 76. Let's go crazy. Just going away high like that. And now, if I was to play, you can see how it is going between the skill begin position and end position. Right? So I want to sit that back because I didn't really like it. We're going quite that high. I think I had it to 200 something like that. So I just know that now you've got an easy way to modify how much your skill measures going to Bob up and down as it animates. All right, guys, that is going to do it all for creating this base class here. We're gonna be creating some Children of this in just a moment. That's gonna do it all for this video. We will see you win the next one. 50. Skill Acquire - Child Blueprint: Welcome back, everyone. In the last video, we finished creating our BP skill base. This is the thing. The alter, the diess, if you will, that are player is eventually going to interact with in order to collect some skill. Now all of our actual skill diess is that our player will interact with will be Children from this one. And in this video we're going to create our first child of this. We only need one for now. We will create the others later on. But just one is gonna be good enough to get us started Before we start, I wanted to make mention of something that I noticed in the last video that I wanted to clear up any confusion if somebody noticed this and that is vice elect my diess Here. You see this big yellow square here in the background? You may have noticed this if you've selected this in your own project that you're working alongside me with now what this is is we have translucency turned on. So that's why you're seeing this big yellow box back here. If you don't like seeing that you can come underneath your view Ports show button and you can turn off translucency right here. So that way you will no longer see that big yellow Square. Although it will still be outlined like this Now, something else I want to make mention off is if I I'm just gonna turn it back on for the time being. If I click right above my diets right here, save right about here, you'll notice that I will have selected my diet anyways because I have translucency selection turned on That's different from this actual showing of the translation loosened. See if I I hit the t a t as in Thomas Key, I cantata Gle translucent selections. I'm just gonna hit the tiki. And now, if I click off and try to click back on somewhere about here, you'll notice that I'd haven't actually selected my diets yet because I've turned off translucency selection. However, if I hit the tiki again and I click right about here, you will see that I will have selected my diet. So that's one thing to keep in mind when you're dealing with any sort of particles and whatnot, things that have translucency with them. You've got a show flag for translucency and then you've got translucent selection that you could toggle on and off with the Tiki. I tend to like the toggle ng of the translucent selection turned off because I don't like selecting it like that. So just f y I something to keep in mind? All right, back on topic here, we were going to be creating a child blueprint of our BP skill base. So make sure you go ahead and find it within this directory and all we got to do to create a child class blueprint from this is right click on it. And at the very top, we are going to create a child blueprint class. This one we will call a BP skill double jump. Okay. And then I'm gonna open it up, cause there's just a few things that I wanna edit about it. I'm gonna doctor across the top. One thing I do want to edit is well, and you could see in my view port. I cannot see anything right now. If you ever come across this and you're wondering Hey, where is everything? You can select anything here over in the components panel. I've selected my diets and you can see it's somewhere over there. Now, if I just select somewhere my view port like this and I'm just right miles clicking and then tap the f key, they'll just frame me right up on it. Okay, So one thing I want to change is I want to change the d cow. That is, um, projected onto this diet. I'm gonna come under my decal skill, and you can see all these properties are inherited from the parent and I want to slot in a decal material. And the one I want to slot in is we have one called double jump decal, double jump, and you could see how it now projects that onto the diets. That's pretty cool. Ah, the next thing I want to change here is I actually do want to show some of those candles kind of in the background, and I think it's candle one and candle to. So I'm gonna select both of those. Not can. I want a candle to one in three. Where is it to? In four. Let's go. Four in three, maybe see what one disease are. So with those two selected candles three and four, I'm going to come under rendering and click visible. And those are the ones I do want. So three and four, that's going to be pretty good. And then I want to select the candlelight for three and control, select the candlelight for four. And I'm going to set the auto activation for those little glows on the candles to be active as well. Okay, that's not all I want to do here. I do want you actually edit one variable here. And the variable I want to change is inherited under our interactive object variables. You should have a category in here called interactive object variables. Now, this inherits all the way back to our interactive object based that we created way earlier . We created some interactive object variables in here on one of the things that we created a variable for was his interact message. So closing this out for interact message. Now, this is the message that I want to appear on the screen when we can interact with his diets and collect the skill. So I'm gonna change my interact message here to be you learn skill. I could change us to be learned double jump or something. like that, but I'm gonna keep it rather generic. Guys. That's literally all I wanted to do in this one. So if I compile and save, you can see now that I have a BP skill double jump, I can drag this out into the level. I'm gonna tap the n key to snap that down to the ground. And you know what? I am not going to show that translucency. I think it's rather annoying. So that's what it looks like. Pretty sweet looking. All right, guys, that is going to do it all for this one. We've created a child class blueprint. We will see you win the next video. 51. Skill Acquire - Notify Creation: Hello and welcome back in this video, we're going to be creating a widget blueprint that will notify our player what skill they've acquired and how they can use that skill. So we left off in the last video where we created our double jump diess, if you will. The thing that we're going to interact with. I have temporarily moved on over to my previous project that I created in preparation for this course, and I want to show you what we're gonna be creating in this one. So I'm just going to jump in and play, and we already have something that looks like this, and you can see that learn skill message that's going to pop up now. What we're gonna be starting to create in this one because of the much bigger process, is this. We need to create a widget blueprint that notifies the user what skill they learned. It's gonna have a little image here, kind of give them a button indicator as to how they can use that skill. A description, etcetera. So this is a little bit of an undertaking here. We're just going to be laying down the groundwork. So just wanted to show you what we were going to actually be creating over the course of the next few videos. So I'm gonna exit out of this project now in return back to the project where we all left in, and I need to come under my Metroid Vania Widgets folder. And once you are in this directory, we want to right click, and we're going to come under user interface widget blueprint, and we are going to create a new widget blueprint called W B P. Underscore skill acquired. Now, we're not gonna be creating a unique widget blueprint for each in every single one of these diocese each in one of these each and every one of these skills that we collect. The idea here is that we're only gonna create one of these widget blueprints, and then we can feed in the proper variables to populate that widget blueprint with the proper information. Okay, that's all we need to do for this one. For now, I'm just gonna click, save all right here and save my test map as well. Is that widget blueprint? Ah, the only other thing I want to do in this video is I want to create a duplicate of an existing material. And this material that I'm looking for is in your Starter Content Materials folder. We're gonna be borrowing from a material here. There's something called polished marble M rock polished marble marble polish. That's the guy we're looking for right there. And what I want to do is right Click on this and we're going to duplicate this asset. And I'm gonna call this m underscore Skill acquired. Underscore Title. We're gonna be using this particular material, Um, as the banner part, if you will, in our widget blueprint now, it just seemingly disappeared right now because I'm filtering by the word polished. I'm just going to uncheck that right here and there is my m a skill acquired title. So what I want to do is come under my Metro Vania Material section. Find that over on the left hand side and I am going to select this material from my content started Content materials Fuller. I'm gonna left click and drag it right into my Metroid Vania Materials folder. It's gonna say, Do you want to copy it here? Move it here. I'm going to say move it here. And now if I click in this folder, you can see there is my M skill acquired title material. Now, I do want to do a little bit of work inside of here, so I'm gonna double click on it. And it's rather giants, but I don't really need to change much about this at all. All I need to change is I need to select my M Skill acquired title over here and over in the left hand side. There is something for material domain. It's currently set to surface. I need to change is to be a user interface. And in doing so, I will then made it so that I can actually use this material in a widget blueprint. Now you can see it. Looks like I broke a lot of stuff over on the right hand side of the screen. No big whoop there. I'm just gonna take my m skill acquired Master Node here. I'm gonna move this up into position over here near this multiply note, and I'm gonna take the output of this multiply note and plug it into our final color. And the last thing I'm gonna dio I don't actually need this constant down here, so I'm just gonna delete that out. The last thing I'm gonna do is where there is this 0.7. What's known as a constant the node plugged into our multiply note. I'm going to change the value of that to be one 0.5. That's just gonna punch it up a little bit. Just give it a little bit more visual flair. So that's all I want to do in this one. Just go ahead and compile and save. And we've now laid some of the groundwork for R. W B P skill acquired widget blueprint that we are going to be doing a whole lot of work in over the next few videos. So guys, that will do it all for this one. Let's keep the momentum rolling. Rolling. We will see win the next one 52. Skill Acquire - Notify Layout #1: Welcome back, everyone In the last video I showed you what our skill acquired widget blueprint is ultimately going to look like in this video. We're going to start laying out that widget blueprint and this is gonna entail a good bit of work. So it's gonna be spread across a series of videos without further ado. Let's get started. Come under your content. Metroid Vania Widgets folder Double click on your W B P Skill acquired that we just created in the last video. I'm going to try to move a little bit faster in these videos to ensure that we get everything in in time. I'm limited to 20 minutes in each of these videos, so hopefully with the benefit of pause, you can keep up. Okay, so the first widget I want to add to our canvas panel here is known is a blur widget back around blur. So I'm gonna do a search for that up in the palate panel blur. I'm gonna drag and drop it on top of my canvas panel, and I will try to set details for these right away as soon as I add them, and I'm gonna be referencing my notes a lot. So hopefully I don't make any errors along the way. The anchor point for this one, I'm gonna set to be the full screen. That guy right down there. So anchors full screen. And let's see the blur. Strength is the other property I want to change with. This is ah, blur. Strength of five. A little bit of blur there. One thing I did forget after I set my anger to full screen is I need to make sure that my offsets are 000 across the board. The left, the top, the right in the bottom. So you see this green outline all the way around? Okay, the next, which it I want to add here is in overlay. So I'm going to do a search for overlay up in my palette panel. There is an overlay I'm gonna drag and drop this on top of the canvas panel is well, and I'm gonna actually give this one and name. So let's call it skill Underscore overlay like so. And the anchor I want to set for this one is going to be this top bar. That's what I call it. Anyways, the top bar One the position why I am going to set to be 30. The offset right is going to be zero the size. Why? I'm gonna set to be 3 50 This is going to be kind of that giant banner across the top. Ah, behavior. I want to set the visibility here to be visible and just double checking my notes here. That looks like all we've got set for that one. Okay. Now, with our overlay here, I want to add a whole bunch of things on top of this. As you can see, when I hover over this overlay in the palate panel, it says allows widgets to be stacked on top of each other, which is what we want to be doing here. We want to be stacking a few things. So next thing I want to add over here in our skill overlay is going to be an image. So I'm just gonna x out here, drag and drop image right on top of our skill overlay that I'm going to select it and I'm gonna rename it right away. And this one's gonna be called skill. Underscore b g underscore image and flip it over my page notes Gotta do some flipping back and forth year, the horizontal alignment and the vertical. Lyman, I'm going to set these to be full, and you can see what that does. It just kind of fills up this entire space. Ah, let's see the brush gonna set this, uh, it's gonna be set to nothing, rather the tent. I'm going to set the tent to be our of 0.15 g of 0.15 b of zero. And the A is going to be one. So it's gonna be this gold color by default. But actually, we're going to be driving this color through some variables later on. So this is just gonna be our default color, Okay? Next one I want to add is going to be another image. I'm gonna drag and drop this on top of our skill overlay as well, and I'm going to select it, and I'm going to rename it over in the details panel right away. This one will be called skill Underscore F G for foreground, underscore image. And the details I have set for this are is follows padding. I do want to set some padding settings for these. Ah, but before I do that, I'm going to set my horizontal and vertical line is to be full like this. So with my horizontal vertical alignment set to full, I'm then going to set the top padding to be 15 and watch what happens when I do this Said it's a 15. It just kind of nudges it down a little bit here. So I'm gonna have this gold sort of in the background. And then this foreground one is going to be kind of offset from the top 15 and from the bottom 15 like so now for the appearance, the brush image. What I want to slide in here is I'm gonna search for it. It's gonna be m underscore Skill acquired title. You remember that material that we created in the last video? Well, here is where we slot it in. Now the image size you can see, it looks a little bit stretched here. I'm gonna start the image size to be 500 in the X and 500 in the why it's gonna make it look a little bit nicer once we get get in the game. Ah, and also to make this look a little bit nicer. I need to set the tiling here not to be no tile, but I want to set this to both. And now you can see it just kind of makes it look a little bit more detailed. So that's what that did. The combination of the image size with our tiling set to both. Okay, so that's looking pretty good. Next widget, I want to add is going to be what is known as a horizontal box. I'm gonna search for that in the palate panel. I'm just going to search for box and should have search for horizontal. But there is the horizontal box. I'm going to drag and drop this on top of our skill overlay as well. And it's very important that you get these various widgets, um, attached to the appropriate thing. So make sure that you're seeing all these indentations as such. So you saw me dragon drop that on top of the skill overlay. So this horizontal box I'm going to populate something's within it. But firstly, gonna select my horizontal box and worry about its details panels. So the first thing I'm gonna do is I'm going to rename this skill underscore learned underscore box. I'm going to set the horizontal alignment and the vertical alignment to be both the middle . And right now it's just that green dot out there, that's all we see. And I'm gonna set the top patting here to be 20 and again, This isn't going to look like much just yet. We gotta add some things inside of it to really make this shine. So let's do that next. The next thing I'm gonna be looking for is an image widget, and I'm going to drag and drop this one inside of our horizontal box And make sure you see that yellow outline over the horizontal box and it's indented like so I'm gonna select it, and I'm gonna rename this one hitting F to No, actually, I'm not gonna rename it right here. I'll rename it over in the details panel. I would call this skill Underscore, icon underscore left. Okay. And I'm gonna set the horizontal alignment. Vertical Lyman actual. Leave them just as they are right here. I will slot in an image and this is going to be our icon. Double jump icon underscore Double jump that guy right there. Okay. And I do want to set the image size here to be 200 by 200 not 200 in 2200 by 200. Like so? So it's about that size, and I am going to come under the patting click this little drop down triangle, and I'm gonna set the bottom padding to be 50. A lot of trial and error went into getting all these settings. So that's why I am referencing my notes heavily here. This is not something that you could just come up with off the top of your head. So this icon is eventually going to be determined by a variable as well. This is just going to be our default, Icahn. But that's gonna be bound to a variable eventually as well. Okay, next widget. I want to add in the side of our horizontal box is going to be a text widget now, not a text box, but he text widgets a dragon. Drop that on top of our skill learned box like this, and notice all the indentations and go ahead and select it. And this one we are going to rename skill underscore learned underscore text. And this text is eventually going to be driven by a variable is well, but I am just going to put in some default text year. I'll just put in learn double jump. Since that's gonna be the 1st 1 we're gonna learn, Learn double jump exclamation points. I mean, is that the horizontal alignment to full? But the vertical alignment is gonna be set to the middle here. Ah, the left padding is going to be 80. The right padding is going to be 40 and I do have some appearance setting, so I'm gonna set the default. Our value here, under color, capacity to be 0.15 G value will be 0.15 The B value will be zero in the A value will be one this to will be bound to a variable in time. The font family here. I'm gonna change this to B Gothic letters. I'm gonna set the font size here to be 92 something nice and big. Of course, it doesn't stand out quite enough, so I'm gonna come under the outline settings outline size. I'm gonna set that to be six, and I do like my outline. Color is black, but I also want to add some shadow settings as well. So shadow offset. I'm gonna set to be five in five. And I need to make my shadow color here having a value of one. The Alfa values got to be one in order to actually see that shadow. So again, the text here is going to be bound to a variable. And the text color here is going to be bound to invariable in time as well again, This is just gonna be our defaults. Okay, Next thing I need to add inside of our horizontal box is going to be another image. So I'm gonna drag and drop an image. You know what? It actually, instead of doing that, let me take a little shortcut here. I'm going to right click on our skill icon right here. Skill icon left. Let's duplicate that. Okay. And you can see it already. Pop Pop, sit down here and it's almost in the position and everything set like we wanted to. So with that selected, I'm gonna call this skill underscore icon, underscore rights. And let's double check all the details here. The bottom has an offset of 50 horizontal vertical alignment are as such. And you know what? That is going to be fine in dandy. But again, this icon will be determined by a variable as well. So we've got this little bit done with our skill acquired widget blueprint. Let's go ahead and compile and save plenty more work to be done. But we're off to a good start. We will see you guys in the next video. 53. Skill Acquire - Notify Layout #2: Hello and welcome back, Everyone in this video, we're going to continue on with our skill acquire. Notify layout. If you don't remember where we are, come to your content browser were within the content Metro and Vania Widgets folder and we're within WPP. Skill acquired. Okay, So where we left off in the last video was kind of creating this banner of the widget That's going to tell you what skill you've learned. And this one we're going to add some widgets for an image here, Um, some space down here showing which button you need to press in order to use that particular skill and then a description of the skill. So let's hop right to it. And again, I'm going to try to move a little bit faster in this one to make sure that I get this video recorded within the time constraints allowed to me. Okay, so the first thing I want to do is I want to add a border widget right up here. It says a border is a container widget that contains one child widget. We wanted to be an image going within it, and this is just going to add Ah, border around the image. So I'm gonna drag and drop this on top of our canvas panel right here, and I'm going to select it. Hit F two on it right away to name it. And I'm gonna call this screen shot underscore border. And with that selected, I'm going to set some details for it right away. So I'm gonna be doing some flipping back and forth in my page of notes. The particular anchor point that I want for this is going to be this middle box anchor point. And then with that, I'm going to set the position X is going to be zero. The position why is going to be 1 70 Size X is going to be 1000 size. Why is going to be 600? And you may say, Hey, this is a little bit off the screen boundaries here. Well, that's because I need to set the alignment here. I'm going to set the alignment to be 0.5 in the X and 0.5 in the wise. Let's get a frame it up. Kind of in the middle there. Okay, um, with that, I'm also going to come down into the appearance section, Not the content section, the appearance and under the tent section I'm gonna set the tent for this to be kind of this gold ish color. This will be driven by a variable later on. But for now, you could just said it to that gold color just to have some sort of artistic look in there . Okay, with that set, next thing we want to do is add an image widget inside or attached to Rather are screenshot board. So I'm gonna drag and drop this on top of our screenshot border right away. I'm going to select it Hit F two to rename it. This will be called screenshot Underscore image. And with that particular widget selected, come over to the details panel. I'm going to come under the padding section up here, and I'm gonna set padding for 10 in the left, the top, the right in the bottom, and you can see what that did by zoom up a little bit. It added a little padding between our image and our border that this is attached to kind of get the idea here. Um, let's slot in an image right away. I will since our our default here says learn, double jump. Let's find the double jump image. Toe left, click released, left, click. And I'm going to do a search for t underscore image underscore double jump. And it's gonna slot it right in there like that. Okay, so that's looking kind of snazzy. All right, Next, we're going to add and overlay widgets. So this is not in the common section. I'm going to search for it. And over late in the panel section, we're gonna drag and drop this on top of the canvas panel is well, so make sure canvas panel is surrounded in yellow. Select this and I'm going to call this right away, hitting f two on it. We're gonna call this in, put underscore over. Lay like that. Okay, with that selected, I'm going to come over to the details panel, and I'm going to set the anchor point for this to be this lower middle box, that one right there. So that little flower icon should now be it the middle bottom of your screen. And I do have some positional settings, so position X is going to be zero position. Why is going to be negative. 75 size X is gonna be 1 50 size. Why is going to be 100? And I'm just gonna zoom up in on this little bit the alignments. I am also going to set to be halfway in the excess 0.5 and then halfway into the why I 0.5 . So this is gonna be kind of overlapping the bottom of our image here. Okay, with that, all added next, I'm going to exit out of this search. I'm going to add an image. Select your image, dragon. Drop it on top of our overlay. Now, overlays are good because you can stack things on top of each other. So I'm going to stack Ah, couple images on top of each other, This 1st 1 that I just added. I'm gonna hit f two on and I'm gonna call it input underscore image. Good to have a good naming convention for these flipping over my page of newts. Um and what I'm gonna do is I'm gonna slot in a brush right away in an image under the neath the appearance brush section And if I left click than released left, click right over the search bar. I'm gonna do t underscore. Scroll. This is a texture that we imported earlier, and it comes into play right now. Okay, that's looking pretty good. Right where we want it. Okay, Next, I am going to add another image. Dragon dropped this on top of the input overlay. I'm going to select it. Hit F two. This one is going to be called input underscore button underscore image. And with that selected gonna come over to the details panel. And first thing I want to do is I want to set my horizontal and vertical alignment here. You could see where this image is kind of located in this upper left corner. I want to set the horizontal alignment to be Phil and the vertical alignment to be Phil. And I know you're going to see this big white box overlapping that. But don't worry, it's gonna get fixed up in just a moment here. As we slot in an image under appearance brush, I'm gonna left click released, left, click. And what I'm looking for is button underscore A. We should be looking for this t underscore button underscore. A. Okay, now that size is a little bit large. Um, I want to say we want Teoh. Probably skill that down. Yeah. So what we could do here is we could come underneath our image size here. And you know that this that actually, we can't set it here. My bad. We need to undergo the scale section. So come underneath the render Transform scale section to make this button smaller. And I'm going to set the X scale here to be 0.5. Like so and the UAE scale, I'm gonna set to be 0.7. So we have one image are button image on top of this scroll. So that's what overlays air good for. It's kind of a container box that allows you just stack various widgets on top of one another. Okay, a few more to go here before we call this one a rap, We're gonna add another overlay. So I'm going to do a search for in Full Relais. We're gonna drag and drop this on top of the canvas panel once again get a selected. I'm gonna hit f two on this and I will call this description underscore overlay like so and flip. Been over my page of notes here. Where do I want to anchor this to? Ah, let me just see. I did not actually put where did I want to anchor this to my bad on that one. So let's see. Oh, there it it is. Okay, I missed. Saw my page of notes. The anchor point that we want to set for a description overlay missed. Read my page of notes. We're gonna attach this to the center middle box. That one right there. The position x I'm gonna set to 505 position. Why is gonna be negative. 1 10 The size X is going to be 4 50 and the size why is gonna be a 4 90 So it's gonna be along the right hand side over here again. A lot of tweaking and tuning to get this. Just like I wanted. Okay. With this overlay, I'm gonna attach an image inside of your next. I'm gonna exit out my search bar up here, gonna drag and drop an image on top of our description overlay. Make sure that that yellow highlight is around it entirely. Like so gonna select it. Hit f two. This is going to be called description underscore image. And with that selected, of course, we have some details associated with this. We, firstly want to set in our image on her appearance brush gonna left click release left click and r T Underscore Scroll is the one we want to put in here. Fills up that whole right hand side. They're kind and nice and big. That's looking pretty good, just like I want it. Next, we're gonna add one more widget to this. So I am going to find a text widget, not a text box. Not a rich text box, just a text widget. And we're gonna drag and drop this on top of our description overlay. Gonna select it Hit f two. And this is gonna be called D scrip Shin underscore a text. And with that selected, I'm gonna come under the padding section and under the padding left, I'm going to set that to 65. Patting top is going to be 7 70 Patting right is gonna be 60. Patting bottom is going to be 30. My text is a little hard to read here, but we'll get to that in just a moment. It's white on kind of this white background. I'm gonna set my horizontal alignment here. To be center aligned in my vertical alignment along the top is just fine like that. Now for the text. We're gonna bind this to some variables later on. But I'm just gonna type in some text so that we can see something allows player to jump again in mid dash air, period. Okay. And then down in the appearance section, I'm gonna set the color here to be black. That's rgb of zeros across the board. I am going to set my font family to be I'm gonna go the numbers font on this instead of the letter spot. I'm gonna go numbers font. I'm gonna set this size here to be 20 if I scroll down a little bit. Some other things that I want to set is my justification. I want to be in the middle and next You also see, I've got my overlapping text year, so I got a scroll down a little bit and there is an option for auto wrap text. Let's go ahead and check that and that will fit it right on top of our parchment here. So that's looking pretty good guys. We added an image. We had a little button as well, as well as a description. Let's compile and say that we're not quite finished with this yet, but we have some good momentum and let's keep it rolling in the next one, we will see you in the next video. 54. Skill Acquire - Notify Layout #3: Welcome back, everyone In this video, we are going to continue and actually finish off our skill acquired notify layout. So let's jump right to it. If you forgot where we are. We are within our content. Metroid Vania Widgets folder Open up. W B P. Underscore Skill acquired. That is the guy that we're working within. We're gonna take a little bit of a short cut here, Teoh. Lessen the amount of work in the last video. We created this description overlay right here, and it had an image and some text on it. I am going to copy this. I'm gonna right click on it. I mean, I'm gonna say copy. Then I'm gonna come over my canvas panel and I'm going to right click, and I am going to paste it. Okay, now it's not in the position I want yet I want to move it over here, but firstly, I'm going to name this attributes. Underscore overlay. Okay, so this is gonna go on the left hand side of the screen is gonna let us know. Like how much mana is this going to take for us to use now are double jump is not going to require any manner. But there are some skills that will require Mana. So that's going to be ah, populating the left side of the screen here. So with that one in place, I just need to set some more details. I need to set the position X is going to be negative. 9 55 like so the position why is going to be negative 1 10 the size X and the size Why is already fine? So you can see that this is in the part of the screen that we want it. Okay, Next, I am going to come under the other image that was attached to this copied overlay, and I'm gonna rename this right away. This is gonna be called attributes. Underscore image. Um, and it's already the image that we wanted this scroll. So on Li, the only thing I need to do there's just rename it just for clarity's sake. Now this text block, um, let's see, we do want some text, but before I add this text block, I'm actually gonna delete this one out of here because I want to add a horizontal box with which to contain some text. So I'm gonna do a search up here in my palette panel for a box. Actually, let me look for horizontal that will narrow down our choices right away and then a left click and drag this on top off our attributes. Overlay right here. I'm gonna drag this down a little bit to give us some more space. We can see what we're doing here. Over in our hierarchy. Select that horizontal box hit F two. We will call this attributes Underscore Box. Okay, let me see if there's anything special we need to set about this. There is some stuff that I want to make sure that we have set. Um, come under the padding section for your attributes box. The left padding. We're gonna set to be 50. Top padding is gonna be 70. Right? Padding will be 50 and the bottom padding will be 50 horizontal. Lyman here, we're gonna have right in the middle. You can see this green box right here. That's our horizontal box that we're modifying here and are vertical line. But we're going to set this to fill. Okay, Now we need to put some things inside of our horizontal box. So the first thing I'm gonna add inside of here is a text widget again, not a text box. Not rich text. Just text drag and drop it on top of your attributes box. Like so. And I am gonna hit have to on this and name it Mana cost, like so and just living over my page and notes. Okay, meta cost and coming over to my details panel, I am going to set the text to actually read Mana cost. Like so. Obviously it's in white text right now. So how about we fix that up? Next? Let's change our color here to be black again. That is an RGB value of zero across the board. Let's change our font family. Let's change this to the Gothic numbers font. I'm going to set the size of this fonts to be 35 kind of big, little bigger than it was before, and that's gonna be pretty good. Okay, next, I'm gonna add another text widget inside of our attributes box. So drag and drop one of these on top of the attributes box. I'm gonna hit f two on this guy to rename it, and I'm gonna call this manna on your score value. Okay, with that selected, come under the details. Horizontal Lyman here is going to be this center alignments. The vertical alignment can stay full. The text right here. We can put a value of 99. This is just a placeholder value. Ah, variable is going to be bound to this eventually. But 99 is gonna be fine for now. And you know what I did, I add I did, didn't I? I ended a horizontal box when actually I wanted a vertical box. Bad me. So what can I do to change this? Well, I can come under attributes box, and I didn't want it to be horizontal. I wanted it to be vertical. I can right click, and I can do a replace with vertical box. That's kind of a handy feature. So it's kind of good that I made this mistake so I can show you how you can fix this. So let's changes to a vertical box. That's all well and good. It collapsed the things attached to it. Let me just rename this to what did I rename this? I call this attributes. Blocks attributes Underscore Box. My bad sorry about that, guys. Amanda Value. Let's click back on that because we were fixing up some things with that. So you can see now this man values underneath the title of Mana cost, like I wanted with this guy selected. I want to set the horizontal alignment to be middle again. This text is 99 is going to be changed out eventually being bound to a variable. Let's change the color end Opacity here to be straight black. Once again, I'm gonna change the font family to the number Gothic numbers. The size is going to be Let's go 30. Something like that and that's looking pretty swell. Okay, next, we're almost finished up here, guys. Just a little bit more to go. I want to add a back button over here so we can essentially clicking on something so we can exit out of the screen after we, uh, gather this skill and added to our players repertoire. So let's find in overlay in the palate panel. I'm gonna dragon drop this on top of our canvas panel. Like so Gonna select it. Hit f two and I'm gonna call this back under scorer overlay. Okay with that selected. I'm gonna choose my anchor points. The anchor point is going to be this lower right box that's gonna move this little flower icon the anchor point to the lower right portion of the screen. And with that, I need to set our position X and why and all that good stuff. Position X is gonna be 1 50 position. Why is gonna be negative? 75 you can see it's going to start off the edge of the screen here. Size X is gonna be to 15 and size. Why is size wise going to be 80 like that? And our alignment here for the exit and why are gonna be 0.5 and 0.5? So the idea here is his back button is going to eventually slide in from this side of the screen. Okay, with that, I need to attach an image to this overlay. So, underneath the palate panel, let's find an image drag and drop it on top of our back overlay. Make sure that this yellow outline is around it. Otherwise you're gonna insert it between these two items, so you want to attach it to your overly like that Hey, enough to this will be called back underscore image. And with that selected flipping over my page Oh, notes gonna come underneath the details panel of the left padding. I want to set to be 25 the right padding. I'm gonna set to be 10 or sorry. Left padding 25 top padding of 10. Right padding of 1 65 bottom padding of 10 horizontal alignment. I want to be to the left. And the vertical alignment is going to be this middle option right here. And the reason I have these particular settings is because I am going to have a back button right here. So underneath appearance of brush image left, click released, left, click. And I'm gonna be looking for my button Underscore. Be that guy right there. Okay, Next thing I want to do here is due to do, Do, do do do at a Ah ha! OK, I want to add another button. And by this I mean the actual button widget, not this type of image of a button. So find in the palate panel a button widget. We're gonna drag and drop this on top of our back overlay like So I'm going to select it. Hit F two and I'm gonna call this back underscore button and are patting for this is going to be zeros across the board. But our horizontal alignment is going to be fill in. Our vertical alignment is going to be filled is well, foot being over my page notes underneath the appearance section Don't worry about everything We just covered up our But don't worry about that for now. Under the appearance style section. Now we've got to set our normal style first. So come under this normal click this little drop down triangle I'm gonna left click released left click underneath the search area and I'm going to do a search for menu underscore button, not men Button menu Underscore button. We imported this texture earlier. Now you can see there's our button appearing again. Never fear, right? Okay. And we want to draw this as not a box. Let's draw this as an image, and that's just going to shape it up a little bit nicer. This is kind of hard to see some zooming in on up on this. It's kind of like a fancy ah, black, flowery sort of pattern Gothic pattern around the perimeter here, which is what I want. Okay, so that's for our normal style. Now, I need to do this for the hovered style as well. So click this little drop down triangle under hovered and the image here we're gonna left click release, and I'm going to do search for menu underscore Button. I got a slot that in there as well here too. We want to draw this as an image. So that's normal. Hovered. We also want to do that for pressed. So come underneath the pressed option. Click this little drop down triangle for the image. We want to do the same and search for menu underscore button. And here, too, under press draw as said this to be image. So it doesn't matter if the button just appears normally or were hovering our mouths over it, or we are actually pressing or clicking on the button. It's still gonna have that same look about it. Okay, with that, I also want to come under the press sound and slot in a press sound. Right here, click this little drop down triangle and underneath e search bar. Let's do a search for a click on button. There's a click on button cue that I thought sounded pretty good. And then for the hovered sound, click this little drop down triangle. And for this, I thought there was one called Floating you. I open to that one right there floating you. I open to these air all included, uh, by default. This one is in some of the engine files. The click on button is also in the engine files to you could see the path where this exists in the content browser by just hovering over it like that. Okay, we are not quite finished yet because I need to attach something to this particular button . So I'm gonna come under the palate. We're going to select some the text widget, and I'm gonna drag and drop this on top of the back button so we can add some text to this button. Okay. Almost finished up here. Let's select this text and just hit F two on this so that we can rename it and I'm gonna call this back underscore text. Like so. And with that selected over in the details panel, let's come under our padding section right here. I'm gonna click this little drop down triangle the left padding. I'm gonna set to be 10. And for the top padding the right padding and the bottom padding. I'm Eunice it that to be zero. So 10 000 is gonna be my padding values. I am going to set the text here to simply read okay? In capital letters like so. And I do want to customize the appearance a little bit. The color end opacity. I'm gonna set this to be a actually. Let's go. Our value of one G value of one b value of zero. So it's gonna be straight yellow. Ah, family. I'm gonna leave this as the Roboto Font family. I don't want this to be hard to read. Anything fancy size. I'm gonna set this to be 30 that I'm going to scroll down a little bit more outlined settings. I do want to set some outline settings for this outline size of four, and you can see we've got a black stroke around that now. Okay, That is looking pretty good again. I know this button is technically off the screen right now, but don't worry, We will make that animate onto the screen at the appropriate time. With that, let's compile and save. And we have finished our skill acquired. Notify layout job. Well done. Keep the momentum ruling. We will see you in the next video. 55. Skill Acquire - Notify Bindings #1: Welcome back, everyone. In the last video, we finished off creating the layout for our skill acquired widget blueprint. Here in this video, we're going to make it so that this skill acquired blueprint is variable. By that, I mean, we don't always have to have the text that says learned double jump. We can make this variable. We can change it out, depending on what skill we acquire. Likewise, we can change out the image, the description, the man A cost, this little icon, all these kinds of things, depending on which skill we actually acquired. Now, if you didn't take a break between videos, just want to point you to how to get back into this widget blueprint. We are within our content. Metroid, Vania Blueprints. Sorry, Not blueprints, Widgets, folder content. Metro Vania Widgets Fuller. And there is our W B. P. Skill acquired. So what do we want to do here? Well, we want to start off by swapping out our title text here, so make sure you've got this skill learned text widget over in your hierarchy selected, or you can simply select it here in your viewer. And with that selected over in the details panel Where there is this learned double jump text, we're going to create a binding for this, and I'm gonna click this little drop down right here and click this plus create binding that's gonna jump us out of the designer tab and over into the graph tab. And right away, I'm gonna create some space between our entry node and our return note over here because we're gonna be in putting some nodes right in here. We're gonna hold down the bulky and left click to break this wire right away. And then I'm gonna come over into the my blueprints panel, and I am going to give this a better name. So I'm going to select this function that we just are prompted to create hit F two, and I'm gonna call this get title. Okay, so what I want to do here is I want to reach on over to my BP player blueprint, and the reason I want to do that is because my player blueprint is one storing information about our various skills. And if you don't remember, I'm just gonna hop on over there quickly. So jumping back over to the main level editor here. Blueprints, characters. There's my BP player and we had all of these variables. And just to show you an example of one in our skill double jump section of variables, I have one called double jump data. This is a structure variable that we created here in our player. And if I come over to the right hand side, there is that struck variable that we created. This particular variable is holding data pertaining to the title of this skill. The input button, the skill icon, the skill image, the skill, border color, all this kind of information right here we are essentially going to plug into our W b P skill acquired so that all this information is appropriate depending on what skills were acquiring. So jumping back over to our graph to have over here. The first thing I want to do is I want a right click and get player character. Then I will drag aware out of the return here, and I will cast two R b P player cast your BP player. And now, once you've done this, then you can drag out if you're as BP player and start to access some of those variables. So I'm gonna drag out of here, and the 1st 1 I'm going to do a search for is double jump, and right away it's narrowing it down. I want to get my double jump data. Okay. Now, the cool thing about this is that you can then drag out of here and say we want to break this. Remember, this is a structure variable instruct variable contains more variables inside of it. So, breaking this, we can see we've got our title right there. You can also click this drop down to expose all the other variables that this contains. But the titles one that we're concerned with right now I'm just going to collapse is back on up. And I want to do this for all of my different skills I can acquire. So I'm gonna drag off again out of my as BP player, and I'm going to do a search for back dash. Get back, Dash that I'm gonna drag off again and I'm gonna do search for fireball. Get fireball data drug off again. Let's do electro spark. We're gonna get electric spark data. And again, all these are existing within our BP player gonna drag off again, Do a search for lens of truth yet lends lends data. Get lens Date is what we call that one and one more time Gonna drag off, get missed. Missed data. Now there is another structure, one for attributes. But we're just concerned about the data for now. And then I'm gonna drag off one more time because I need to find out what skill we acquired . So we had another one called get skill acquired. And this was an e newme variable right here in our BP player. And I don't even remember where I put that one. It's under the player info category. Skill acquired. So again, once we acquire a skill, we're going to be able to say which skill that we acquired by setting this variable. That's to come yet? Not quite yet. Okay, So jumping back to R. W B p skill acquired what I want to do with this skill acquired E. Newman's. I want to drag out a wire and bring in a select note. It's now the way this works is depending on which skill we eventually script to tell her player that we have acquired we can then tell our function here which title? It should output. By that, I mean, if it was the double jump skill that we acquired, I could say, Hey, what is the title of our double jump skill and plug this into the select node like so? And then this plugs into our return value like this. Make sure you hook in this execution wire is Well, okay, so now I just need to copy and paste this for all these different nose right here. So I'm gonna take this breaking of the skill data gonna control C control V for back Dash. We're gonna take the back dash data title, plug it into their control. V again are fireball data. We're gonna find the title contained within their I'm going to kind of keep moving this select no down gonna control the Our electoral spark title is gonna be plugged into their our lens data title and then lastly are missed data title and you can bring in Ah, Rino route node for this skill acquired. If all these lines kind of crossing over is really going to drive you nuts, I just double clicked on the line to bring in one of those and for our none, I could just simply leave this blank. That should be fine. And again, just to drive home this point back in our BP player, you saw that my double jump data had the title learned double jump. If we were to look at something like our fireball are Fireball Data has learned Fireball, etcetera. So again, all this information is contained R B P player, and we're just reaching over into our BP player from our WPP Skill acquired to bind this particular text to this function. And this function is one that's going to set the appropriate tax depending on which skill we acquire. Okay, so you're kind of getting the idea how that works now. So I'm going to try to move a little bit faster through the rest of these because this is just a little time consuming, consuming and laborious in nature. The next thing I want to be able to modify is the color and opacity of our skill learned texture. You can see that we kind of have this gold color. I want to change out this color depending on if this is a movement skill like double jump or back dash versus if it's a black magic or a white magic skill. So right here with this skill learned text widget selected over in the details panel under color and opacity, we are going to create a binding for this. Create binding. Let's create some space between the two of these right away, and I'm going Teoh put F two on that to rename it and we're gonna call this get skill Funt color. I'm gonna cheat a little bit here, Teoh, create a short cut. I'm gonna hold down the old key first of all and snipped this wire. Then I'm gonna jump on over to my get title function that we just created. You can double click on that or that tab is still open over here, and I'm gonna grab. All of these nodes are get player character are cast to BP player. All this data, all this, all these break notes and even this select notes we're gonna grab all those. I just left, clicked and dragged to drag out that marquee selection right there. Grab all those hit control C. Then I'm gonna come back to my get skill font color function and I'm gonna hit come down here and control the and I'm gonna move these into position, making sure that we hook in this execution wire and making sure we hug. We plug in this execution where All the way into the return value. But the one thing that I want to be able to show assure that we swap out is we don't want the title here. So I'm gonna snip all these wires right here. And if I right click on the select like node, I can break all links like so Okay, let's hook back in our skill acquired right away because we actually do want that one. But out of each of these breaking of our skill data's what I really want it just click that little drop down arrow to expand it when I really want is the skill font color. So I'm gonna drag out this skill font color and put that into double jump and then I can collapse up. I'm gonna expand this one out, take the skill font color, plug it into back dash and then collapse that one fireball data. I'm just gonna expand that out find my skill font color, plugged that into fireball and then re collapsed. That electoral spark font color lends data. Take that skill font color and plug it into, lends a truth and then re collapse that just to keep things a little bit tighter. And then our miss data, I'm gonna take that font color, plug it into their and then collapsed this, like so as well. Now, one thing you got to make sure that you remember to do is take your return value from the select note and plug it into the return value of the return node as well. Okay, let's compile and save this more work to be done for sure. But I think we're gonna call it quits for this video so that we make sure that we've got enough content for the next two video. So that'll do it off for this one. Guys, we will see you in the next one 56. Skill Acquire - Notify Bindings #2: Welcome back, everyone. In the last video, we started to create some bindings for our various widgets here. One thing I did between videos is I made a little script just to display this skill acquired widget blue print to the screen so you could see what some of these modifications actually look like. Now, just note that what I did here and I'll show you how I did it. Ah, What I did here is very temporary in nature. I don't want to keep this around. But just for testing purposes here it was worth seeing What are different Text here is all going to look like. For example, if I click play right now, you will see that my widget blueprint is displaying on screen right away. Of course, the hut is going overlap it. But you can see that with the electro sparks skill acquired. This is what that's going to look like. You can see how the the text is changed for the title and even the color of the text for the title has changed as well. So if you want to follow along and just be able to see this widget blueprint up on your screen. This is what I did here in the level editor along the toolbar. If you come under to the blueprints button and you open your level blueprint, you can create a quick test scripts so that you can display your skill acquired widget blue print to the screen. And all I did here is off of event begin play. I just created a node. I right clicked, and I search for a node called Create Widget and it'll say construct none until you slot in your B W B p skill acquired. And then it will change the title of this. So I created this widget, our skill acquired. And then you drag off of your return value here and you type in ad to view port. Okay, so that is a script again. You have to have event begin play preceding it. But that's how you can get that to show up on your screen. And then what I did here is just to test it out. I went into my BP blow my sorry, my BP player blueprint and I set my skill acquired to electro spark so you can see what it's gonna look like for for different skills that you acquire here by choosing one of these other options. If I choose missed and I click play and I can see what that missed text is going to look like and it says Learned, missed. Okay, so that's just a really quick way to test that out. I'll leave that be, for the time being. But just know that I am going to kill that script sooner or later. Okay, with that, I'm gonna jump back to R W B P Skill acquire to continue with our HUD bindings. And if you don't remember how to get there, we are in Metroid, Vania Content Metroid Vania Widgets And there's are W B p skill acquired. So let's continue forth. E next binding that we want to create is going to be for our border color are skill, border color, if you will, and it's called Do, do, do, do, do, do do do do Let's see where it is over in the left hand side Here, Skill background image right there. Okay, that's the one that we're gonna be looking for, so make sure you've got your skill underscore Background image, widget selected and then over in the right hand side, where we've got the appearance and then the brush. And it's sort of this gold ish tent. Here's the binding right here that we want to create a binding for. So click on this, create a binding. It's gonna jump us over to the graph tab. We're going to do a lot like we did before. I'm gonna break this wire by holding down the altar key and simply left clicking. And then I'm going to come under the my blueprints panel hit F two over this function name , and we're gonna call this yet skill border color. Now again, just to cheat here in less than that amount of time, I'm gonna jump over to our get skill font color function by double clicking on it, and I'm gonna left, click and drag and grab all these nodes right here. Control. See Control V and I am going. Teoh, make sure all the execution wires are hooked in now. Truth be told, I really could plug this in like so. And everything would pretty much be hunky Doory, um, with the exception that Ah, well, first of all, it's not allowing me to do that because our data type here is different. If you jump over to R B P player and you jump over to something like double jump data, you can see that we've got this skill, border color and this skill font color, and they're similar in color. Although if you jump over to the structure variable, this is getting a little off topic, but I'll bring it back. Ah, sorry. The struck variable. There's our skill data. We can see that our border color is a slate brush variable type in our font color is a slate color type. So that is why I am not being allowed. Those are two different variable types. That is why I cannot just simply take our return value here and plug it into here. So what I'm gonna do is I'm gonna do a lot like I did before, and I'm going to right click on our select note here in our get skill border colored function and right click. I'm gonna break all links. And first thing I'm gonna do is make sure that I plug my skill acquired into the index of the select node and then, just like we did before. I have got to find clicking this drop down right here. The skill border color plugged that into double jump double jump data like so and this process is going to continue much like it did before. This is the border color for back dash and the border color for fireball and the border color for electoral spark and the border color for lens of truth. It's really easy to make a mistake here. If you're not staying focused, so do your best to stay focused during these tedious parts skill, border color for the mist collapsing that back up. And now we can take our return value and pulling that into the return value of our function . Node. Okay, so going to do one more of these hook ups before we call this video a rap? The next one I'm going to do is jumping over to our designer tab. And I'm not gonna keep testing these for each and every one of these. Select your screen shot border widget over in the hierarchy. That is his border kind of surrounding your picture and over on the right hand side in the appearance section where you see this little gold color click and create a binding for this as well Create binding. Going to create some space between these All I'm gonna hold out Ault and Left Click. And I'm going to rename this function, hitting F two on it to be get skill border not skilled Border color Get skill. Sorry, sorry, Sorry. Let me, uh, circle right back around. Skilled border color. Ah, yes. Sorry. You know what? This is pretty much gonna be the exact same thing. So we don't have to create a new binding for this fight. Jump back over to the designer tab. We created a of binding for this color. That's gonna be right along the top here for a background image. So if I select my screenshot border right here, uh, my come under my brush. And I started to create a function right here I can to remove this binding and well, actually, let's do it. Let's do a duplicate of that binding that we just created. So I'm gonna create a binding and here's my old one that I was just starting to create. I'm gonna delete that out. Gonna hit f two on this. We'll call this Get image. Border color. Gonna break this link right here. I'm going to select my skill border color up here, and I'm gonna copy all of these nodes left. Click and drag. Get him all control. See, then I'm going to come under my get image Border color going to control V to paste them all moon down into position. And I can plug our return value straightaway into here because, um and I'm gonna click this little drop down color. See that we've got the border color for this. We essentially wanna have to the exact same functions here because the border color is gonna be the same, whether it is four this border up here, which were calling skill BG image or this border right here, which is our screenshot border. So that is all going to be working fine and dandy as well. Just gonna compile on savior. Then I'm gonna go back into my BP player. Let's select our skill acquired variable, and I will changes to let's go, fireball this time that I'm gonna click play and you can see how my text and my borders are all the same color which is what we want now. We're not quite finished here. Still need to make it so that our man accosts here is variable. And our description here is variable and or button input and this image. But we are making attractions of guys That'll be a rap for this video. We will see you in the next one. 57. Skill Acquire - Notify Bindings #3: Welcome back, everyone. By this time you're starting to get the hang of all the bindings that we're creating here inside of our W B P skill acquired widget blueprint. We got some more to do here, so let's jump right to it. I want to start off by creating a widget binding for this particulary er widget right here . This skill icon left. Make sure you've got that selected over in your hierarchy and just to back things up. If you're not in your w b p skill acquired Blueprint, you can find it at this location right here. W b p skill acquired. Okay. And so with that, you've got your skill icon left selected here in your hierarchy. Come over to the details panel and we are going to create a binding right here under appearance brush. Let's go to create binding and right away. We've got this function over in our graph tab. I am going to hold on Ault left, click and break this wire right here. And then I'm going to rename this function to be Let's call it get skill icon left my left skill. I can now one thing to point out with this particular function that we're creating over on this right hand side this return? No, the return value is looking for If I mouse over it, it says it is looking for a slate brush. Now, this is important to know, because way back when I created are struck variable. This is the one that is containing all the different information about each of our different skills. You can see that the variable type I set for our skill icon was set to be a slate brush. That's the reason I said it to be a slate brush is because I knew that this was the variable type that I was going to need to create inside of R W B P Skill acquired here for this to be hooked up into this return value. So just to kind of connect all the dots and kind of to drive this point home earlier in the course we created this structure variable and inside of the struck variable contains all of these different variables. What we then did is inside of our BP player. We created some variables of like, our double jump data here of this variable type are struck skill data. And this is where we're populating each of our different skills with different information and then in r w B P skill acquired, we're going to reference our player to extract all of these different data's All right, So inside of our WPP, skill acquired. Let's get right back to it. I'm gonna cheat once again by copying some nodes from a previously existing function. It doesn't matter which one you select here. I'm gonna go to get image, border color, double clicking on that, Gonna left click and drag to drag out a marquee selection, grab all of these nodes hitting control. See, coming back to my get skill like on left control V to pace kind of movies down into position, hooking in that hooking in this execution wear. And then I will right click on this select note to break all of these connections. Break links. The one I do want to make sure I've got hooked in right away, though, is our skill acquired E newme that's going to go into the index. Okay, So out of each one of our data's here, we're breaking the data open so that we can extract what we want out of it in this case are double jump data. We want to grab our skill icon, plug that into the select node, and I'll wreck elapse. All these are back dash skill icon. A little bit of tedious work here, but be focused so you don't make any mistakes. Skill icon for our fireball It's collapsed. That's skill icon for our electoral spark skill icon for our lens data. And last but not least, skill icon four are missed like so Okay, and make sure that you plug in the return value from this select node into the return value of this function. So again, this is basically going to drive which of these icons it will select and display in our hut , depending on whatever our skill acquired. E noon variable in our BP player is set to, and the setting of that is going to come later on in the course we can manually said it now just to test it out. Firstly, I'm gonna compile and say this and let's go into our BP player and set this skill acquired variable. It is under the player info section, skill acquired. Let's set this to be. Well, Fireball is gonna be fine. Eso When I click play, you're going to see that screen up right away. It's going to overlap my HUD, which is all temporary. Here comes my heart. There it is and you can see over in the upper left Here we now are showing our fireball icon. We have not yet set this for the right side icon, so that's to come next. Let's exit out of here coming back into our w b p skill acquired. Next, let's jump back to our designer tab, and what we want to do now is select our skill icon, right? So select that in your hierarchy. Over on the right hand side, we got our appearance brush image. Let's create a binding for this and we got this skill icon left. I called it Skill Icon left, but you know, we can set This here is well, so let's just go ahead and select this That's going to immediately bind it to that function that we just created. Let me go and rename this functional right away because this is not really indicative of both the left and the right icons here, so I'm just going to click this little magnifying glass to go to this function and over up top here. I'm gonna rename this function to simply be get skill icon. Let's compile and say that and then let's play one more time. Now you can see I've got the fireball icons on the left and the right hand side with with our HUD overlapping, which is a whole temporary. Okay, so we've got our skill icon hooked up. That's looking pretty good. We'll call it a wrap on this video. Still more to do, but we will see you in the next one. 58. Skill Acquire - Notify Bindings #4: Welcome back. Once again, everyone, we are continuing on creating some or bindings here inside of our W B p Skill acquired widget blueprint. If you don't remember where to find this asset back here in the content browser were within the content. Metroid Vania Widgets folder WPP Skill acquired right here. Double click on that guy to open him up. Okay, so the next widget here I want to create a binding for is going to be our main image here. That's this nice looking picture right here. That is our screenshot image for those of you who like to select things over here in the higher Archy. So with that over in the details panel underneath the brush section, this is where we are going to create a binding create binding that's gonna jump us over to the graph tab. Do like we did before. Create some space. Ault left click to break that wear. Let's rename this function right away, hitting F two on it to get skill image. And I'm gonna copy and paste a bunch of those nodes like I did before. So getting skill icon just jumping over to any of these, you know, left, click, drag. Highlight all these and hit control C to copy all those nodes, jumping back over to our get skill image function. Gonna hit control V to pace and move these down into position, hooking up that execution water and this execution wear Always a good idea to make sure you've got all the execution wires hooked up appropriately before you move on. Test amount that I'm going to right click on our select note here and we're gonna break those links. And I am going to control Z that because I had all of those nodes selected when I broke those links and I didn't want to do that. Only wanted to break the links on the select notes. I'm gonna right click break links from just this node and then gonna make sure that I've got our skill acquired hooked into our select notice. Well, okay, so for this one, after we break open the data here for a double jump with one that I want to slot in is going to be our skill image. So, again, some mindless work to be done here, but make sure that you are plugging in the image to your select notes of depending on which skill we acquire. We're gonna populate that portion of the widget blueprint with the appropriate image, as determined by our various data variables over here. Various data variables. Not sure to think What? Sure. I'm not sure what to think about that. Okay? We got our skill image for the lens and for the mist skill image, like so collapse that, and we will plug this into the return value. Do not forget that. Okay? So we could test that all right away. But I want to do another one right away. Another binding before we jump in and test going to go back to my designer tab over here. And the next one I'm going to create a binding for is going to be our our input. That is this input button image right over here. Ah, select your in your hierarchy. This input button image we're talking in this case, it's this a button right here, kind of showing. Hey, this is the input that you got to do. I know for double jump. Technically, you press the a button once and then twice, but I wanted to keep this kind of simple. So for double jump, just having the A button is going to be input image enough. Let's just say that so with that selected over in the details panel under the appearance brush image section, create a binding right here, create a binding and scrolling up to the top, going to rename this right away. Yet input Create some space between these two nodes, Hult and left Click. And if I hit control V already had all those knows payer copied from earlier. So hitting control VM pacing them all over again. So if you didn't have them copied from earlier, you could jump into any one of your other functions. Here, do control. See to copy Control V to Paste. Let's get those execution wires hooked in right away. Gonna right click on our select note Here, break these links. Let's get our index plugged in first. Okay. And then for each of these after we break open the data, we want to slot in our input button. So depending on which skill we acquire, we're going to display a different input button on that on that screen over here. Right there. It's gonna display dear for an input button depending on which skill we acquire, Kind of giving you a hint as to which button you gotta push right. This is how to use this skill input button collapse, um, and our lens input button like so and are missed input button and re collapse. That and let's take our return value here and make sure that that is hooked in. Let's compile and say this. I'm gonna jump in and play really quickly if you remember from earlier. I currently have our skill acquired. Said to be fireball, as you can see, kind of great out down here. Let's jump in and play. So now our image that you're seeing displayed here depicts our fireball skill, and it shows that we need to press the are trigger to actually use that skill. Okay, so that's looking pretty good right there. Let's do one more of these before we wrap this video up, let's do the description. So jumping back over to our designer tab right over here this description text we wanna have this be unique depending on which skill we acquire. So make sure over in the left hand side you've got your description text selected, or you could select it right over here and right where this content text is over to the right. You have a bind button for this. Let's create a binding, create a binding and do like we've done many times. Now create some space. Holt left click to break that. I'm going to hit F two on this and we're gonna call this yet. What are we going to call this? Let's just call it get description have would make some sense. And because I had all those nodes copied from the four, I'm going to simply do a control V right here to paste them all over again, making sure we hook in all of our execution wires. I'm going to right click on ours. First, I'm going to select our select node, then right click on it and break the links. Hooking art a skill acquired E. Newman in first. And then we can simply take our description, which is handily available right here. After we break, open our skill data double jump, back dash, fireball E electro spark. You can even wire these in the other direction like so and miss data and take your return Valium. Plug that in right there. Let's compile in. Save that and let's give us a quick play to test this out quickly. And there it is. Over on the right hand side or description says, cast out a rain cast out a ranged firewall. I could make that text a little bit bigger, but I'm gonna live with it for the time being. Alright, guys. Still a little bit more work to be done. But that's gonna do it all for this video. See in the next one. 59. Skill Acquire - Notify Bindings #5: Welcome back, everyone In this video, we are going to finish off all of our bindings here inside of our w b p Skill acquired Widget blueprints. If you don't remember how to get back into this asset, jump back to your main level editor. Here we are content. Metroid Vania Widgets. There's your W b p skill acquired. Let's finish this guy off. So the last couple things that we need to bind are either showing or hiding. This attributes overlay because not everything is going to cost Mana are double jump and are back. Dash are not going to cost any mana, whereas our white and black magic skills were are I should say not worth. They are. Then we also need to bind our mana cost here to some variables as well. So let's do this Attributes overlay. First we want to either show or hide this entire overlay depending on which type of skill it is to make sure you got that guy selected. And then over in the right hand side, we're going to find the section called Behavior and then right, right, says visibility. This is where we want to create a binding so go ahead and select this. Create a binding again. It's gonna jump you over to the graph tab. Gonna create some separation here. Gonna left click or hold on, Alton left click to break that Break that wear And I'm gonna rename this function right away too. Show attributes, overlay. Now I'm actually going to duplicate this return node right away because we're either going to show or hide. It's currently this one that we have says it's visible. So I'm gonna hit control C right here to copy that control V to pace it. And I'm gonna position him, like so a return value for this top one. I want to be visible. But for this bottom one, I'm going to say hidden and you'll see all this come together just a moment now because I just copied and pasted this. Know that means I need to go into one of these other functions and copy and paste all these other nodes that I want from our player. So left click drag out a marquee selection to grab all these knows from any other of your function nodes over here to control sea. To copy, jump back into your show attributes overlay function. We're going to control V to Paste, like so moving them into position, hooking up this execution where? But now, before we plug in this execution, wear drag out of your cast to BP player and we want to bring any branch nude, okay, And we're gonna plug are true into the visible. And we're gonna plug the false into the hidden and you'll see why here in just a moment, we still need to give us a condition. Let's select our select no, then right click on it and break all links. And just like we did before, let's then make sure that our skill acquired is plugged into the index. And now we got a plug in all of our data into this select note. Now, the thing that we're looking for in this one is if we do break open our skill data here a little bit more, we had a Boolean variable called magic skill, and that is one or that's asking the question. Hey, is this particular skill that we've acquired is at a magic skill. If it is a magic skill than we do want to display that attributes overlay if it's not a magic skill, we do not want to show it. And remember this magic skill right here. It came from this struck skill data right there that we created way earlier in the course. So jumping back to our WPP, skill acquired. So for our double jump magic skill question Mark, I'm gonna plug this in, like so. Same thing with our back dash. Those are not magic skills. So that is going to evaluate to false, In which case it is going to hide our attributes overlay. We might as well plug this in right away. Okay, So if you remember our double jump data just jumping back to our BP players so you can see all these working parts. Our double jump data it is of that variable time here we have isn't a magic skill. No, it is not. That is not check. So here in our WPP, skill acquired were binding that so saying our double jump data is in a magic skill. It's going to evaluate as false for this particular data. So it will hide that attributes Overland kr fireball. That is going to be a magic skills. So that one is going to show make visible or attributes overlay electoral spark Get that all hooked in. The rest of these are all going to show that attributes overlay because that magic skill check box for each of those skill data variables is going to be true magic skill. Like so Okay, so that's looking pretty good. Going to compile and save that right away. One more binding to go before we call this one a rap. Let's jump on back over to our designer tab. And we need to create a binding for this man a cost value. This 99 value right here. This is known as the Man a value widget over here in our hierarchy. So come over in the details panel right next to where it says text 99 create a binding. And we're gonna call this binding. I'm gonna come over to the my blueprints panel hit F two. Let's just simply call it, get mana cost, create some space between the two of these. Then I'm gonna hold down the old key left click to break that wear. Now, this one is going to be a little bit different from the rest of the functions here because all the rest of the functions that we created we drag out of our our player are BP player, and we were grabbing our data structure that resided in our player. This time around, we're going to grab inside of our BP player and grab out the attributes. Very bowls that reside inside of our player will see that in just a moment here. So let's do this. Let's right click. Let's get player character. I'm going to drag off the return value we will cast to BP player hooking in this execution wire Now out of our SBP player. Let's drag out a wire and what you're gonna be looking forward if you do a search for attributes you're going to see, we've got things like get fireball attributes, lends, attributes, etcetera. That's what we're looking for. And we want to get our fireball attributes here, and we want to drag off of here, and we want to search for attributes. Once again. I also want to get my electro spark attributes and dragging off again. Let's look for lens attributes, drag off again, missed attributes and just to drive home this point if I jump over to my BP player and I look over in the variable section. Let's come under our magic black fireball category. Remember, For all of our previous bindings, we were grabbing inside of our fireball data here to grab things like our icon and our skill image etcetera. For this one, we want to grabbing our fireball attributes, which is based upon our variable type of our struck magic attributes that we created earlier. Remember this construct that we created earlier was containing information like the name this icon right here, man accosts, which is what we're concerned about here, as well as things like damage and damage type. So we need to go inside of our fireball attributes to extract our man accosts that we're storing. I don't really care right now about our dummy attributes for things like blood lust and Arctic Blast, which we're not actually going to hook up in our game. But we will have them present and accounted for on our black and white magic selection screens, anyways jumping back to our WPP skill acquired. Now that we've got our attributes for the fireball electro spark lens and missed one more thing we need to grab out of our BP player is a skill acquired. This e newme get skill acquired because we still need to then drag off of that and bring in a select node like we've been doing. Okay, So out of these attributes Struck's these. This struck for the fireball attributes. We want to break this so drag off of here and say Break instruct magic attributes that we can extract the goodness inside of it. And if I click this little drop down arrow, there is our man accosts So fireball attributes Mana costs. I want to plug this into Fireball. I don't care about double jump and back dash because there's going to be no mana costs associated with using those skills that I can collapses back up. I'm gonna hit control C Control V to pace that our electro spark play. The man accosts into their I'm gonna hit control V Once again, let's get the mana costs associated with our lens control V. Once again, let's get the mana costs associated with are missed ability, which that one's going to be really cool. When we hook that guy up and collapse this, I'll just double click on this wire right here to create a reroute note. And then don't forget to hook in this execution, wear into the return node and then the return value out of the select note into our return node are returned input. Rather here it will bring in a conversion note to convert that floats detects. And now let's compile and say this once again I will hit play. Of course, our hut is gonna overlap this temporary showing of our skill acquired screen here. But you can see over on the left hand side is showing that are Fireball Mana. Cost is five. So very good. We've got our image updated inbound. Two variables. We've got description. The title. These icons right here. Pay no attention to the HUD. That is not going to overlap this in time. That will do it all for this one. We've got all of our various widgets here bound two variables in the next video or videos. I should say we're gonna be working on creating some animations for the screen. Well, see, there 60. Skill Acquire - Notify Animations #1: welcome back. Once again everyone in this video, our goal is to create some animations inside of our widget blueprint. Here are skill acquired widget blueprint so that it will appear on the screen in an eye pleasing manner. Again, This is meant to appear whenever our character interacts with one of those skill diocese out there and they collect and then gain a new skill that they can then use. So this is just some information for the player about what the skill is, how much, man it costs that sort of thing. So creating some animations for this Firstly, if you are not in this w b p skill acquired, this is the pathway content. Metroid Vania Widgets double click your W B P. Skill acquired to join right along for the fun. With this open over here on the designer tab, we're gonna come over to the lower left hand portion of the screen and create a brand new animation by clicking on this green plus animation button. This 1st 1 is going to be called Intro, and we're going to do a few things in our intro animation track. So with that selected, we are going to make an animation for our background blur. Firstly, so select your intro animation right here. Then select your background blur. And if you come over to the details panel, the thing that we want to change over time is our blur strength. I've currently got it set to five. And what I'm gonna do is I'm gonna reset this back to you zero for the time being, because by default, I'm gonna want it to be zero. And then I'm going to click this little plus button right here to add a key frame for this at the zero second mark. So I've clicked on that. You can see our background blurs now been added down to our timeline right here. And so at the zero second mark, I want the value to be zero. Then I'm gonna move my timeline slider over to the half second mark right about there again . You could hold down control and mouse wheel too. Squeeze or shrink your timeline here. So the half second mark, I'm going to click this little plus buttoned at a new key frame, and then I'm gonna change the value of our blur strength right over here. to be five. Just note that you can right click on any of these keys and change or value that way is, well, your time as well as your value. Um, I like this methodology of simply going here than adding a key frame than changing the value right over here. But whatever floats your boat, Okay, so that's gonna be good for our background blur. Let's move our timeline slider back to the zero second mark. I'm gonna collapse this track. The next thing I want to modify overtime here is going to be our screen overlay are not our screen over there are skill overlay. Let's find that right here in the hierarchy. So make sure you select that and what I want to modify overtime here is our scale. So it come down to the details panel and scroll on down to you, find your render transform scale settings, and I'm going to set the X bite if I'm going to set the the new default values first before I add anything to our timeline. So I'm gonna keep our ex scale at one. But the why scale I'm gonna set to be zero now. Okay? So that's gonna basically shrink it all the way up. Now I'm going to click right here to add the scale properties to our timeline. There they are. Let me just expand this out by clicking on this triangle. Expand out this scale as well, so you can see it. The zero second mark are ex scales, one R y scale zero. Let's move our timeline slider to the 0.15 2nd mark. Let me just expand this out a little bit. I'm gonna add some more scale keys here. I want the X scale to be one, but I want the why scale to be 1.5. So it's gonna be kind of fat like that just for a brief moment. Then I'm gonna move my timeline slider over 2.25 seconds. That's 1/4 of a second click right here to add some more skill keys. And I'm going to set the X value toe one and of the y value toe once you can see now how this is going to you kind of pop in like that. Okay, let's move our timeline slider. Back to zero seconds collapse our skill overlay here The next thing that we're going to add down to our track is our screen shot border. Let's select that again. The screenshot image is attached onto our screenshot borders, though if we modify our screenshot border, the image will be modified as well. And the thing I'm gonna want to modify about our screenshot border is the scale settings. So at the zero second mark here at the zero second mark, I'm gonna want the ex And why? Well, I'm gonna rather let me back that up. I'm going to set the new defaults for our scale to be x of zero. And why of zero that's gonna make it disappear temporarily here. Then I'm gonna add a key frame for this. It's gonna add it to our timeline. Let's expand our transform in our scale. So it zero second mark is that 00 for the X and Y scale. Move our timeline, Slatter, over to the 0.25 2nd mark. Let's add some more scale keys by clicking this plus button. I still wanted to be zero and zero right here that I'm gonna move our time on slider over to the half second mark. Add some more scale keys, clicking right there. And let's set our X and Y to be one and one so you can start to see if I click Play what that's gonna look like, right? And that's looking pretty solid right there. Yeah, well, let that be for the time being in my notes, I did set all these keys to be linear. I'm just left clicking and dragging. And then I right click on any of these keys to be linear. That's just gonna make a little bit more of a smooth transition. But it's barely noticeable, so you don't really have to do that. Okay? Now I'm gonna collapse my screenshot border parameters down my timeline right here and let's do our input overlay. So let's find our input overlay right here in the hierarchy. The thing that I want to modify about this overtime is also our scale. So rendered transform scale. Let's set our new defaults for this to be X zero. Why zero, then I'm going to click right here to add keys for this tour timeline transform scale. You do start to run out of screen real estate with this for a little time, so as you're working on building out a timeline here, you got to try to keep this on view. Little difficult with one monitor. Okay, so what? The zero second mark? I want the X and Y to be zero at the half second mark. I'm gonna add more skill keys, and I want the x and y to still be zero at the 3/4 of a second mark, 0.75 seconds and add some skill keys here. I'm going to set the X to be 1.5 and the Y to be 1.5. Then lastly, I'm gonna move the timeline slider over to the one second mark, add some more scale keys and let's go one for the X and 14 z y is gonna pop in like so. Now you see, it's kind of doing that weird. What kind of zoo? Moon on it. It's kind of doing that weird sort of animation where it's inverting. Here I am going to left click drag around all my keys. Then I'm going to right click on any of them. And I'm going to say I want these to be linear. And by doing that it's gonna prevent that little weird flipping in the beginning and simply do what we wanted to do. Okay, More work to be done here, but we're going to compile and save this one more time. We're gonna call this video a rap, but we're going to continue on in. The next one will see their 61. Skill Acquire - Notify Animations #2: Welcome back, everyone in this video, we're going to continue right on where we left off in the last video. And that was creating some animations here inside of our W b p skill acquired which it blueprint. If you don't remember how to find your way on back here we are within the content, Metro in Vania Widgets folder W B P Skill acquired double click on that guy to open him up . And we were working inside of this intro animation that we had just created in the last video. So we left off by creating an animation for input overlay. I'm going to collapse this. I'm gonna take our timeline slider all the way back to the zero second mark. And the next thing that I want to animate overtime here is our description overlay. So we're kind of working our way down our hierarchy, so select your description overlay. And the thing that we're gonna be modifying about this over time is going to be our scale as well. So there is our scale settings. Let's go ahead and set our X to be won by default like it currently is. But our why value can be set to zero. So that's going to shrink that up in the Y axis. So it's gonna disappear temporarily. X one y zero. Let's add these keys down to our timeline. There they are. Description, overlay, transform, scale. So what? The zero second mark? We want X to be one wide to be zero. At the one second mark, we're gonna add some or scale keys. The X is going to be one. And why is still going to be zero, then? I am going. Teoh, hold down my right mouse button and move my timeline Slider over to the right a little bit . Gonna move her over to 1.25 seconds. Add some more scale keys. Okay. And here I want the X value to be one and the why value to be one as well. So the idea here is that it is going to essentially flare out like that in the last quarter . Second, like so, see that? Okay, so I want to do that for both the description overlay and the attributes overlay. I think for these and again you really have to, but I'm gonna left click in drag around all these keys, and I'm going to set these keys. To be linear is Well, okay, I'm gonna move my timeline slaughter all the way back to the zero second mark and just going to not collapse this description overlay for the time being here because I want to see all my times here for my next set of attributes here. My attributes. Overlay right there that widget. So select attributes overlay under these scale section, we want X to be one. Why to now be zero. Let's add some keys for this down to our track. Under this scale section, there's our attributes. Overlay just appeared transform scale. And here I'm just gonna copy exactly what I did with our description over less. So moving this down to the one second mark, it's gonna be some more skill. Keys of 10 1.5 seconds. Some or scale keys one and one. And let's left, click and drag and set the used to be right click key interpretation Linear. So I'm gonna back up my animation here to the front, zoom out a little bit. Hit that play button. That's not too shabby so far. All right, I'm gonna collapse this up collapsed this up. That is going to do it for our intro animation here. But I do want to continue on and create a brand new animation. This next animation all Sorry, we're not quite finished with that. I forgot one more before we create our next animation. So with your insurer animation still selected, I forgot our back over Laid down here, this guy right hanging off the edge of our screen. So let's elect are back. Overlay. Make sure your timeline is back to the zero second mark. Let's come up in the details panel and we're going to come. Underwear says position X. Okay, So I we have the position x at 1 50 which is perfectly fine, but I want to modify this over time, so let's click right here for position X. You see that down in our timeline? Now, let's expand this out, okay? And so we're going to We've already got a key. There are zero second mark, so I'm gonna move our timeline slaughter all the way down to the one second mark at a new key for our left position here that is left of 1 50 That's equal to Position X right here. So with our timeline slaughter at that one second mark, I'm gonna change that left position, actually gonna keep it at 1 50 Keep that at 1 50 Although when I move the sun Lines letter to the 1 25 1.25 2nd mark, I'm our timeline. We're gonna add another key for our left. And here I'm going to set the left property to be negative. 2 30 So you're going to see how, over the course of the final quarter of a second it's going to slide, are back button onto the screen, like so? Okay, so that is going to do it all for inter animation. Let's collapse at up. Move our timeline slaughter all the way back to the zero second mark. I want to create a brand new animation. So let's click this green plus animation button. This one we're going to call input pulse. So here's the idea. I want to make it so that when our screen comes on like this, this little button here, I want that to kind of pulse to indicate what the player needs to do in order to use that skill. Okay, so gonna move my timeline side or back to the zero second mark. Make sure I've got input Pulse selected as our animation over on the left hand side. Okay, so the thing that we want to animate overtime here is going to be our input button image. So select that over in your hierarchy, find your scale settings for this scrolling down, render transform scale settings. So let's go ahead and click right here to add this to our timeline transform scale. So at the zero second mark, I do want the scale to be 00.5 in 0.7, respectively. I'm gonna move our timeline cider over to the quarter second mark. Let's add some more skill keys here. The X is going to be I've got some very specific values here, 0.35 And for the why 0.49 Why those numbers? Because that's 70% the size of what it is in the beginning. So I'm basically going to be shrinking it down 70% of what it was. And then at the half second mark, I'm gonna add some more scale keys, and here I'm gonna set it back to you 0.5 for the X and 0.7 in the why. Okay, so none of this is hooked up yet. By the way, I mean, we still need to script this toe happen, so we can't see this just yet, but we will. Okay, so gonna be all done with that animation. Next, I am going to create another animation click this green plus animation button. This one is going to be called back hover. The idea here is going to be that when this back button slides onto the screen when we are hovering are mouse cursor over it. It can grow in size just to indicate that we are in fact, hovering are cursor over it. So I'm going to select our back hover animation. Our timeline slaughter Here's at the zero second mark and I am going to find are back overlay in the hierarchy. And what I want to do is modify the scale of this over time. So right here, find your scale settings. Click this button to add is down to our back hover timeline, expand out our scale settings here. So what? The zero second mark one in one for the x and y. Then let's zoom away and I'm holding down control and scrolling in. I'm gonna go to the 10th of a second mark. That's 0.10 seconds and I'm gonna add another scale key right here. And I'm gonna set our X to be 1.1 and are wide to be 1.1 as well. And believe it or not, that is going to do it for all of our animations. We still need to do subscript ing for all this to make it happen. But that that's it for creating the actual animations themselves here in our timelines. So guys that'll do it all for this one. Let's compile and save one more time. We'll see you in the next one. 62. Skill Acquire - Script #1: Welcome back, everyone. Well, we are at a point now where we've got a lot of pieces in place. We've got these skilled diocese that we've created earlier, that we want a player to interact with two, then collect a skill and then, upon collecting the skill we want that widget blueprint that we've just been working on to appear on the screen saying, Hey, you've collected the fireball ability. This is how you use it, right? Well, what we don't have in place is some script to a present, a message to our player that, Hey, you can collect this skill. You're within range of this diets to collect that skill. And B, we don't have any interaction system to even check for if you are within range and press a button to collect that skill. So let's take care of that now. Now there's a lot of script that's gonna go into this, but we're gonna take this piece by piece, and we're going to start off here by going into our project settings, and you confined your project settings across your main toolbar. Here, you got a settings button and you want to go into project settings right here and over along the left hand side. You've got a section called Input and we have some action map ings over on the left hand side will. Currently we have one action mapping one for the jumping action. What you can do here is you can create an event and bind it to some buttons right here in your action mapping. So I want to create a new one. We have one here for jump by default. I'm gonna click this plus button, and I'm going to create a new action mapping, and I'm gonna rename it right here and call it Inter Act. And then what do I want to bind this event? Know too well, I want to bind it to Ah, let's see. Game pad. If I do a search for game pad, face button, right, Based button, right. I'm using an Xbox one controller. So for me, that's going to be the B button. But if you're using, like a PlayStation controller No, that that's a circle button game. Pad, face, button. Right. And I also want another button to fire off the interact event here, so I'm gonna click this plus button and right here. I am going to do a search for right? Not game had the keyboard event keyboard. Right. So that's my right arrow key. That's what that is. So if you just do search for right once again, I was under the keyboard section of the right. That's the right arrow key. Okay, so we have created an event called Interact, and it will be fired off whenever we press a game. Pad the face button. Right. Which is the B button on the Xbox controller or the right key on a keyboard? That is my up. Down left, right, arrows. Okay, you combined it to any sort of key that you want. Okay, so we're all good with that. Next thing I need to do is I need to jump into my BP player. This is the folder directory and how to get there. Double click on your BP player, and we're gonna create a couple of more variables in side of R B P Player. I know we've got a lot of them already, but come underneath your blueprint panel variables click plus variable. We're going to create one called B can enter interact. Question Mark, we do want this to be a Boolean variable, and I am going to compile this right away. I'm gonna set a new category for this. I'm gonna left click drag, overwrite this category, and we're gonna create one called Inter Act tool tip for this show. Relieve a tool tip. This will say sets true or sets to true when overlapping an interactive able objects used to show our interaction message. Okay. And by default, I do want this to be false. You can see we've got a new category called Interact Down Here. Okay, one more variable I want to create Click this plus variable button. I'm gonna be calling this one interact trace length, and I'm gonna change this variable type by clicking this little pill right next to it. I'm going to change that to be an integer. You could have also changed it right up here. I'm gonna change the category here to be interact, and I'm going to compile this so I can set a default value here to be 100. What Essentially we're gonna be aiming to do here is if I jump over to my view. Port tab is we're gonna basically shoot out an invisible line while we're actually gonna shoot out a debug line and we're gonna check, It's gonna shoot out from our character here, our capital component, and it's gonna check to see if it hit anything. And if it did, we're gonna make stuff happen. So that's the idea here, and we're gonna utilize this interact trace length variable to help with that. Okay, next. What we're gonna do is we're going to jump on over to our event graph you're inside of our BP player. Let's find some empty space, and we created that interact event before. So I am going to simply right click, do a search for Interact, and there is my action event for Interact. And again, this will be fired off whenever I press the B button on my Xbox controller or the right arrow key. Okay, so what I want to do is off of the press. I'm going to do a search for line trace by channel. There is a function for that. And what this is going to do is it's going to send out a laser beam of source to check to see if it hit anything. I got to give it a start in an endpoint. So what I'm gonna do is I'm gonna grab a reference to my capsule component, and I'm gonna drag outta here. The capital components get world location, and I'm gonna feed. That is the starting point for my line Trace. And you're actually going to get to see this line Trace in just a little bit here. Okay, so I need to feed this in endpoint, But to help with this, I need to drag off of my capsule component. I need to get the forward vector, that is which direction is forward then? Off of this. I want to multiply this by our interact trace length. Okay, get interact trace length. So I am then going to drag off of the return value here. Typing multiply. We're looking for vector times int. So you got one yellow input, one green input, and then gonna move this over to the right here. I'm gonna drag off of our world location of our capsule component, and I'm going to hit the plus symbol. I'm gonna be looking for vector plus vector. So that's gonna go into here And the four vector times 100 here is going to go here, and then I'm gonna take that and plugged that into the endpoint. So our line is going to start at our capital component, and then we're gonna shoot it off out into the distance. 100 unreal units, and that's gonna be our ending point. So it's gonna be a rather short line trace. Now, the Visibility Channel Here is what I've got set as our trace channel. Now, if I go way, way back from earlier in the course, I'm gonna happen on over to my content browser here. Briefly. I'm going to come under blueprints. Actors, you don't have to do this. This is just for me to show you this. But we created this BP Interactive Base Object Interactive object base from which our skill blueprints derived from my double. Click on this to open it up. We haven't interact collider here. And if I come underneath the collision section, we have a trace response for visibility. It is going to block our visibility channel. So we want that to be blocked so that we can do some stuff whenever we shoot out a line trace and this interact collider is going to block it. And basically, detective Hey, line trays hit me along our visibility channel. Okay. All right. So Trace Channel is visibility. Um, what? Also, I want to draw debug type. I want to set this to be four. Duration. This is going to enable us to actually see this line trace out in the world, which I think you're really gonna wants. You can see. Uh, the extent is how far that line reaches out into the world. Okay. In fact, we should be able to just compile and save, and I can play right now. And if I hit the b button or my right arrow key, you can see that red line kind of emanating from my characters position, right? It's very faint. Very hard to see. But the idea here is that we're going to use that red line to see if we are interacting with this diess. Okay, so so far, so good. With that little bit done, it might be a good idea to compile in save. And so the next thing we need to do here is to create an intermediary of sorts to be able to communicate from our BP player here to our various skill blueprints, those diocese. So how we're going to do that is we're going to create something known as a blueprint interface. There's lots of ways to communicate between blueprints in unrelenting for and I'm not gonna get into all of them That's a little bit outside of the scope of this video, but we're gonna be using one of those forms of communication a blueprint interface to communicate from our BP player to our various skill blueprints. So I'm going to jump back to the main level editor here, and I am going to go into my Metroid Vania Blueprints folder And inside of year, I'm gonna go into the miscellaneous or MISC folder. It's currently empty. Inside of year. I'm gonna right click come under the blueprints section And in this little fly out menu, we've got something called a blueprint interface. Select this and I'm gonna simply call this B p i for blueprint interface underscore, Interact. Then I'm gonna double click on this to open it up. And what we can do within inside here is create a brand new function that we can use to call from one blueprint R B P player blueprints and then receive it in another blueprint. So we've got this new function zero right over here. I'm just going to simply rename this one. You can add a new one, but it had one here waiting for us. Will simply click on that hit f two and rename it. We're gonna call this one object interacted with, and that's literally it. That's all we need to do here. We don't need to do anything in the graph down here. We don't need to add any inputs or outputs. Just compile and save this next. What I need to do is I need to tell both of our BP player blueprints and ah, the other one we wanted select is our BP Interactive Object base located in this folder. We need to tell both of those blueprints to add that blueprint interface. So make sure you've got your BP player and your BP interactive object based open. I'm just gonna place him side by side. And right now I've got my BP interactive object base. If you come into the class settings over on the right hand side, it's asking for implemented interfaces implemented blueprint interfaces. Currently, there's nothing we're gonna add one. And we can add this BP I interact that we just created so again, all of our different skill dioceses here. Like these guys right here they all inherit from this BP interactive object base. Which is why I am adding our blueprint interface on the base instead of, say, this specific BP skilled double jump because it will now inherit it. If I go ahead and compile and save. And then, for example, jump into my BP skill double jump open. The full blueprint editor here this inherits from BP skill base, which in turn inherits from BP Interactive object based class. And if I was to go into the class settings here, you could see that there is an inherited interface of BP. I interact so you can see how that all pieces together. Okay, so I added R b p I interactive or interact rather inside of our interactive object base. There it is. I need to do so in r b p player as well. So select that guy. Go into your class settings and over on the right hand side implemented interfaces. Let's add one and Let's add our BP. I interact and compile and save that guy That was necessary for this next part of script that we're gonna add here in our event graft. So after we do this line, trace, we're going to drag out of this outhit, and we're gonna do a search for break hit result. So after it hits something, you congrats. Ah, lot of goodness out of this out Hits trucked to tell you things like, What did you hit? Where did you hit? Etcetera. So we're gonna break that hit result open. And before we drag off of here, I'm gonna drag off of our execution wear right here, and I'm gonna bring in a branch node. And the thing that I want to evaluate the condition is can we interact this boolean variable that we just created? So, dragon drop that on top of the condition. So we're going to set if we can interact with this particular skill blueprint inside of our various skill dies is here. So, like inside of our BP skilled double jump, we will be able to set inside of here if we can actually interact with it or not. So that's to come, So we're kind of laying some groundwork for what's to come. OK, so we're gonna say if we can interact with that, were then going to do another check off of our true branch Here is is valid the kind of this question mark looking guy right here. And we want to find out if the hit actor the actor that we hit with our line trays if that is a valid object, this is just kind of a safety check of sorts to prevent any messages from appearing in case that is not a valid object. Okay, So if it is a valid object, then what we want to do is drag out of our hit actor one more time. And we're going to do a search for object interacted with. So we will find when we drag out of our hit actor. This bp I interact, object interacted with and in parentheses. It says message. Okay. And it should have this little envelope icon on it. And it should say target is BP. I interact. Okay, now note. If I was to simply right, click in some empty space here and just do a search for object interacted with. I've got different versions here. I've got this call function object interacted with where it says target is BP player and that is different from interacted. I can barely spell today. Interact, object interacted with this BP, I interacted object with interface call. So note that we've got to three different variations here. You want this one with the envelope here? This is the one that's gonna be able to send a message over to our skill diocese that hey, did we interact with you? And if so, we're gonna make something happen. Okay, so ah, we have set the groundwork here for in an interaction of sorts here between our BP player and our skill diocese. We've got plenty of more work to do. But that's gonna be a rap on this one. I'm gonna finish this off by jumping into our BP player left clicking and dragging around all the script hitting the Seiki. And I'm gonna call this our interact script Gonna compile and save one more time. Guys, that will do it all for this One more work to be done. We'll see you in the next video 63. Skill Acquire - Script #2: Welcome back, everyone in this video, I want to take some time out to get our interact message showing whenever our player overlaps a trigger volume in one of our diocese. Now, before we get started with this script, I want to direct you to your BP skill base. It's in this directory right here. Content Metro in Vania Blueprints. Actors, open up your BP skill base because what I want to make bigger for this interaction is this trigger volume right here. I have made this adjustments between video, so I'm going to show you exactly what I did so inside of our BP skill base. Select your Interact Collider over in the components panel. And let me just jump back to a perspective. You here with your Interact Collider selected. I went ahead and I changed the locations of our Interact Collider to be X zero. Why? To 70 and Z of 95 and then I changed the box. Extends to be X 100. Why? 300 z 100. So we've got a volume like this out here and you can see how that translates once we place it in the level. The idea here is that our character is going to be able to overlap this trigger volume. And when they do, we want this sort of a notification. Are w b p notify to appear directing the player on what? But they need to press to interact with that skilled IAS to claim the skill. All right, so with that all in place, the next area I am going to direct you to is RB API Skill Double jump. Let's open up this sky. No to that once. Ah, you do make those changes to the size of your trigger volume in your BP skill base like we did and student as you compile and save that because our BP skill double jump inherits from the BP skill base, the trigger volume inside of our BP skill double jump will be modified as well. Okay, So just to avoid any confusion, I'm going to close out of my BP skill base. Open up my BP skill double jump and inside of here, I want to create some script to show that interact message. What I'm gonna do is I've gotten actor event begin overlap in the Venn tick. I'm gonna delete these two out. But do not delete out this event. Begin play and this parent begin play. Okay? We want to leave that. So what we want to do is select our Interact Collider up in the components panel and we can right click on this. We're gonna add an event, and we want at an on component begin overlap event. Okay, then off of this, we're gonna drag out of the other actor. We're gonna cast two r b p player to make sure that it is our BP player overlapping that. And then inside of our BP player, we just created a variable called Can Interact, get can interact. And if you don't recall, here's our my BP player. We created this variable for 10 Interact. Okay. Jumping back to my BP Skilled double Jones. Sorry. I didn't want to get can interact. I wanted to set can interact. We want to make it so that if he is overlapping that trigger volume, we can interact with it. So make sure that that is checked right there. Okay, The next thing I want to do is drag a wire out of our set note here, and I want to bring in a branch nude, and obviously I need to evaluate some conditions. So what is the condition that I want to evaluate? Well, the condition that I want to evaluate is does our player already have the double jump skill ? And now I can get a reference to our players straight from our caste to BP player. But also, I can get a reference to our player by coming in the my blueprints panel right over here. There's this little drop down click right here. And if you don't have show in very inherited variables checked on, you want to make sure that that is checked on because inside of our show inherited variables, we have inherited our interactive object variables, one of them being the reference to a player. So go ahead and drag out a reference to your player that will give us a reference to him, then drag out of our player and let's type in has double jump. This is a boolean variable that exists inside of our BP player. So that is a condition that we are going to you be checking against. Okay? And if this condition evaluates to false, then I want to bring in another branch. And the other thing that I want to check is dragging out of our player. Once again, Type in is using missed we're going to get is using Missed This is working a little bit ahead, but through some testing, we do need to check if he our player is using the mist ability because we do not want to do anything If our character isn't miss form. Basically, we don't want our character to be presented the message that they can interact with this diess. If the hair floating around in miss form, we want them in human form. Okay, so if that is false, we're then going Teoh, bring in a A where my looking next, I want to bring in our interact message variable right here, drag and drop that in. We're gonna get that and something else I need to bring in is R W B P. Notify air, Drag that guy in. We're gonna get that And inside of our WB Ph notify, I want to drag out a wire in type in set received message Click the Sorry if this is false , make sure you've got this. If this is false. We want to set our received message and the message that we want a pipe in here is going to be learned skill, like so. And if you remember right, these variables right here were created on our BP interactive object. We're talking this guy way back when So we created are w B p. Notify widget. That's this guy right here. We're creating that inside of our BP interactive object base. And then we're studying that two of variable and remember, all of our skill diocese inherit from this. So that's why we're able to access this variable from our BP skill double jump. Okay, so that's going to set the message here inside of our WBB. Notify here to show, not interact message, but instead it will show the text learned skill. Okay, flip in my page and notes. Next thing I want to do, I'm gonna drag off of my w b p, notify her here and type in ad to view port. And another thing I want to do is I want to drag off of r W b p notify and I want to play in animation and the animation that I would like to play. I can also drag out of my W b P notify air. And it is the intro animation. If you just type in intra right there, you can get that employed that into the in animation. So the idea here is in our wbb Notify if you remember, we created an animation called Intro and so we're going to tell that to play flare out just like that. So we're calling all this to happen. We're telling all this toe happen inside of our BP skill double jump. Okay, next thing I want to dio is I want to bring in a reference to our SFX can interact. This isn't inherited variable as well. We're gonna get that. And then I'm gonna drag off of here and type in play sound to D, and I'm gonna click this little drop down here. I want to set the volume multiplier for this to be five, because it's kind of a quiet sound. And if you remember right, we already determined what this sound effect was going to be. It's this floating you I close and we set this all the way back in our BP interactive object way back in the day. Right there, Right there. Okay, so with all that script done inside of our BP skilled double jump, I am going Teoh left, click and drag out a marquee selection. Hit the Seiki and I'm gonna call this show. Should make this appear on screen your show. Interact Message. Let me try to fit this whole script on screen. So if you want a pause a video, you can see what we have built here. Take careful pains to ensure that you've got this can interact set to true. And another key thing in order to make this script all come together is you got to make sure that your interact object variables over here are showing so that you can reference them. And again, the way I got that was to click right here, show inherited variables. Okay, so with that, I'm gonna compile and save right away. And I can actually jump in and play right now to see this appear on screen. So right now, my player is not overlapping that trigger volume. But as soon as I move to the right, there we go. The message appears. Thing learned skill. However, if I leave that trigger volume, it still appears on screen. And you see that every time I overlap it, it is going to show again, again and again, like so. And once I escape out of here, I'm gonna get some error messages. Don't worry about those for the time being. This is still a work in progress. Okay, so that is how we make the interact message show. We need to be able to hide it as well. So the way I'm going to do this is I'm gonna come under our Interact Collider. I am going to right Click on that components, we will add an event for end overlap. And here, too, out of the other actor. We're going to cast two R b p player to make sure that that's the one that ended the overlap that I'm gonna bring in a reference to r W B P. Notify air. We're gonna get that that I'm gonna drag out of this. I'm gonna type in play animation like so I'm gonna drag out of the W b P. Notify air, and I'm going to do a search for intro guitar intro animation. Plug this into the in animation. However, here the play mode for this animation is I don't want to play it forward. I want to play it in reverse. So make sure you make that adjustment, okay? And then when I want to do is I want to drag off of our play animation. I want to bring in a delay, node, not a retrievable delay. Just DeLay. And I want to drag off of my intro animation here. And what I confined if I drag off of that is a node called get end time, and it outputs a float variable. So that is going to be the duration of our delay. So that's going to sink this up really nicely. So once we get the end time of that animation, we're gonna drag off of delay. Actually, we're not going to drag off a delay just yet. I'm gonna bring in another reference to R W B A p notify air here. And the reason I'm gonna get a reference is because I need to drag aware out of this and type in remove from parents that node right there. So after this delay is done, I am telling this W b p notified to be removed from the screen. That's what this removed from parent No does then last but not least, I want to bring in another reference to my player here. Get him drag. Aware off of your player and typing can interact. We're going to set can interact like so only this time we're going to leave this unchecked . The idea being that we're going to tell our player that once they're not overlapping that trigger volume anymore, they're not going to be able to interact with that. Diess set out that that line trace that we scripted in the last video. Yeah, You can't do it. You need to be interacting. You need to be within this trigger volume and have the message up first before you can interact with it. Okay, so with that middle script, I'm gonna left click in drag around all these nodes. Type that Seiki tap that Seiki, not type that Seiki, And I'm gonna call this our hide interact message script. Okay, let me bring this all on the screen so you can see this In case you want to pause the video right here, make sure that you're reversing that pulley mode right there that you have this set the false. Let's compile and say this and play and see if this is all working properly. Ksor player overlaps and you see the ah, the message there float away. There it comes on their floats away. And if I do shift in F one right here, I can kind of minimize our window here. And you can actually see this script in the background. Firing off is I am currently ending my overlap. So watch carefully. And when I in my overlap watches script above, you can see it all fire appropriately, overlap and overlap Sweet guys that will do it all for this video. More to be done yet, but we'll see you in the next one. 64. Skill Acquire - Script #3: All right. Welcome back, everyone. In this video, our goal is to create slash set up a framework blueprint known as a player controller for the purposes of showing or hiding are W B p. Skill acquired. I'm talking about this guy right here. So we need a way to instruct our game to show this on the screen now, currently in our level blueprint. And if you don't remember how to access your level blueprint, come back to the main level editor, come under blueprints level blueprint. Currently, we are showing our skill acquired widget blueprint in a rather hacky way. We're just saying off of event begin play. We're going to create this widget and added to the view port. Now it's not actually showing in our game like my click player right now. You may say, Hey ah, it should be showing, But it's not. Why isn't it? The reason it is not anymore is because inside of our w b p skill acquired, we created all these animations. And at the very start of the animations, everything is hidden. So technically, technically, as of right now, we are still instructing our game to show this w B p skill acquired widget blueprint, although we can't see anything because we're not telling any of our animations to play just yet. Long story short Right now in our level blueprint, we can just disable this. We can get rid of all this because we're going to set up some of the framework now to actually call for this W b p skill acquired to appear like we actually wanted to. So I just deleted out all that temporary script in my level blueprint, and I'll compile and save that. Okay, so we talked about setting up a framework blueprint here known as a player controller for showing this W B P skill acquired. So the first thing we need to do is jump back to our content browser and let's navigate to the appropriate folder. I'm gonna be in Metro Vania Blueprints framework, and I am going to right click in some empty space over here, and I'm gonna come under blueprint class, and the type of parent class that I want here is a player controller. I like to think of a player controller as the sort of puppet strings that can control our character in game it could do other things such as bring up a pause menu, or in this case, we're gonna utilize it to help us bring on this W B P Skill acquired. It is if you read the unreal engine for documentation essentially represents the will of you. The player. Um OK, so I'm going to call this particular asset, Will call it PC for player controller. Underscore Metroid, Vania. Okay. And then I'm going Teoh, save it right away. Click this save all button. And when I need to do is I need to assign this player controller in our project setting. So I'm gonna come up here along the main toolbar access settings come to project settings, and over along the left hand side, you're going to click on your maps and modes and in your default modes. Over here, you can see we're using a side school or game mode. But our player controller class is currently this default player controller that they set up for you. What you want to do is click right here where it says player controller class in the drop down. And here is where you slot in your PC. Metroid Vania Player controller. Okay, so with that done, we can exit out of our project settings. There's no save button or anything to click on here. Let's go back to the main level editor and let's double click on our PC Metroid Vania Asset . Okay, There's nothing we need to do here in the view port. In fact, I'm going to start off by directing your attention over to the variable section. I'm gonna click and add a new variable, and this one is gonna be called W B P for widget blueprint learned skill. And what I'm gonna do is change the variable type and I'll change it over here this time to be a user widget, the object type user widget object reference. And if I compile this, I don't have anything slotted. Here is my default value. Don't worry about that yet. That's to come. We're essentially going to be feeding it a value in the next video. Okay, next thing I want to do is I'm gonna come over to my event graph. You have some notes here by default, but I'm just gonna left click drag out, delete those for the time being, and I'm gonna right click, and I'm gonna create a custom events. So just type in custom event into your right click menu, and we're gonna create one called show acquired skill. Okay, we're going to call this from another location in ah subsequent video here. So we're not gonna call this in this video just yet. When this does get called, though, the first thing we wanted to do is set game paused. So the idea is that we want to pause the game as soon as our player collects a skill. When we are presenting this widget blueprint, you don't want things to be going on in the background. Make sure that you check this box right here to actually pause the game. Then the next thing I'm gonna do is I'm gonna bring in my variable that I just created here . We're gonna get that and then I'm gonna drag off of here and I'm gonna say add to view port now again. Currently, this is an empty variable. There's no default value here, but we will set this to have a value in a subsequent video. So nothing but some prep work here, But that is all we want to do in this video. More work to be done to make this whole system complete. Let's go ahead and compile and save. And guys, we will see you in the next video. 65. Skill Acquire - Script #4: welcome. Once again, everyone in the last video, we went about creating this player controller and inside of our player controller. We added some script that is going to kick off when we call this custom events. In this video, what we're gonna do is we're gonna write some script to respond accordingly. Such as high to skill mash play a visual effect and sound effect whenever we detect our interact line. Trace, You remember we did that in our BP player Whenever we ah detected that line trades has hit a diess and when our skill can be obtained okay. And so we're going to kind of connect some of the dots year to make this show acquired skill, custom event actually fire off as well. Ok, so we're going to start off year working inside of RB API skill double jump. If you don't recall how to get here, that is in our Metroid Vania Blueprints, actors folder, BP skilled double jump. That's kind of our guinea pig here for all the different skills that we're looking to acquire. So let's work within here. The first thing I want to do is I want to create a function called player acquired skill effects. So right over here along the left hand side where we've got our function section, let's click the plus function button, and I will call this player acquired skill F X. Okay. And this function is, as you would imagine, is gonna play off some, uh, some effects in, um, interplay sound, etcetera. So the first thing I want to do when this function gets called is I want to tell our w b. P notify her here he contract and drop that into your graph. We're gonna get that and I'm gonna tell that to remove You want to select removed from parent? We want our notification to disappear from the screen, and by that it I mean, we want our message to disappear from the screen. OK, um, the other thing I want to be able to do. And first of all, let me back this up a little bit. If you don't see this variable right here, make sure that you click right here to show inherited variables. That's how you can see these group of variables in our interactive object variables category. So we're going to remove that from the parent The next thing we're gonna do is drag off into a spawn E Mitter at location. The emitter that I would like to spawn is going to be p underscore or pile explosions. Success. This is one found in the infinity blade effects pack. And again, you can use anyone that you want, but I thought this one seemed rather appropriate. So that's the one I'm gonna select now. I need to feed this a location. So what I'm gonna do is I'm gonna get my skill, Mecir, that is Ah, If I just tapped the f key, I can focus up on it. So we're talking right here. This sort of book mesh right there. I'm gonna get my skill mash. I'm gonna drag off of that and say, Get world location. That's the location that I want to spawn this emitter at. And I'm gonna play this emitter at a slightly larger scale. So I'm gonna set the scale here to be to for the x Y in Z to there to their into their Okay , Then I'm gonna drag off of here and I'm going to splay sound to d the sound that I would like to play. I will slot in my SFX skill acquired this sound effect right down here. Let's drag and drop that right on top of the sound automatically. Hook that up and I'm actually gonna click this drop down and choose the volume multiplier. I'm going to set that to be three times is allowed to increase the sound of that. And then off of this, I am going to drag off and I am going to actually, I'm not gonna drag off here. I want to destroy several components the moment that we acquire this skill. So I don't want to destroy the actor just yet. I want to destroy some components. The ones that I want to destroy gonna be our skill mesh our skill of the effects. So I'm dragging all these from the components panel, our skill light and our Interact Collider. We don't want to be able to interact with this once we have collected the skill. So we could drag off of any one of the eu's and simply say destroy component, Hook these up like so And I'm gonna align all these. I'm just gonna left click drag, right click. I'm gonna align these all right. And then I'm going to right click thes all do alignment once again and distribute vertically to make them all nice and organized here. And then I can plug them all into the exact same destroy component node. Okay, so that is going to be my player acquired skill FX function there it is on screen for you all in case you want to pause video here and get a good look at what that functions are going to be about. Okay? And with that, I'm gonna compile and save. Now, the next thing I want to do here is create are acquired skill script. So I'm gonna jump out of our function here and into the event graph. That's where we're going to make this happen. We've got our show message are hide, interact message. I'm gonna come on down a little bit, and I want to grab and events to start us off here. And the one that I am going to be looking to add if I right click is going to be objects interacted with now you can see as I'm starting to type things in here. I've got object interacted with call function I've got object interact acted with interface call. And I've also gotten add event for event objects interact with this is the one I want. Now, where is this coming from again? Well, this is that blueprint interface that we added in our blueprint in our class settings. You may have recalled that we added this into our parent blueprint. Before here is the inherited interfaces BP I interact that we created earlier and we were creating a call to that inside of our BP player in our interact script. Right over here we were shooting out of line trays and then our line we were checking to see if it hit anything. And then we were calling for object, interacted with two, then fire out, which is then reaching over to our BP skilled double jump in this case, and this will fire out. Okay, So what I want to do next is I want to bring in a reference to our player. We're gonna get that and I'm going to drag out of this and say, Has double jump. We're gonna get has double jump inside of our player blueprint. This is why I've got a lot of tabs open along the time inside of our player blueprint. We have a Boolean value known as has double jumped. Has our player acquired the double jump skill And by default, it is false. Jumping back to BP Skill double jump. We're going to evaluate this drag out of this type in branch to see if that is true. Does he already have the double jump skill? If it is true, I'm just going to simply print a string out that says player already has double jump exclamation point. And if it's false, I'm then going to drag out of my player. Type in has double jump. This time we're going to set has double jump. So this is where we're gonna interact with this skill diess. And then we're going to say, Does he have double jump? No. Okay, well, now he does have it. So it's gonna set that Boolean value to true honor Player. Okay. And also out of our player Gonna drag out, aware and type in skill acquired. This is this e newme. We created this e noon before this set. Skill acquired is what we're looking for. And we also want to set this skill acquired to be double jump. And you remember this is going to be important, because over in r w b p skill acquired if I jump on over to the graph tab here, we've got all kinds of functions that if you double click on him, were using whatever this value is in our skill acquired. E newme. We're wondering what that is to drive what should be populated on our screen things like, What should the mana cost be? What should the title of the screen be? All these sorts of things? What should the image be, etcetera, etcetera? That is why setting this e numa variable right here is so critical. Jump jumping back to a BP skill double jump once again. Okay, so once that is finished, we can then drag off of this and we can type in player. I can't see what I'm tired of being here. Acquired skill effects. This is this function that we just created right here. This is gonna place, um, particles and sound and destroy some of those components. Okay. Keeping our a flow of execution. You're gonna drag out a wire, bring in a delay, and I'm gonna set my delay here to be 0.75 seconds. Why 0.75 seconds? Because I'm gonna leave myself a node common here by right clicking node. Comment. That's the amount of time it takes for the V F X on skill collection To finish playing by that, I'm talking about this thing. This emitter right here takes about 3/4 of a second for that to finish up, so just kind of want to see that before we go on to the next thing here. So we're gonna delay for that amount of time, Then I'm going to create a widget. And the widget here that I want to create is R W B P Skill acquired. Okay. And then after that, what I want to do is I'm going to firstly, right, click and type in, get player controller. And I'm going to drag out of this next, and we're going to cast to our player controller that we just created hooking this wire in , like so. And the reason I am doing this is because inside of our player controller here, we just created this variable right here that is currently empty. W b p learned skill. So jumping back to our BP skill double jump. I'm gonna drag out of our player controller here, and I'm gonna type in set W B p Skill learned like this hooking in our execution wear like this. And the thing that I want to set in here is this created widget. Now, the reason I am setting this variable from here is because eventually in the next video, what I'm gonna do is after we create this widget and display to the player, I am going to destroy it from our player controller blueprint. And in order to do that, I need to pass this Ah created widget here to our player controller in order to do it cleanly from there. Okay, so then last up here of what I need to do, they need to drag off of here. And sorry, not just dragged right off of here. I want to show our acquired skill. Okay, so you remember in our PC Metro Vania, we've got this custom event for show acquired skill. I now want to call that from our BP skill double jump. So in order to do that, I need to drag out of our as PC Metro Vania and type in show acquired skill like so. And let me see if I can bring this monstrous bit of Scripture. Well, it's not that monstrous on the screen. Let me just kind of pan through it so you can get a good gander as to what we've all done here. Event object interacted with Make sure it's the event and it's got that icon there. Make sure you check this has double jump set your skill acquired in oum from the player to double jump, they're recalling this particle effect not well dysfunction. That's going to spawn particle effect and sound effect that we're gonna delay for 3/4 of a second. We're going to create this skill acquired widget blueprint. We're going to push that into the variable in our PC Metro Vania. And then we're going to call our show acquired skill Custom events to fire out here inside of PC Metro in Vania. So with that, I'm gonna jump back to BP skill, double jump and compile and save, and I should be able to jump in and play right now. And there's gonna be some missing things just yet. We're not actually going to see this W b p skill acquired just yet, but our game should pause. So let me just jump in and play quickly. Our player is going to overlap. This volume right here that's going to shore message learned skill. I'm gonna press the the B button. Or rather, I'm gonna be pressing the right arrow key in order to interact with this. And so I have. And our game is paused. Okay, that's where we should be at this point because there's still some more work to be done. If I hit escape from here, I do have some warning. So let's check out what this warning message is saying. Attempted to access skill mesh via property. Believable. Uh, okay. So if we click on our BP skill base right here, that will actually jump us to the appropriate blueprint where this error is happening. And I see what's going wrong here. We've got this timeline that's moving our skill mesh. In this case, if I click on this and tap the F key to frame up on it, this book, it's kind of bobbing this up and down over time, right? Well, when we collect this skill. We were actually destroying that component. If I recall correctly, inside of our BP skill double jump, our player acquired skill FX. Here is the function which were destroying that skill mesh. And what that error is saying essentially is Hey, we are trying to still bob up and down, but we don't know where you are any more skill mesh. So that's why it's throwing error. So something we can do here to fix this is I can just back up this skill mesh a little bit Drag off of this and type in is valid. And use this question mark version this note right here and then just reroute your execution wires like so this is basically a way of checking. Hey, skill mesh. Are you still around? Are you still valid? If you are, keep moving up and down. If you're not, don't keep moving up and down. So let's compile and save Jump in and play once again and try that interaction. Okay, The message appears, uh, tapping the interact button. The game pauses as it should. I had escaped and there are no warning messages, so that is good. Okay, A couple more videos to go through here to see this come to fruition. We're not done yet, so let's keep the momentum rolling. I'll see you guys in the next video. 66. Skill Acquire - Script #5: Welcome back, everyone. In the last video, we got to a point where we are able to interact with our skill. Diets were able to pause the game. We're actually creating this W B p skill acquired widget, although it's not showing due to that which blueprints, animations not firing yet in this one, we're going to make it so that our player can remove this skill acquired widget that you can't currently see and resume the game. That is, to a NPAs it. So a couple more videos to see this all come together before we get onto the day's activities here. Let's left, click and drag around this function, not dysfunction. There's been a script that we created in BP skilled double jump in the last video. I'm just gonna left, click and drag around it tap to see Key, and I'm going to call this. So what should we call this? Let's call this player acquires double jump. Okay, that's pretty good. Compile and save. Okay, So in this video, we're going to be doing some work inside of our player controller RPC Metro Vania. Before we do, I need to jump back out to the main level editor. We need to go back into our settings are project settings. Find the input section over on the left hand side. And we created in action mapping for interact few videos back in this one. We're going to create another new action mapping, not in access mapping in action mapping. Click this plus button. We're gonna call this action mapping exit skill a choir, and I'm gonna map this too. I'm gonna map this to the right keyboard button, right? Keyboard arrow. Essentially. And I am also going to map this too. Game pad, Base button. Right. And now you may notice these air the exact same buttons that I have hooked up to our interact action mapping, you may say, Why do you have them map to the same thing? Well, just kind of for cleanliness sake, I wanted to create a whole separate action mapping for this. And also the focus of this event is going to be focused on. Are you y you can actually shift focus of your inputs to you I to the game or actually have both. Okay, so with this created, I'm going to jump on over to our PC Metroid Vania. That's the player control. If you don't remember where that is, it's in the Metroid. Vania Blueprints Framework folder. Right. There's RPC Metro Vania. Player, Controller. Open that guy up and I should probably put a comment around this. Let me left, click and drag hit the sea Key show acquired skill. That's pretty good. And I'm gonna find some empty space right below this right click. And I'm gonna search for that action event that we just added called Exit Skill acquired. There it is now, One thing very important we need to do with this event. Note out here is with this selected over on the right hand side, I want to check, consume input off and execute when paused on Remember, our game is going to be pause as soon is that W B p Skill acquired is presented on screen. And in order to turn it off, I want to be able to fire out of this event. This event is only gonna fire. If I say yes, it can execute when pause. The reason I unchecked this consume input is because with a checked this would work on Lee once by un checking it it will be able to fire off again. So with that, I'm gonna drag aware off of our precedent here. Bring in a branch and the condition that I want to evaluate is I'm going to right Click and search for is game pause. And we're gonna plug that into a branch that's going to evaluate if our game is positive. Not if it is pause. We're gonna drag in r W B p learned skill here, drag off of this and type E and remove from parent. Now remember, this variable starts out empty, but as soon as we interact with our BP skill double jump, we interact with it. Here we create this W b p skill acquired widget inside of our double jump. And then we're taking the return value. That, and populating our W b p learned skill inside of our Metroid Vania here. So it's no longer an empty variable. Okay, jumping back to RPC Metro Vania, This is where we're going to say that we're going to remove this from the screen. Okay, After we're done removing that from the screen, I'm going to drag out. I'm going to search for set game set game paused. There's the function note for this, and we want this to remain unchecked. We do not want the game to be paused. Then I'm going to right click typing, get player controller and then I'm going Teoh drag out of this and say, Set input mo input mode Game on Lee. Now these are three unique options that you have. They're all kind of in the same category. You can see the tool tip as I hover over it says set up an input mode that Onley allows player input to our player Onley player input player controllers bonds to respond to user input. Basically, on Lee, the game is going to accept our inputs. Where is something like set input mode? You I only Onley au I widget will accept user input So here I want to say Hey Onley the game can accept input by that that's gonna essentially ensure that over in our project settings if we press the right key or the game pad Button writes that on Lee, the interact can have and not the exit skill acquired. Okay, after we're done doing this, I'm gonna drag out of our get player controller one more time and say Show a mouse cursor. We're going to set show mouse cursor and we're going to leave that unchecked to ensure that the mouse cursor does not show up anymore. Okay, so with this gonna drag out a marquee selection, Well, let me frame this up on screen so you can see what script we have just built when we press either the right key or the B button. Basically, whatever you set up to interact to fire off this exit skill acquired we're going to see is a game paused. And if it is, we're going to remove our widget blueprint. We're going to unp ause the game and we're going to ensure that Onley the game accepts our inputs. We're also going to make sure that the mouse cursor is not showing as well. I'm gonna left click and drag around this tap to see key Call this hide acquired skill widget blueprints. Okay, we're still not going to see our skill acquired widget blueprint appear on screen. But what should happen is if I hit play here, overlap this volume. I'm gonna hit my interact button game pauses and I should be able to press that same button again and it unp ause is like so. Okay, so again, I pressed this button associate ID with this event right here in our project settings. In this case, for me, it's the right key or the game pad face button, Right to exit our skill acquired menu and continue on with the game. Okay, guys, that is going to do it all for this video. One mawr important missing a piece here that we still have to address. And that is going to be ensuring that our widget blueprint skill acquired, actually appears on screen. When we interact with that skill di ous guys, that'll do it off of this one. See you in the next one. 67. Skill Acquire - Script #6: Welcome back. Once again, everyone, I am excited for this video because in this video we see this all come together. The goal in this one is to create some script to make our widget animations inside of R W B P skill acquired play. Once it is presented to the player, we actually have been creating this widget behind the scenes. You just can't see it because we're not telling the intro animation to play it. Also, in this one, we're going to fix it. Come to this pathway right here, content Metro in Vania Widgets. And let's double click on R W B P Skill acquired to do some work inside of here. We have all these different function tabs open. You can actually close all these now you don't need him Open. The one you need to be in right now is your event graph tab. And if at any time you cannot find your event graft, Abbott happens from time to time, you may click it off here, for example, as I just did just to demonstrate awaken get that back is by coming under the my blueprints panel and double clicking right there to jump over to a new event graph tab along the top. Okay, so in here we see three nodes by default. I'm gonna get rid of event tick. Don't need it. Event pre construct. Don't need it. Event construct. That is the one I want to work off. Consider this the event. Begin play for widget blueprint. So as soon as a widget blueprint is created, it's going to fire out of here. Okay, so I do want to do something right out of out of the gate here. Let's drag aware, often type in play animation. Which animation do I want to play right away? Well, I want to play our intro animation. And if I look over along the left hand side I confined my animations in the variable section you should find in your variable section Ah header called animations And you got a click this little triangle next to it to reveal all the animations that we created Back cover input pulse intro Over here in the designer tab. Okay, so the 1st 1 that I want to play here is our intro animation so plugged that into the in animation drag and drop it right on top there. Now the number of loops to play is set to one that is all hunky dorey. Note that you can adjust things like your playback speed straight away from here. Okay, the next thing I want to do is I want to drag off another wear and play another animation type in play animation. The next one that I want to play is our input pulse Drag that on top of the animation. Okay, next, I'm going to right click right below that typing and get player. Get player controller and out of this, I'm going to drag out aware, and I'm gonna take in set input mode and the in promote I want here is to be game and you I game. And you I So this is going to allow pressing of r B button B button on the Xbox controller to exit out as well. So I'm going to set. Ah, that's all well and good hide mouse cursor during capture. Yes. OK, next thing I want to do is I want to drag you wear out of our get player controller here, and I want to show the mouse cursor get show mouse. Could not get show mouse cursor sets, show mouse cursor or set to show mouse cursor. Okay, in the last video in our player controller, we actually wrote some script to hide the mouse cursor. That was a little preemptive. The reason we were hiding in here is because in this video, back in our WBB skill acquired, This is where we're telling it to show. Okay, so that is all well and good for that bit of script. Just gonna left click drag around all that typing play animations. But that's not the Onley thing that I want to do here before we even jump in and play. I also want to add some animations for our back button that's going to appear on screen. So over along the left hand side, we have a back button widget. It's this guy right here. Back underscore button on. When you select that in the variable section down in the details panel, you have some events that you can add for this. We want to add to events for this one on hovered. Click that and then find that back button once again, and we want to do something for on unheard uncovered is when you are not mousing over it. Hovered is when you are mousing over it and what I want to do here is drag any reference to our back hover animation dragged that in. We're gonna get that and I'm gonna drag out a wire once and say Play animation. We want to play or back cover animation when we are hovering over the back button and we want to play it forward that I'm gonna hit control C To copy this control V to pace. Make sure you plug in your back Hover into this in animation as well. Although when were unharmed Oring it. We want to play this in reverse. Now, if you remember, this animation is just going to scale up the size of the back button. Just a little bit. Gonna left click and drag around this tap to see key Back button hover slash unh's Vered animation. Okay, one, a little bit more of script to adhere is when we click on our back button. We want something to happen. So select your back button one more time and we want want to add an event for on clicked and off of this. I'm gonna drag off and save Remove from parent. Basically, the target here is self. So once we click on the back button, that is this button right here. We want this target widget to go. Bye bye. That's what this is going to do. Then we're going to drag off of this and say Set, game paused. We're going to say the game is unp ause leaving that unchecked. And then I'm gonna right click, get player controller and I'm going to drag off of this set input mode said input mode, Game on, Lee Like so And then last but not least, I'm gonna drag out of our get player controller and say show mouse, cursor, set show mouse cursor. This is going to be set to false as well. And I'm gonna drag a marquee selection left, click and drag tap that Seiki and call this unknown pause in return to game play. Now you may note that this script is very familiar here Were saying that when we click on the back button we want the widget to go away. We're going to unp ause the game direct our control back to the game and not show the mouse cursor if I jumped to RPC Metroid Vania, that is essentially the same thing that we're doing here on Lee were also saying it could happen not only if you click on the button, but if you simply tap the B button because look over here on our WPP skill acquired in the designer tab. We're saying, hey, pressing the B button on the Xbox controller that's gonna back you out of here, too, as is simply clicking on this. Okay, so with this, I am going to compile and save our WBB skill acquired. Let's jump in and play and cross our fingers that we didn't miss any steps and see if this system works. Okay? Character walks up to the skill Diess Notice that book just animating up and down our players going to, I guess, read it and learn the double jump skill. So it's saying, Hey, you can learn the skill I'm going to press the interact But note that when we do sound and particle all fire off and that book that's kind of hovering up and down is going to go. Bye bye. So watch this all goes away. Look at that. It knows that it's a double jump skill that were trying to acquire here. It's populating this entire screen with the right information, the right image, etcetera. And now I can click on here to make this go away, and it does go away. Now, the one thing I'm not sure that I saw there, let me just jump in and play one more time. Well, the button pulse did Did Playas Well, kind of jumped out, actually. Did that jump out? I'm not sure that it did. Let me just double check that input Pulse. Ah, yes. Okay, so the one thing I forgot here is back in our graph tab here, this input pulse, the number of loops. I don't want this to just play one time. I'm going to set this to zero because, as a tool, tip says it will loop indefinitely, which I wanted to do. So setting that 20 for input, pulse, compile and save. Let's try this one more time interacting. And now you're seeing are a button down there kind of pulse to grab the user's attention. That's exactly what I want. And that time I pressed the B button to exit out instead of actually clicking on the back button. So, guys, everything here is working as intended. Let me frame up each of these scripts years so you can pause the video here if needed to make sure everything is looking good. There's that there is the back button. Hover. Uncover. Make sure that this is in reverse. This one is forward. And then our UNP awes and return to gameplay. Make sure that is unchecked. Make sure that is unchecked. Job well done. That will do it all for this video. See you in the next one. 68. Skill Acquire - Sibling BPs #1: Welcome back, everyone In this video, our goal is to create copies of our BP skill double jump here and modify a few of the components in variables inside of them to make each blueprint unique until itself. So if you recall, if I play here, we've got this blueprint here, this skill acquire blueprint. There's diess, if you will, where if I interact with it, I will technically gain a skill of some sort. Now I say, technically, because we're actually changing a Boolean in r B P player saying yes, he now has learned double jump. Although we still have yet to script the double jump ability. 100 player that's to come later. But well, we want to do is make some duplicates of this blueprint and then just change out a few of the the variables and properties inside of it so that each diet is specific to a certain skill. Are player is going to acquire With that, all said, come into your content Metro in Vania Blueprints Actors folder. What we're gonna do is we are going to make a sibling blueprint a duplicate of our BP skill . Double jump here. Remember this particulary er, blueprint If I double click and opening up, It was a child of R B P skill base. So if that's a child of our BP skill base, making a duplicate of this would be like making a sibling. So I'm just gonna right click on this BP skill double jump. We're going to duplicate this, and this one is gonna be called B p Skill back underscore Dash for our back dash that I'm going to double click on it to open it up docket across the top. And the first thing I'm gonna change out here, over in our components panel is our decal skill. Select that. And if you jump on over to the view port, you currently can't see anything cause it's very far away. And if you come under this sort of a circumstance right here, what you can do is with a component selected simply right click in your view port to gain some focus and then tap the F key F as in focus to just focus in on up on your component. So this is the decal material for our double jump. I simply want to swap this out, so I'm gonna left click and I'm gonna look for a d cao back Dash Select that. So now you've got that sort of icon on your diets. Okay, next thing I'm gonna do is I'm gonna jump over to my event graph and in here I've got a few things I need to swap out. Firstly, I'm going to come underneath this Ah show Interact message script this one way up here. So make sure that this is the appropriate script area that you are in and because we're working on a BP skill back dash, we don't want to check to see if our player has a double jump. So we want to swap out this variable. And what we want to swap it out with is, if I drag out of my player here is has back dash get has back Dash, We want to find out if our player has the back dash. We're gonna plug that into the condition, not he has double jump. Okay, so that's gonna get swapped out. Uh, next in are acquiring of the skills you're gonna come down to this bit of script that's kicked off with this event object interacted with here too. We have this has double jump. We want to swap out this condition so drag out of your player and do has back dash. This is a variable that also lives in R B P player. So swap that out. That should be your condition. Likewise are setting of this Has double jump. Should be swapped out for set has back dash like so. So make sure you swap this one out and do not forget to check this box right here to say yes. The player now has the back dash ability. Okay, so swap that out. And then over here in this e noon variable from the player we're going to say, What skill has the player acquired Will not the double jump. This is our back dash. We want to set this to be double jump. Okay, so that's looking pretty good for that. So let's compile in save and we can exit out of this one. We're done with that one. So next we're simply going to create another duplicate of our BP skilled double jump here. Let's right click on this. We're going to duplicate this one will be called BP Skill. Let's call it W magic Underscore lens of truth. This is gonna be a white magic skill that are player will be able to obtain. Let's double click on this guy to open it up and docking it along the top. There are some things we want to change over in the components panel and I'm going to start off by selecting this diess and let me also jumped to my view port here so we can see these changes. And again, I got this weird situation where I can't see anything. So I'm going to right click gains and focus tap the F key that'll zoo me right up on to my diess. So with my diess components selected over here, I am going to change my scale to be 1.5 in the X. The why is going to remain at 0.3 and the Z is going to stay at ah, 0.8. So it's gonna be a little bit wider here, the skill mesh. Select that next. Currently we have the sort of book looking thing gonna change that out with. Do a search for a sphere here, different ones to choose from. Ah, this one's got the path. Engine engine meshes, engine basic shapes. Let's go with the engine. Basic shapes. And it says the approximate size and a tool tip There's 100 by 100 by 100. I think that was one I had selected originally. Let me skill it down a little bit to see if that is, in fact, the one that I was looking for. I'm gonna lock my scale settings here and set this to be a 10.4 across the board. Yeah, that's about right. So just to just to reiterate here, when you're looking for ah, which sphere you want to slot in? I've currently got the sphere in my engine Basic Shapes folder. This may be worth mentioning as well if I come under my static measure selection here, and I've got these view options if you don't have engine content enable, this is a way to show engine content right there. So I just went to view options and checked on my show engine content that will make it so that back in your content browser here, if you scroll down to the bottom, the engine content folder becomes available. There's a lot of different meshes materials, its center etcetera in here that you can also use for your project. So just f y I you can enable engine content from where I just showed you or even down here in your content Browser view options show engine content. Anyways, back on task here for BP skill w magic. So our skill mash is going to be this sphere right there. We got the scale settings set like we want. I do want to change out our material here to be not default material, but r m I underscore w magic. We created this material instance earlier, and that's going to be our white magic material that we want placed onto this orb. Okay, flipping over my page Oh, notes here. Next thing I want to change out is my skill. Vfx here. I don't want this vfx. I want my p underscore w magic. We created some of this stuff earlier. Now it's coming into play. So you see that in place? I do want to change out the scale for this to be threes in the X y and Z and I'm gonna change my Z location here to be 100 something like that. Okay, Next, I'm going to select my skill light. I'm gonna change my intensity here to be well, you can really fiddle with this. I'm gonna try something like five. Just kind of damping that a little bit. I mean, you can go extreme will Something like 500 it can get much, much brighter. You know what? I think I'm gonna leave it at its default. I may may fiddle with that later, but we'll leave it at 25. The light color, though I do want to change out here, I'm going to select this and in my r g and B. Actually, I think Is this the color that I want? Yeah. So I had this color save right up in my color picker. If you don't have the RGB values for it, here is the specific R g and B values. And if I click OK here, you can also punch those in its to 18 to 18 and 2 55 to give you the color that you're looking for. And if you don't already have this color saved, you can just simply drag and drop it left, click and drag it up here to save it in your color picker saved colors the attenuation radius. I'm gonna leave that at 1000 as well. Maybe I will choose to adjust that in a later time. Ah, let me see. What else do we want to change here? We're going to select candles. 01 Currently, it is invisible. I'm gonna select that. And I'm gonna hold down control in select candles. 02 over here. And with both of those selected down in the details panel, I'm going to check those on to make them visible. Same with candlelight. 01 holding down control in selecting candlelight 02 I am going to set due to do auto activate for these two particles to be on, it's gonna add that little glow behind it. Candle diess is one, and I'm gonna hold down control and select candle diess to gonna select both of those in and down in the details panel under rendering visible. I'm gonna check those on. So those candles appear on this extended diess and detail skill. Need to select this because I don't want that I cut on there. I want to change it to be my decal lens of truth. Sort of that that eyeball icon right there. And then we had this statue that we are currently not showing. It is inherited, though. That was our static statue. Static mesh. Right. They're gonna scroll down the details panel and under Orender, let's make that visible is well, And now we've got that sort of a look for our lens of truth, magic skill that we will acquire. Ah, let's just see, with all that done, let's compile and save right away. And we need to change out a few variables here. And the first thing I want to change is over in our variable section, you should have this interactive object variables. Click that little drop down here, this interact message. And if you don't see these parameters again, these variables you can click right here and show inherited variables anyways are interact Message that we want for this is not gonna be learned skill, but rather learn white magic to make that change. So that's what that's going to read when we approach this diess. And then I'm gonna jump on over to the event graph and just like we did in the last blueprint that we altered a few things to change up in here. So we're gonna start off in our show, interact message and here instead of has double jump me just kind of move this off to the side. We want a drag off of our player and do a search for has lens of truth. We're gonna get that. And this is gonna be the thing that we plug into our first branch here, not the double jump. So we're gonna make that change right there in show, interact message, then coming under our player acquires double jump, bit of script, the bit of script that starts with your event object interacted with. We're going to swap out this variable for has lens get the lens of truth. We're gonna make that swap right there and then here we're going to swap out this setting of the has double jump for lens of truth is my search I'm going to set has lens of truth. Make sure you check that check box Very important. Keep the flow of execution going like so. And of course, we need to make sure that we set our e newme here to not skill acquired, double jump, but skill acquired lens of truth as well. Okay, so with that we have created to sibling blueprints. Let's call it, Call it a day on this particular video. So let's compile and save one more time. Let's just test this out really quick. I'll place a lens of truth one out there, end here to drop that down to the ground. I'm just gonna scooted back a little bit. I'm gonna play. So there's our learned skill. That's for a double jump in. And I'm gonna approach the lens of truth here says Learn white magic. All right. And as you can see, the screen that appears when I interact with the lens of truth has now updated appropriately as well. Pretty sweet. Alright. More work to be done here, but that will do it all for this video. See you guys in the next one 69. Skill Acquire - Sibling BPs #2: Welcome back, guys. In the last video, we started to make us some sibling blueprints of our BP skill double jump here. So we have a blueprint for acquiring the backed ash skill as well is our lens of truth white magic skill. I still have three more that we got to create one for our white magic. Missed one for a black magic fireball in one for our black Magic Electoral spark. This is gonna be a lot similar to the previous videos. I'm going to try to move a little bit faster. You have the benefit of pausing, so let's get right to it. Okay, I'm gonna start off here in our content. Metroid, Vania Blueprints, Actors folder. And I'm gonna create a sibling of our BP Skill, white magic, lens of truth here. So right click on that in duplicate and this one is gonna be called BP skill, White Magic missed. And then we're gonna double click on this to open it up right away, and I'm gonna get rid of my lens of truth from the previous video. And I'm going to start off in my view port and again, I can't see anything. And I want to change out a little bit about this, starting with our decal skill. Select that guy. Right Click in your view, port tap the F key to focus upon it. So we want to change out that detail right there instead of lens of truth. We're gonna change it to decal. Missed. Simple enough. The rest of this, I want to keep all the same. Okay, but I do want to jump over into our event graft. You swap out some of the variables referenced here, So just like we did before, we're gonna come under our show Interact Message script. And here we have the has white magic lens of truth we want to drag out. We're going to do has miss. We're gonna get that that's gonna be plugged into our branch. All right? And then we're gonna scroll on down to where we have the player. Still says player acquires double jump. I probably should probably should update these comments is Well, I didn't update it in the other videos, but I should update this 12 player acquires miss, because they're not gonna be obtaining the lens of truth in this one. We're going to get missed get. Has white magic missed? We're gonna plug that into this condition. And here I'm in a drag out of player and type in set has missed. Make sure you check that box. Make sure you check that box. Keep the flow of execution going. Like so while we delete out the old note here and then make sure that you set this e newme too mist. Like so that will ensure that the appropriate message appears on the screen when you actually obtain this. Okay, just double checking my notes here to make sure we got everything we do for our white magic . So let's go ahead and compile and save this, and I'm gonna come back to my content browser here. I'm gonna drag this out into my my level here. I'm just dragging these all out so that I can test them. At the end of this video. I'm going to set the wide to negative 2 50 Hit the n key to drop this on down to the floor . Like so? Okay, we are good with our skill. White magic. Let's go on to create our BP skill. Black magic fireballs. So I'm going to start off with? Uh, it could be either the lens of truth or the Miss Year Doesn't really matter. I'm gonna choose my missed. I'm gonna right click on it. Duplicate This one's gonna be called BP Skill of Be magic Underscore Fireball Double click on this guy to open him up. I'm gonna get rid of my previous tab here to focus on the fireball. I'm gonna hop on over to my view port right away and I'm gonna select my skill. Vfx firstly, right over there. Right click in the view Port Tap the F key to focus up on its Kelo Now f key to focus up on it. And it's not focusing up. Let's go to my diess and tap the f key to focus up on their we dio. Now I will select my skill, the effects and I want to change us out to be a p underscore. Be magic. It's got that sort of purplish look about it. I'm fine with all of our transform settings here, but I do want to change up my skill light to go ahead and select that, um the first thing I want to change out here is the color. So you can select this color bar right here. And you should have this sort of Ah, I don't know what you call this color. Purplish red color from earlier. If you don't have these values, here are the r G and B values and you can drag and drop this up to the color picker bar here to save it. Click. OK, this is what the RGB values are from the details panel and we'll leave everything else here the same the intensity of the Attenuation radius. Maybe we'll go back and fix that at some point. Okay. Next, select your decal skill. We want to change out that icon, not the decal missed for this one, but rather the detail Fireball the next What I want to change out is a different statue here. So select this statue and the statue message we're going to select is going to be not the stairs. It is going to be type in statue underscore crumble. Underscore R k. This is in the soul cave pack, and we'll let that load in a little bit and it's kind of down here, So got a just a few things here in our transform settings. I'm going to set the wide to be negative 1 50 The Z is going to be 200 and the Z rotation is going to be 90. So it's facing kind of like that. So we're gonna have a little bit different look to our diets for our black magic skills. One thing I did not change out yet. Waas the material on our mish We've still got this sort of white magic mesh on our material , uh, material on our ah sphere Here. Let's change this to m I underscore. Be magic. So we got that look going on as well, All right. And with that done, that's looking pretty good. As faras, the visuals go. Next thing I want to change here is over in the variable section. You should have this interactive object variable section. If you don't, you could make it show up by clicking right here in the my blueprints panel showing inherited variables. We want to select our interact message here and swap this out to be learned Black magic. With that done weaken jump on over to the event graph and swap out a bunch of these variables like we've been doing. So she lets go to your show, interact, message, drag out of your player right here, and we're gonna do a search for Fireball. We're going to get has be magic. Fireball plugged that into the condition there. Then come under. The player acquires. I'm gonna change this to B Fireball. I could probably change out this print string. I really should be diligent about that as well, to ensure that we get the proper message. If something is not working appropriately, in fact, between videos, I think I will go back and fix us up for all my blueprints here so that this particular comment is correct as well as my prince String. I'm gonna drag on my player right here in typing has fireball. We're gonna get the has fireball plugged that into our condition there until eat. Then out here, we're going to set our fireball. Just do a search for set has fireball. Make sure you check that box, keep the flow of execution going. And then, of course, change this e noon here to be skill acquired Fireball, that's looking good. Compile in. Save that. And then we got one more of these to do. Let's exit out of here. And with our be magic fireball created let's now right Click on that guy, Duplicate that one and we will call this BP skill Be magic Electro e lec tro spark, Double click and open it up Docket across the top. Here, go to my view port. I am going to select my detail skill in the components panel Right click in the View Port tapped the F key to focus up in on it and straight away I am going to change out my decal to be the decal Electro spark like so everything else here can remain the same. I will jump over to the event graph, though, and what we need to swap out here is not be magic Fireball, but e electro spark We're going to get has electro spark plug that into that condition like so that was in the show Interact Message section, a script that I'm going to come under the player acquires. I will say electro spark play already has electro spark and I'm gonna swap out three things here. So has e electro spark and then set has electro spark electro spark. There's the center right there. Again. Make sure you check this check box swap around the execution wires here. We're gonna get rid of that and over to the right here. We gotta change a skill acquired to be electoral spark as well. Okay, let's go ahead and compile and save that. And just know that between videos here, I will go into all of my sibling of blueprints here and change out this comment right here to say, player acquires whatever skill it is. And I will change out my prints. String here to be player already has whatever skilled that this is meant to be. Okay, lets place all these within our level in Let's police are fireball out here. I'm gonna set that back a little bit. The n key to go negative 2 50 in the why here? Because all my elements are. And then I will do my electro spark. Let's do the why at negative 2 50 is well, set that back at the N key once I raise it up into the air. Okay, let's give this a play and see if we see any flaws I'm gonna collect all six of these. So there is my character. We're gonna learn the double jump skill. Okay? Hitting the B button to backing out here. Now we got learned another skill. This one's gonna be back Dash. Ah, I see. It still says, learned double jump in there so I can see that this message is flawed right here. So I'm gonna have to go back and fix something up there that still screwed up. Let's go into our back dash skill back, dash. And here in our player acquires again. This should say back dash right here. So I'm gonna change that right away back. Uh, and player already has back Dash C. One thing I failed. The change here was a skill acquired was left on double jump. I got to make sure that this is said to back Dash. That's why we test, compile and save. Let's jump in and play once more. Okay, this should be double jump interacting, learn, double jump hitting be to back out of there, interacting. There it is learned back, Dash and that description is kind of hard to read. I might change the text on there eventually, but that's that's kind of difficult to read that my change out font style on that eventually. Okay, let's go to Lens of truth. It says Learn White Magic says learned lens of truth. Everything there is looking OK reveal hidden passages and platforms, etcetera. This is learned white magic again. This one is learned, Miss. Now I can see are icons up here Look rather office We can go and fix. That is well, but let's just plow through the rest of these. I could see the rest of information is correct, but yeah, those icons up there look terrible. So you can go ahead and fix that. That are fireball learned. Black magic. Here, we're interacting. Cast out. Arrange fireball man. It cost five. That looks pretty good. And then last but not least learned electro spark everything that looks good there. Let's go back into our missed blueprint. Double click on this and see what's wrong inside of here. And sorry, this isn't where I want to be. I know where this data resides. This data resides in our player Blueprints are just a momentary brain fart there. We want to jump on out of here and we want to go into our content. Metro in Vania Blueprints, characters open up our BP player, because over on the left hand side, we want to seek out our magic white mist category are missed data and over on the left hand side, we've got our skill icon. If I expand this out there it is, right. There are image size is 5 12 by 5 12 Let's try a smaller size here. Let's go. I'm just gonna go. I don't know something like 200 by 200 and I'm going to compile and save this and let me jump back in and play. Let me go back. Let me just acquire these really quickly. That size looks pretty good for the back dash lens of truth. That image size looks pretty good for those icons of top There in the banner. Now our missed Let's see, that looks a little bit better now. Maybe we could scooch these icons over to the left and right a little bit, but I am gonna live with that for now. All right, guys, we have created all of our sibling blueprints for all of our different skills. We can quote unquote collect all these skills. Now what's left to do is to create an interface, to swap out things like white magic skills, black magic skills and actually hook these skills up a lot of work ahead. But it would be it will be a lot of fun. We will see win the next video. 70. Double Jump - Jump Script: Welcome back, everyone. In this video, our goal is to edit our existing jump script to allow our player the ability to double jump . We've gotten to a point where we can interact with all of these diocese and collect a skill . But the skill that we collect is actually not functional yet our players so thes next bunch of videos are going to be making some of these skills actually function. So the first thing you should do is find your BP player located inside of our Metro Vania Blueprints characters folder double click on her to open her up. And the first thing I'm going to do is I'm gonna create a few more variables. I know we've got a lot of variables in here, but we got a few more to create. So just going to click this plus variables button and the first variable I'm going to create is going to be called be lower. Case be is double jumping question mark. Now, with that created, I am going to move this into the category of our skill jump skill double jump right there so you can see that it is in our skilled double jump category. Just because I'm super anal like that, I'm gonna just reorganize this by dragging and dropping it to be next to our other boolean variable. Now, what are we gonna be using this one? Four were actually going to be using this in a little bit of our scripture and a little bit . But what this one is going to be doing is it is going to be a variable that gets passed on to something called animation blueprint to make or to instruct our character to actually play another jumping animation. So this is laying some of the groundwork for that. Um, okay, with that one created, I'm going to create another variable here, plus variable this one I am going to call Jump Count this coming up over my details panel will be an integer whole number. And I'm gonna put this into our skill double jump. Categorias well, and I'm going to drag this above my double jump data just to be organized. Next, I'm going to add another variable. This one is going to be called double jump velocity, and this is going to be a vector variable. And I will also put this in the same category of skilled double jump, get a drag and drop it above like so And then I am going to compile because I've got some default values I need to set in here. I'm going to start with our double jump velocity. Since we already have it selected here. I'm gonna set rz velocity here to be 1200 you're gonna see this variable coming to play here in just a little bit. Our jump count. We want that to be a zero by default and are is double jumping, not has double jump, but RB is double jumping. That is going to be false by default. Okay, it's next. What you need to do is we're going to jump over to our jump script that we already have existing and again, we're inside of our BP player and we're in our move set tab. If you remember from earlier in the course, we move some of our jump functionality over to this moves that tab. If you can't find this, it is located. Just gonna scroll up in my my blueprints panel if you come under graphs. Move Set. That is where you should be able to find this bit of jump script that we currently have existing. Okay, so what I need to do is give ourselves a little bit more space years. I'm gonna move my landing script on down a little bit, and I'm gonna take my comment box for Are jump script that I'm just gonna expand this out because we're gonna adds more script inside of here can move this. Stop jumping a little bit further down like this. Okay, so the first thing that I am going to do is I'm gonna move this off to the right, and I'm going to bring in a branch known right about here. I'm gonna hold down the B key B as in boy Left click. And I'm gonna say, once we press our jump button, we're gonna go into our branch. And now the first question I want to ask is, Do we have with our skill double jump? So here we've got this variable has double jump, and by default, it is false. But when we interact with our blueprint actor, which one is our skilled double jump double jump right there. Gonna double click on this guy inside of our BP skilled double jump When we interact with this thing, This is where we are going to find out. Hey, do we already have double jump? Sorry, that's the wrong area. Let me just scroll on down here a little bit. It is in our player acquires double jump within here. We're setting our has double jump to true. Okay, So jumping back over to our BP player. That's the question we're asking when we jump. Hey, do we even have the ability to double jump? So make sure that you're plugging in the appropriate Boolean variable here. R B has double jump. We're gonna drag and drop that on top of our condition, like so and out of the false branch. From here, we can plug this into the branch that we already had existing previously. This was checking to see if we were falling and if that was false, we would allow the player to jump and play the jump up f X okay. Off the true branch. When I want to do, it's dry, got a wire and search for a switch on int node. You can type that into the search bar here and this is the one you're looking for. Switch on int now with this No, Does. It takes an input here. It takes an imager input. And depending on what the value of this imager input is weakened fire out of different pins . And we can add more pins along the right hand side here by clicking one time by clicking its second time. Because I'm gonna have what to do on our first jump and then second jump. Now, for our selection here, I wanted plug in our jump count drag and drop that right on top of their. Okay, so we're gonna be working off of our zero pain here. If our jump count is currently zero, which it is by default, then what I want to do is a bunch of this stuff down here. I can literally copy all these knows right here. Our character movement are is falling. Our branch are jump function and are jump up FX. I'm gonna hit control C and then I'm gonna come up here and do control V. And so if our jump count is zero, I'm gonna wire this in like so. And then what I'm gonna do is I'm going to take our jump count Here, bring it on over. I'm gonna get the jump count, and then I'm gonna drag off of our jump count, and I'm gonna hit the plus symbol, not the plus six, but just plus, and you've got this note here called Increment INTs. This is kind of a special note in that when it will automatically do is it's going to add one to our jump count. There's another way that you could do this and I could say Jump count Plus and I could do integer plus in danger. And I could say, plus one. And then I could drag our jump count right here to set that. And I could do something like this instead. If I just unhook this, this is this set up right here will give you the exact same result as this increments. INTs node Right here is just kind of like a short cut. Okay, so that is going to then make our jump count, be one. And if we then press our input action jump again, it's gonna say, Hey, do we have the ability to double jump if we dio and our jump count is now One. After we've jumped one time over here, we can then fire out of here. Now, note that even at this point, if I was to jump in and play and I was to interact with our diets here to learn our double jump skill exiting out of there, and then I hit the space bar if I tried to double jump, it is not going to allow me to. So I know that that is still going to be broken at this point because we're not finished. Okay, The next thing we need to do is work off of our one branch here and we're going Teoh, let me flip over my page notes. The first thing. Well, I'm actually gonna move this little bit of script out of the way a little bit more. Okay, The first thing we're gonna do off of this one, Branches, I'm gonna get another reference to our jump count. We're gonna get that. And then, just like we did before, I'm gonna drag off of that hit the plus symbol, and I'm going to do an increment int. So immediately after we've jumped one time and we come through here. We're gonna say, Hey, increment are jump count to be to and off of doing this. I'm going to bring in RB is double jumping. We're gonna drag that and make sure that it's the appropriate Boolean is double jumping and I'm gonna set this and I'm gonna set this to be true. Now, this is going to come into play a little bit later on the importance of this. But what this is going to instruct our character to do is to play another jumping animation . Okay, so it actually looks like they're kind of jumping off of mid air, so that's gonna come into play in a little bit. Okay, Next. What I'm gonna do is I am going to bring in our character movement component. You can drag and drop that guy in here and off of this. You're gonna drag off of here and you're gonna say get velocity. It's at the very bottom when you type in, get velocity inside of our character movement component. If I select that in the details panels, do a search for velocity. You've got these velocity settings right here. So all I'm doing here is I'm saying, Hey, character movement I want to access your velocity settings. So what I can do with this is I can right click on this velocity pin right here. If you right click on that, you can split this struck pin like so Well that I do is transformed the note to look like this. Now you have access to the Velocity X. Why in the Z I'm gonna bring this up a little bit because off of my character movement component once again, I want to drag off and I want to set velocity and make sure that this execution where is hooked in like so but off of this velocity input here too. I'm going to right click and I'm going to split the struck pin And what I want to do is I want to say, Hey, I I want the extra remain the same I want the wide to remain the same Although the Z I want zero that out in order to make this double jump work like I wanted to I want to zero out the characters Z velocity. That's the speed of which there they're falling or rising. And the reason I am doing this is in order to make this look right. I I experience this retesting you We have to zero out the Z velocity. Then we'll weaken. Dio is we can do this cool thing by dragging off of here called Launching the character. There's a function called launching the character and all we need to do here since our target is ourself are BP player is feed it a launch velocity. Well, that's why I created this double jump velocity variable Because I want to make our Z launch velocity B 12 hundreds so I can drag and drop that right on top of our lawns. Launch velocity right there. And then the rest of this I'm just gonna extend this out a little bit more, is going to be a little artistic flair, some V effects and SFX. So off our launch character, I'm gonna drag out aware type in play sound. We'll do a two d sound shore even though we could do a localize sound to the sounds are easier. And the sound that I want to put in here is gonna be called Start Simulate que that guy right there. Um, the tool tip will show you the path that it's in. It's in some of the engine content folder, so I'm gonna slop this in. But if you don't have access to this and wondering how did I get that? If you come under your view options right here in your drop down, you can check show engine content on, and that will make sure that this sound effect is available to you. Okay, so then after that, I'm going to spawn emitter at location. I want a little particle effect to play, and I want this to play. Ah, the emitter that I want to play here is going to be ah p underscore Hammer Sparks. And that was located in my infinity blade effects pack If you're wondering where that one came from and the place that I want this effect to play is going to be essentially at my characters feats. If I jump over to my view port here and I've got this jump v effects spawn point, that's basically at my characters feet right there. So I'm going to jump back over to my moves. That tab I'm gonna bring in a reference to that that I'm going to drag off year and say I want to get the world location of that. That's where I want to be spawning this visual effect, Okay. And then in addition to that, I want to do like I did before where I am going to call our jump effects function that we created earlier. Flipping my page. Oh, notes. Then what I'm gonna do is I am going to put in a very, very short delay. Very tiny delay drag off here to search for delay. Node. I'm gonna set a delay of 0.5 seconds. And then this is double jumping center that I had before. Well, I said it to true right here, and I'm doing this again just to make it so that our character can eventually play another jumping animation over here. I'm gonna make it so that our is double jumping. We're gonna set that one more time, I'm gonna set it to be false. So again, make sure that you've got this Boolean appropriately set to false and that it is Thebe is double jumping and let's jump in and play and test this out. So our character is going to currently Well, I could jump. I cannot double jump. Right? But im gonna interact with our skill. Diess here to learn double jump. Okay, now it says that I've learned double jump. Now you'll notice something. I will be able to double jump now 12 But you'll notice a couple things. One. When I did that, my character didn't play an animation on that second jump. And secondly, if I hit the space bar, I cannot double jump again. No worries on that. We are going to fix that up very, very soon. Here, let me give you one last look at the script here before we close this out So you can see where our jump script is currently at. If you need to slow down the video or posit, this is where our jump script is currently at. Make sure that you've got the has double jump in. This branch has double jump. We're switching on in here are dumped. Jump count is zero by default off the zero branch. We're checking to see if our characters falling here. We're incremental. Car jumped out Coming back to our switch on and off The one branch we're gonna increment are jump count again. Here we are setting are is double jumping bullying that we created earlier. Again, this is going to come into play for calling a second jump animation here were briefly zeroing out our characters Z velocity and then launching the character up into the air. If you really want to have some fun and see how high you can set your or make your character double jump fiddle with that Z value to make your character double jump as high as you want her to jump. They were playing a to d sound start simulate There is our hammer sparked the effects responding that are jump of the effects spawn point They were calling our jump up effects function delaying and then setting our ease double jump here to false all right and then off of this first branch. If we don't have the double jump, all we're going to do is just see if our characters falling and then jump and playing the jump effects. Okay, guys, that is going to do it for now. We will see you all in the next video 71. Double Jump - Land Script: Welcome back, everyone In the last video, we made it so that when our character interacts with our double jump skill Diess here that our character can actually double jump. Now there were some imperfections, some flaws with our double jump yet, but we're going to start fixing them, starting with this video in this video, our goal is to reset our jump count Variable are variable upon landing and also to make its our player can quote unquote stick the landing briefly before being allowed to move. So we're going to be working inside of our BP player here. Come to this directory to find your BP player. Double click on her to open her up. And we were inside of our move set tab here. That's where we had our jumping script that we were working on. Last video is well as our landing script. And this is where we're gonna be doing work in this video. If you don't remember that moves that have we can access right over here in our graph. Stab. Now we did all this bit of script on the land in a previous video. We need to extend this out a little bit more to account for our double jump. It's gonna be pretty simple on our event land. We want to come to the very end of our existing script year right after we are doing this playing dynamic force feedback, and all we need to do here is bring in our jump count, drag and drop that in. We want to set it and we want to make it hooked up like so we just want to set our jump count to zero, he said. They were saying, Once we have landed, we want to set our jump count back to zero. That's literally all you need to do for this one. But I wanted to make it optional to have our characters stick the landing as well. So in order to make your character stick the landing instead of moving immediately upon landing, you would add this bit of script. So we're gonna bring in our character movement component and off of this gonna drag out aware. And there is a note called Disable Movement that is contextual to our character movement component. Let's wire this in like so So we're saying upon landing we're going going to disable our characters movement momentarily. Then I'm simply going to drag off of here, type in delay. And apparently I can't spell delay. And this is how long you want to delay your character for before allowing them to move again. How long they're going to stick that landing for? I actually like this default duration here, but you can fiddle with this to make your character stick more or less. Then I'm going to drag out of my existing character movement component that I already have in here. And I'm gonna type in set movement mode, character movement, set movement mode. And if you set your new movement mode after this delay to be walking, that will make it so that you can move your character again. That's kind of important right now, what I'm gonna do is I'm gonna left click drag around the set of nos hit the Seiki, and I'm just gonna call this Optional makes Carrick Ah makes character stick landing before being allowed to move again. Okay, I'm just gonna pile here and save. I'm gonna gie up on in. I'm gonna interact with our double jump here just because I can Yes, I got the double jumps. So jumping, jumping, double jump stick. You see that short stick before she was allowed to move again? Jump stick Right now just to show you this If I was to set my duration here to be, say, one second This is not gonna look great clicking play if I jumped And now I move jump and I'm still holding with right so fiddle with that value To make your character stick the landing I found 0.2 seconds to be lovely. With that, we can compile and save guys. That's all we want to accomplish in this one. We will see you in the next one. 72. Double Jump - Anim BP (Event Graph): Welcome back, everyone. In this series of videos we've been working on getting our characters double jump, skill functional. One thing that is still missing is that when our character actually double jumps, they don't play in animation. They just kind of pop up in the air playing the animation that they were previously. We're gonna fix that over the next couple of videos here. And the goal in this one is to simply demonstrate how to access and open something called animation blueprint and how to pass variables from a character blueprint to an animation blueprint. We need to be able to talk past information from our BP player to this animation blueprints that we construct our player to play the appropriate animations. Okay, so an animation blueprint, we've got two ways to access it. And I want to show you those ways now. Ah, one is if I come to our content Metroid Vania folder. And then I come into our animations right here, right here. We've got our Countess anim BP. You could double click on this to open that up and right way. It opened it up to something called a state machine here and this is where we get to actually direct our character here, which animations to play and when. That's one way to open it up. I'm just gonna exit out of here quickly because I want to show you the other way to open it up. The other way to open it up is to be inside of your BP player, double click on your BP player and then over in the components area. If I was to click on our mesh and show my details panel right here with our mesh Selected are an M. Class says it is the Countess Annam BP. And if I click this little browse to asset in the content browser that can jump you over to our anim BP as well to then double click and open it up. So we are on the blueprint tab of something called Persona. Here in Unreal, you can access things like animations and our skeleton from here as well. What I want to do right now is jump on over to the area where we are going to be passing animations back and forth. That's gonna be done over here in the event graph. So I found the my blueprints panel and double clicked in our event graph over here. And what you see is currently this flow of execution coming out of this event. Blueprint update, animation. You can think of this sort of as in event tick. Essentially, what's happening here is it's constantly firing out of this event right here and what it is doing. It's essentially setting certain variables in here, such as our characters speed and checking to see if our character is in the air or not. Okay, I'm just gonna reconfigure this this event graph here a little bit to make this a little bit easier to read because we're going to be passing a lot of variables back and forth between our character blueprint and this animation blueprint. So I'm just gonna be doing a little restructuring here, So I've got this update. Animation is valid off of here. You're going to see this. Try to get pawn or pawn owner, and this is valid. I'm gonna drag off of this is valid pin right here. And I'm gonna bring in a sequence node. A sequence note is essentially a handy way of splitting this one signal into many signals. gonna drag us all over to the left hand side here a little bit. And with this sequence know what? I am going to add another pin and I'm gonna make it so that out of this then zero pin we're gonna do this whole setting is in air. I'm just going to kind of reconstruct it like So Now I find it really annoying that this try to get upon owner is flowing way up here is well, so I'm gonna fix that by simply right clicking and typing in, Try gets upon owner. That is the exact same notes. I'm gonna plug it in up there. I'm just doing some tidying here for some groundwork that is to come. Okay, so that's gonna be off of our then zero pin from our sequence note. Let me just try to frame this up a little bit better. Okay? I'm gonna double click on this is well to bring in a reroute noon just to try to keep things tidy. Okay, I could actually break this connection off of the is in air because I'm gonna have everything coming off of our sequence note. So then, out of the then one pin. I'm going to drag all this stuff over closer to this sequence pin. But then one can flow into here and here, too. I find this really annoying that are, get upon owner is having that wire dragged way out there. I'm just gonna hit control C and control V to copy and paste that and I will do, like so here and already I'm liking the organization of this much better. Double click on that as well. So now you can see how I've got this update. Animation. We're trying to get the pond over just to seeing if he's vowed, that is, is he still around? Still alive? And then we are setting a couple of parameters here setting if our character is in the air and setting our characters speed. Okay, Next thing I'm going to do here is I'm going to create two variables inside of our my blueprint panel over on the left hand side. So you got this variables panel, we're going to create a new one, and our 1st 1 is going to be called is double jumping. I am going to put the question mark after this is well, this is going to be a Boolean gonna hit. Enter here. Now you made remember correctly that in our BP player, not too long ago I created a B is double jumping variable as well, and we were setting that in our jump script. Okay, What I need to do is I need to be able to pass this information along from our BP player to our animation blueprint or Countess Animation BP. So I started this one with a short lower case B is double jumping. And in our countess animation BP, I did not put that be just to Kurt have some differentiation between the naming of the two . We'll make use of this in just a little bit, but before we do, I'm gonna add another variable, and this one is gonna be called jump count. This is going to be an integer variable. And as you may have noticed, back in our BP player, we had also created a variable called jump count. If I compile this over here in our animation BP, you can see your default values currently are is double jump is set to false and our jump count is sets to the jump count value of zero by default. Now, what I want to do is I want to pass two variables along from our BP player to our animation BP. So this is how we can do that. I'm going to copy are try to get the pawn. Omer. I'm gonna hit control C Control V. Okay, then off of this. I'm gonna drag out a wire, and I am going to cast to B P. Player and out of our sequence node over here, I'm gonna plug this into our cast to be people air so that we can access variables inside of our BP player and the ones that I want to access our jump count get the double jump count. And I also want to access is double jumping get is double jumping. So again, these air two variables that live inside of our BP player and then what I can do is take our variables. We just created inside of here inside of our animation blueprint, and I'm going to get our jump count here. Rather, I'm going to grab it from here. Dragon drop. I'm gonna say I want to set it like so and then I'm going to grab our is double jumping here, and I'm going to set it as well like this. So what you've just done here is you've grabbed the value of these variables from your BP player and you are setting them. You're passing them along to these variables inside of our animation blueprint. That's a way of just kind of passing the information from one blueprint to another. And this is gonna be updating constantly, because this event, this event blueprint update animation is firing off constantly. Okay, I'm gonna put a comment box around these nodes right here. Left, click and drag tap the Seiki, and I'm going to say, passed from BP underscore player. Okay, so with that, I'm going to compile and save here. What we have just done is useful, but this actually makes no difference. Yet just because we've passed along this variable information, we're not making use of it yet. Making use of it involves the whole state machine that we saw earlier. The very start of the video. That's where we could call upon what the values some of these variable r and then change in animation accordingly. That's still to come. But that's gonna do it off of this video. Guys, we will see you in the next one 73. Double Jump - Anim BP (Anim Graph): Welcome back, everyone. In the last video, we went about passing along some variable information from our BP player over to our Countess Animation BP. In this video, we're gonna be learning about what a state machine is in, how it works. We're going to be utilizing some of that variable information that we passed along. So these state machines are going to enable our player to transition appropriately into in out of different states. In this case, were concerned about making our character double jump. So let's get right to it. Last video we left off in this event graph here inside of our Countess animal BP. We're gonna be concerning ourselves with this other graph known as the Annam graph over here in the my blueprints panel. Before I click on that, I should specify where this asset lives in the content browser. If you took a break between videos, I am right here in content. Metroid Vania, There is our Countess Anna. Be piece of double click on that to open it up. Okay, so we are within the event graph Tab, I'm gonna jump on over to the Annam graph tab now. The ANA graph is how in where we tell our player character what animation they should play and weaken. Dictate which animals played based on rules we specify. Through using a state machine, you can see that there's a known right here and on it. It says State machine. You can double click on this note, and this is what determines which animation our character should play and when. So we've gotten Idol Run state. We've got a jump start state jump loop and a jump, and that's it's pretty basic state machine. Now the ad estate. All you would need to do is right Click in this graph here, and you've got an option to add estate and then you can name it. I could name this like crouch, for example, if I wanted to add a Crouch state. And then once you have a state in here, you can double click on that state and determine which animation should play when that state is called and you could hook up in animation to that state by simply coming down here in the lower right. You've got this asset browser here. These are a list of different animation, So if I wanted to have a state called Crouch and you know, my my player starts a jump. Actually, during that state, I could do that. Obviously, that's ridiculous. But I could do it. So I want to back up here, and I can back up to where we were with our state machine overview right here by clicking default. And I'm just gonna delete out of this crouch state because I don't actually want that. Okay, it's flipping like Paige and else making sure I'm on task here. Um, OK. Between our states where you see these little these little circular things with kind of a two way arrow on it, you can actually double click on these. These are the rules that determine how we transition from one state to another. So, for example, we have a rule that determines when we transition from an idol or a run into our jumpstart . If I double click on this, our rule is is our character in the air and we're determining if our characters in the air if I jump over to my event graph here in the event graph where we're constantly updating, we're trying to get our planet owner, we're getting the movement component we're seeing if they're falling and we're passing that along to setting is in air. If they're falling, they are in the air right now. Falling is, is not necessarily doesn't necessarily mean that they're falling. It just means that they're in the area essentially. But that is how we determine whether or not they are walking in running versus if they should be getting airborne. I'm gonna jump back to our default state right here. So we have rules that run from Idol, run to jump, start to jump, start to jump loop and etcetera just kind of goes in a wheel right here. Note, however, that you can have states that run back to one another. So, for example, if I want to have a jump loop run back to an Idol run, I could simply drag aware by left clicking right here and dragging it over to my idol run. And once I release, it's going to create this little transition note here where I can now double click on this and bring in some rule that should determine when we can transition to that state. Now again, I don't actually want to place one there, so I'm gonna delete that out. But that's essentially what we've got going on here is we've got these different states that are character can be in each state, corresponds to a different animation to be that should be played. And each of these right here is a rule that determines when we should enter into that state . Okay, so let's get on to trying to hook up a double jump state. What I want to do is drag off of our jump loop right here and you want to drag kind of towards the top end of this right about here. I'm gonna left click and drag. And when I released its going to say, Hey, what do you want to add? I want to add a state, and I'm gonna call this double jump start, okay? And I want this to be placed right up here because I want to be able to not only transition from a jump loop to a double jump start. I also want to be able to transition back from a double jump start to a jump loop. Now that transition rule did not pop in. There it is. I just zoom back. And there was my transition. No, but I didn't see it right away. So if you don't see her right away, you can use your mouse wheel to scroll in and out. There is my transition rule, okay? And additionally, uh, I am also gonna want to be able to transition into a double jump straight from a jump start . Now, the jump start phase, if you will, is really, really brief. But technically, we want to be able to double jump, even if we do it really rapid double tapping of our space bar or, you know, the jump button. So I'm gonna drag from here, are jump start over to double, jump, start and create a transition. Like so I'm not gonna worried about gonna be worried about creating a transition back from this because this happens so rapidly. Okay, So first thing I want to do here is I want to double click on my double jump start, and I want to determine what animation do. I want to play one. Our character double jumps. Well, that's gonna be relatively easy for me. I like the third person. Jump start. That. Is this animation, right? there. And the cool thing about this is as you kind of mouse over, it shows you a preview of what that animation looks like. So here, my asset browser, my third person, jumpstart. I can left click and drag this into the graph here, and then I can simply drag off of here and plug this into the result. That's all I need to do there. That part was easy. Now when I need to do is add some transition rules. When do I want my player to actually go in to a double jump? Well, I will start off. Let's start from our jump start to our double jump this transition rule right up here. Let's double click on this. That's gonna jump me to a new tab up here. And the rule I wanna have for this is simply is double jumping. We've got this variable right down here is double jumping that we're updating constantly. I can drag and drop that right onto my transition. So the moment we detect our character is double jumping. The moment that that is set to true inside of our BP player, that is gonna be passed along to our animation blueprint here in our event graph right there. And that's gonna be the rule that we used to determine. If I'm clicking back on the default right, appear if we should transition from a jump start to our double jump start, Okay, So that transition is all taken care of. The next rule that I'm going to focus on is transitioning from our jump loop to a double jump start. So right here, we're gonna double click on that. And I'm gonna have the same rule right here. Doubled is double jumping gonna plug that right on top of their same rule Applies for that . And I can jump back out of here by clicking default right up along the top here to jump back to where I waas last but not least, I've got this transition from double jump start going back to my jump loop. I'm gonna double click right here. This one's gonna be a little bit more intricate When I'm gonna do is I'm gonna right click in some empty space here and I can search for a nude And I'm gonna search for one called time remaining remaining. It's gonna be time remaining ratio third person. Jump start now. You had similar options there, so make sure that this is the one you got. Time remaining ratio. Third person jumpstart. Now, how did it know? Third person jump start. Ah, because it knew that I had the third person jumpstart in my double jump state that is jumping back to my default by double jump start right here. It knew that I had that animation slotted in there. Okay, so jumping back to default and coming back to where we were this transition rule right here , I'm gonna double click on that. That's where we were. So I'm gonna drag aware out of this, and I'm gonna bring in a less than symbol. We're going to float less than float like so. And I'm going to set this to be a 0.5. And this you could see it needs a Boolean input for their I'm gonna take the result of this and plug it into my 10 enter transition. So what this means is that when the anima associated with our double jump start in this case, our third person jumpstart, and, um, when it has less than half of its time remaining weaken transition back to our jump looped animation. Okay, so we should have an animation associated with our double jump start. And we've got transition rules that here, here, in here, Munich, compile in save. And we'll do a quick play test here. All right? And there should be a little weirdness that happens. Jumping in play. Firstly, I need to get my double jump skill, so make sure that you collect your double jump skill right there. I'm interacting with it. Says we have learned double jump. Okay, so I'm gonna jump once. No one when I'm airborne. That will jump again once. Okay. Uh huh. Uh huh. Well, the good news is, is I was not getting the problem. I was expecting toe have I was expecting a little bit of hitching their in our jumping. And the reason I was expecting some of that hitching is because with some of our animation , retargeting did a lot of that manually and through imperfections, you can get some hitching if you are having problems with your double jump Actually firing off, I would suggest selecting this rule right here. And if it is hitching a little bit over in the details panel. With that rule selected, you have this option for automatic rule based on sequence Player State. You can check that if you are having problems with your character kind of hitching while they double jump. Just keep that in. Mind if it If it looked like minded and it worked pretty good, then just leave it alone. But if you are having problems, select that rule right there and check this box. I'm gonna leave it unchecked for the time being. Now, one thing I noticed that I didn't like those that when I double jumped, I was not getting the desired particle effect playing at my characters feet. So I'm going to jump on over to my BP player blueprint quickly. And here's where we modified our jump script over in our move. Set graph right over here and moving right along here. We got our spawning emitter at location. I was using this hammer spark from the infinity blade effects pack. Ah, the scale I had said to 111 I artificially bumped this up. Ah, in my testing, let's go 55 and five. I'm going to compile, save and let's try this all over again here. Gonna collect my skill hitting my interact button. There we go. There's my double jump, and here we go. One jump to jump. There we go. See? A little kind of explosion. My controllers going nuts right now. There we go. But you can see that nice, beefy particle effect playing in my characters feet upon double jumping. All right, not bad. So we have a double jump skill in place that will do it all for this video. Guys, we will see you in the next one. 74. Back Dash - SFX: Welcome back, everyone. Well, we have finished putting together our double jump skill in this series of videos. We're gonna be working on putting together our characters back dashing skill and this one we're gonna focus on creating a sound effect desired when our character back dashes. So this is gonna be laying some of the groundwork down first creating a sound effects visual effect first, before we then actually make our character do the scripting for the back dash. So the first thing we need to do here is to import in a wave file so attached to this lesson, you should find that there is an S f X back dash that you need to import into the content browser. Now, I am already in the appropriate folder where I want to import this. I'm in content Metro Vania Audio. And we've only got one wave file in here. Currently, I am gonna be pulling this directly from my folders in my Microsoft one drive again. You should be able to download this sound effect that is attached to this video lesson. I've provided you with it there Once you have it downloaded and you have gone to the appropriate folder where it is downloaded, probably in your download folder. You can simply bring open their folder drag and drop it into the content browser like so once you see that plus symbol, you can release your left click to Dragon on in. And there it is. You've got your S f X back dash. You can hear with the sounds like just by clicking on it. And that's gonna be part of our back dash sound effect. We're gonna have a combination of this sound as well is a character exertion sound So I kind of want to sounds to be playing at once when our character back dashes. Now, how can I mix to sounds together? Well, in order to do this, I need to create something called a sound cue. Now, what I'm gonna do here is with my S f X back dash wave file. I'm going to right click on this asset and towards its up. I have an option to create a sound cue. Once I do that, I'm gonna create it right here in the same folder. I'm gonna rename this to B S C for sound que back dash and I'm going to double click on this to open it up and what you can see here right away. Just going to expand this with it. Window out. I'm not gonna docket across the top just yet. Is that I've already got this wave file. This SFX back dash hooked in to my sound Q output. I can play my cue right from here to see what that currently sounds like. Now, the way this sound cue editor works is you can take ah, bunch of sounds, not just one, and you can modulate them in some way, shape or form. You can mix them together. We're gonna be doing some of that here to make the desired sound effects. Right now, all I've got is this particular SFX back dash. But the next thing I'm gonna do is I'm gonna bring in a character exertion sound to mix together with this. And the one I have in mind is over here in our content browser. Let me just doctors across the top momentarily. I am going to eventually undock that it is in your paragon Countess folders. And I'm just going to do a search with that Paragon Countess folder selected. I'm going to do a search for effort. A bit of effort, ability, primary. So those are the three words I put in my search box here, and the one I'm looking for is called effort. Ability. Primary Underscore. 02 And I've got a few different options. Here. There. We GOP primary I'm looking for Is it that one? I think it is that one right there, Countess. Effort, ability. Primary underscore 02 What? The differences between these two particular ones. Um, I can't really say slightly different. Any of these should do. Fine. You've also got some primary ones. I mean, you can decide which one of these efforts that you want to include. But with our filters kind of in place here, I'm not gonna undock my sound. Cue back, Dash and I can drag and drop one of these wave files directly into my sound cute editor. I'm just gonna drag this one, and maybe I'll swap this one out for different one eventually. But I'm gonna drag that one in left. Click, Drag it, drop it right into my graph. And then if I read, docked this back across the top, you can see that there is my wave for that. So what I'm gonna do is I'm gonna create a little space year. So I've got this exertion sound and this kind of washing sound. I'm gonna bring in some notes to modulate the sound of these based sounds. The 1st 1 I'm gonna bring in is called a modulator. I want to modulate the sound of this exertion now, noise. And I can find different sound notes to modulate and change up some of these sounds right over here in my palette panel along the right. Or I can simply right click and find things from here. Different nodes. So the one I want to bring in this called a modulator note, and it's right over here on the left hand side, so I'll just dragging him. And so I'm gonna plug my countess effort into this modulator and with his modulator notes selected over in the left hand side Details panel. We can specify some things about how we want to modulate this particular way file. In this case, you can pitch it up or pitch it down. Pitchman pitch maxing with the volume in and volume Max. What this is going to do that's going to give you a randomized value between your men and your max for both your pitch and your volume. So I'm gonna set my pitch. Men here to be 1.5 my pitch. Max, I'm gonna set to be 1.15 volume in. I'm gonna set to be 0.5. And the volume max, I'm going to set to be 0.7. All right, Now then, the next thing I want to do is I want to bring in a modulator note here for my back dash. So I'm gonna bring this in. I'm gonna break this wire temporarily. So if you hold out cult and left click, That'll break that where? And we're gonna modulate my back Dash here left clicking and dragging. And now with this modulator node selected, I want to set my pitch Men, to be 0.7 My pitch Max to be 1.3 My volume men to be 0.7 in my volume. Maxime 0.9. So now I've already gone and modulated those two sounds. Ah, something I want to do eventually is to mix them together. But one thing I want to do. Is this effort sound? It can get a little annoying to hear this, you know, again and again and again and again. So what I want to do is I want to bring in a random node drag and drop this from your palate panel, and I'm gonna take the output of this modulated effort sound and plug it into this random note with his random notes selected over in the details panel. I've got these weights. And what about what I want to do is that are two weights here to be 20.5 in 0.5 and you can see that. Whoops. I clicked off that for just a moment. You can see I've got two weights here. Wait zero and wait one. Essentially, what I'm saying here is that I wanted to be 50% of the time. Where I do hear our efforts sound. Wait zero and 50% of the time. Wait one. We hear nothing because there's nothing plugged into here now, in order to get true random ization. Well, let me just set this to be 0.5. In order to get true random ization here, I'm going to uncheck this randomize without replacement. By having this unchecked, I'm gonna have true random ization here. Whether it's going to actually play this effort sound wait 0 50% chance or is going to play a 50% chance. Wait one, No exertion sound. If I had this checked, What it would do is it would play this than this than this than this than this than this. So alternate between you hearing it and you don't. So with this set up, I have true randomness. Whether or not I will here our countess, play that exertion noise. Okay, so with that all place, the next thing I'm gonna do is I'm going to bring in a mixer node so you can left click and drag this in from our palate. And it plugged it in to both inputs here. And I'm gonna hold on Ault and unclipped that 1st 1 So what? I want to mix together Here are two different sound is our back are back dash are modulated back dash and our countess effort sounds so that I'm gonna plug in like so And this like so And now if I play the queue Sorry, let's play the queue. You should hear and see the flow as to how that sounds. Now again. Sometimes you're getting that Countess effort. Sometimes you're not. It's random izing 50% of the time. You should be getting it. 50% of the time is not now. Of course, there may be some streaks in here where you get it, you know, three times in a row, three times without, But that is all set up in good to go. So without done, we can save this sound effect. That is all we wanted to accomplish in this one. Guys, In the next one, we're gonna be working on a visual effect for our back Dash. We'll see you there. 75. Back Dash - VFX #1: Welcome back, everyone. In the last video, we went about making a sound effect for when our character is going to be doing their back dash skill in this one. Our goal is to create a cool looking streak visual effect when our character back dashes. Now, before we get to that, I just wanted to mention one thing about the sound que that we just made. I'm just going to jump into it. If you don't already have it open, you can double click on it to open it up. Our mixer know that we have added here right at the end. I failed to mention that with that selected over in the details panel, you can determine how loud each of these comes through against each other again. Input zero. Is this top one? Input one is this bottom one the whooshing sound effects. So that is a way you can have some fine control over how loud each of these different sounds that you're mixing together is okay. So without out of the way, let's get on to creating this cool visual effect. We're gonna cheat here a little bit by copying and existing of the effects and then modifying it from there. So the current visual effect that I want to copy is in our infinity blade effects Pack that is that pack right there. Now, this whole video is not essential. You don't actually need to have some visual effects for a character back dashing. So if at some point in the future, they eliminate this ad on pack or if you want to include a different visual effect for when your character back dashes you can do that. You don't actually need this effect. Just nice tohave, and you'll get to learn a little bit about how these particle effects are put together. OK, so inside of our infinity blade pack, we're gonna go into my effects folder inside here. I'm gonna be looking for F X monsters clicking in that. We got to drill down quite a bit for this that I'm gonna be looking for FX monster Frost giants in there. And then I'm gonna be going into my ice folder there, and the one that I am looking for in here is P underscore Trace Magic Trail ice. This guy right here. So there is a pathway and how to get there. This is a particle I am looking to copy. So with that highlighted, I'm going to right click on it. I am going to duplicate it, and I'm gonna call this P underscore. Back dash. So now we've got a copy of this particle effect. What I'm going to do with our sources panel open here as well. And if thats not open, you could toggle it on and off like that. I'm going to collapse all these infinity blade effects folders. I should not have done that because now I've lost where my peed back to ask. You see, right here, let me select that folder again and just type in back dash that'll bring in that particle that we just created or rather, copied. And what I'm gonna do is I am going to drag this into our Metroid Vania particles folder right there. And when I drag and drop it on, there's gonna say, Do you want to copy it here? Do you want to move it here? Let's actually move it here. So that is now within our Metroid Vania Siris of folders. All right, now we're gonna be a beginning work inside of this particle effects. Let's double click on it to open it up. I mean, a docket across the top here to maximize our space. And the first thing I want to do is I want to disable this particular particle emitter right here. And I can disable this particle emitter by clicking that box right there. That little check box right there. I turned it into a red X, and that is going to make it so that this particular particle emitter does not work. Okay, now we've got this trans square particle emitter, and what I want to do inside here is add two modules and way we can add modules to this particle that it determines how it's going to look is by right clicking right, clicking down in some empty space down here, and I'm gonna go under location, and I want to set an initial location for this particular particle effect. Okay. And then I'm gonna right click again in some empty space, and I'm gonna come under acceleration, and I want to add a drag module. Okay, Now we want to edit some of these modules inside of our trans squared, um, emitter and I'm going to start with, our required module will come back to some of these ones that we just added. But I'm going to start with our required module right here. So you select that and when it selected its yellow, I'm gonna come under the details and I'm gonna find emitter loops. And currently it's set to zero, meaning that this emitter is going to play indefinitely. I only want this to play when we tell it to play one that time, not not indefinitely. So I'm gonna set the emitter loops here to one connects. I'm going to select our spawn module, not spawn per unit, but just spawn and over in the details panel. I'm gonna come under this burst list area, and I'm gonna click this little plus button and it's gonna add this element right here, Element zero. I'm going to say I want a count of 20 and a count low of 10. And now you're starting to see things appear on the screen. So when our character is gonna be back gashing, we're gonna kind of kick up this cloud of dust. Okay, so now you're seeing it come to like you didn't see it much before. This time, it zero is gonna be fine. Next, I'm gonna select our lifetime module. And with our lifetime modules selected, I'm gonna come over to the details panel. Click this drop down. We've got this distribution float. Uniforms? Yes. Let's click that little drop down and I'm going to set the men time to hear. To be 0.5, the max time we can leave at 1.5. So this is gonna determine how long this smoky kind of particle this dust stays in existence. Next, let's select our initial size module over in the details panel. Let's expand some of these drop down triangles distribution vector uniform. All good. We're gonna set our X max value here to be 100. We're gonna set our X Men to be negative 100 and the Y and the Z, we're gonna leave at zero. So what that does is it sets the initial size of this particular particle initial velocity . Let's like that module next over in the details panel under start velocity, click that open click your distribution open and for our max value here, I'm going to set that to be negative. 1000 and I'm gonna set our distribution X men to be negative. 1500. Okay, Now you're starting to see it. Kind of kick off a little bit to the right are why we're gonna set to be negative 100. And our Why, men, I'm gonna set to be 100 now. It doesn't really matter which one you have these in. I could set the max probably should more appropriately set the why Max to be 100. And the why men to be negative 100. Because that is a lower value, then 100. But it doesn't really matter which one you have the minus in, which, when you have the positive in it, just specifying a range. And then rz of 10 for the max in Z of men five. That's gonna be fine. Okay, so now we want to select our initial location modules like that guy. Come over to the details panel click. That's dropped down for the start. Location distribution vector uniform is fine. Ah, are Max for the X and our men for the X is gonna be zero are why Max is going to be 50 are why men is going to be negative. 50 r z Max is gonna be negative. 90 and RZ men is going to be negative. 100. And this module does. What you think it's going to do is going to set the initial location as to where this particular if X bonds in. Okay, next, I'm going to select our drag module and in the details panel, click this little drop down and we've got this distribution distribution flow constant. I want to set this value to be three. Now, when I do set that, you're going to notice how that puff of smoke just kind of slowed down. It literally sets a drag on it. When I had toe one, it just kind of constantly accelerated by setting out to higher value. See, like, 10. It would pretty much stop it on a dime. So I like three for that. Okay, so that's all Well, in good with that. The next thing I want to do is I want to add a brand new emitter. So over here in some empty space, I'm going to right click, and I'm gonna create a new sprite emitter. Okay? And if we select this top part right here. It's called particle emitter. Just so as not to confuse it with this one that we disabled along the left. I'm going to select that particle emitter, and I'm gonna change this in the details panel to read streaks. So this particle effect is going to consist of some smoke here as well as kind of a streaky effect as well. Okay, next thing I want to do is write in this empty space area up here. I'm gonna right click, and I'm going to set our type data here to be mesh data. Okay, then you should have kind of these. Ah, which calm brown boxes floating up. This is going to allow us to include a mesh into here, which is what we want to do. So particles aren't just smoke, you can actually have particles be meshes as well. And what I mean by that is if I select our mesh data right here, right now, we are spawning this particle cube as a quote unquote particle. I know it sounds a little bit weird To have a mesh being spawned is a particle, but you can do it. And right here with our mesh data selected in the details panel. I'm gonna change out this particle cube to be S m underscore. Charge. Mesh that guy right there. And if I hover over it, you can see that this comes from the infinity Blade effects pack. So I'm gonna set that, okay? And it's gonna look momentarily like it's all disappeared. But stay with it here. Okay? Next thing I want to do is I want to add a few mawr modules inside of year. So I am going to right click. I am going to add an initial location module. So we got to come to location, initial location that I'm going to right click. I'm gonna add a size module, and we're gonna add a size by life module. Then I am going Teoh, right click. And I am going to add a drag modules that's gonna be coming under acceleration in drag. And then I want to right click one more time here, and I want to add a material mesh material module. Okay, So make sure you added all these and if you didn't know, you can actually reposition these modules in your stack here. If you so Ah, seem like you want to be a D. D and, you know, cluster certain modules together you can drag and drop those around as well. 76. Back Dash - VFX #2: OK. Something else we need to do here with our mesh data module here, selected is over in the details panel under the orientation section. There's this axis lock option. It's currently set to none. We want to change it to be negative, X, This is gonna be along the X axis. Negative X will do. Just find there and coming down a little ways into the collision section. We've got collision. Consider particle size. We're going to uncheck. That is well, next. We're gonna come under the streaks required module over in the details panel. We're going to scroll down until we find a parameter called use local space. If true, emit update the emitter in local space. We want to say yes. We do want to do that and then down below for the duration. We want to set the emitter loops here not to be indefinite. Which zero indicates we want to set this to be one as well. Okay, next we're going, Teoh, set up our streaks, spawn. So select your spawned module there and over the details panel under rate distribution. We want to set our constant here to be zero. And the reason we want to. That is because we want to do a spawned burst instead. So come underneath the burst section and under burst list. We're gonna click this little plus button to add an element that we're gonna click right here, too. Open up our element zero here in for count one or account right here. We want to set our count here from 0 to 1. Okay, Next we want to set our streaks, lifetime. So let's come under streaks. Lifetime module. And here we want to set our distribution float uniforms not to have a minute, Amax. So we're just gonna set this to be a distribution float constant so that there's not a minute in imax at all to randomize between. We want this to just be a constant of half a second. Let's go to streaks initial size. And in here, we've got distribution vector uniform. Currently said I want to change is to be a vector constant again. I don't wanna have minimum Max, and I'm going to set the X to be 0.5 the why to be 1.3 in the Z to be 1.3 are streaks, initial velocity. We're going to select this next. We've got distribution vector uniform, which is fine. I'm gonna set the max X max is gonna be negative. 1000 X men is gonna be negative. 1500. The wind is iam gonna zero out zeros across the board for the men and the max. That's for initial velocity. Next, we're going to go to streaks color over life. Select that guy. And over in the details panel, we want to change the color of this over life. Now, there are some points over here that are exposed 0.0 point one thes correspond to points on the curve Editor down here. And if you want color over life to appear on the curve Editor, you can click this little box right here. Ah, that will make it so that it appears down here or not. Right clicking right there. Turns it on so you can see it. Okay. And I'm going to change our 0.0 here to be halving in value of 0.1 and in the out value. It's currently this straight white. I want to change this and not in the zero point. Sorry. Zero point. I want this to be in value of 0.0.1. And the out value can be zero zero and zero. So a straight black for that. Okay, so 0.0 in value of 0.1 and the out value is just gonna be zeros across the board. So that's going to be straight black. And then for 0.1 here, we're going to change our in value to be 0.4, and our r g and B values for the out value right below are going to be 0.5 0.5 and 0.85 Okay. And then let me just check leave tangent. Looks good. Like that. Okay, that is for point number one than for point number two. So I'm coming under these. I should probably just raise this up a little bit. We've got our distribution points. We just adjusted 20.0 point one, and I'm going to scroll down 2.2, which currently does not exist. So what we can do here is add another point. Click right there to add one. So we got 10.0 point one and 10.2. We're gonna set our in value here. It's of you one. You can see our graph updating over here is we're doing this showing the changes of our color of our streaks over life here, which we can't currently seeing the window. But we'll fix that momentarily. And we've got our out values that to be black 00 in zero and the leave tangent here want set that to be 00 into a swell, and that's looking pretty good, but I want to change the Alfa over life for this as well. So we got 0.0 said to be black just like that. And then our Alfa over life right over here, we're gonna expose this distribution, and we are going Teoh do, do, do do do Let me see your constant point constant curve. Yes is looped. Yes, actually, all that we're gonna leave that, as is for now. And, you know, before we go any further here, we should actually he see a preview of what we're working on here. So let me go ahead and select our mesh material module. This is really gonna bring this to life. And if I click on my mesh materials, I need to add in a ray elements I'm gonna click, plus right there and The one I am looking to slot in is gonna be called M Underscore. Swipe, underscore. Mash, underscore. Add underscore its this two sided under scorer. 01 inst That's the one. I kind of saw it appear at the very top there for just a moment. Restarting that Sim. You see it up at the top here when I called my restart Sim, there's that little burst of blue, if you will, right up the top there. Now, Essentially, it's it's not in the right location, but we're gonna work to fix that here in just a moment. So we got our measurements here a lot of the way. Let's see what else we need to change up here. Well, one, we need to change up the initial location of this A go ahead and select our initial location module and over in the details panel, we've got our start location distribution is currently said to vector uniform. Let's changes to be vector constant, and that's gonna make it so we don't have a men in a max. We simply have a constant X y and Z location where this is gonna be spawned in it. Ah, zero for the X zero for the wind. Z is going to be negative. 1 50 You see our streaks Suddenly when I click Restart Sim. They appeared down lower still not in the quite proper spot, but we're not finished yet. Um, let's see restarts in re starts and restarts them. Okay, Something else I want to do, Just backing up. Just a moment to our streaks color over life. Um, I was down here at the very bottom Alfa over life. We've got these points. There's actually two array elements in here. I'm just gonna remove all of them. I don't want them as well, so we're just gonna kill those out. Um, next, we're gonna go to streaks. Drag module. Let's come here. And we had a drag for our our smoke here. We're gonna add a drag to our streaks as well. So our const value here is going to be five. And you can see how that made that kind of streak right here in the preview window. When I hit restart Sim kind of slowed it down, right? And I think that is pretty much gonna do it for this one. Let me just check my notes real quickly here to make sure I haven't missed anything and I don't believe I miss anything. If once we get this starting to playing games, something looks off, we will revisit this particle effect. This was rather difficult to get through end. There's a high probability that I may have made a mistake or for gotten something at some point, but we'll revisit if we make a mistake. Without further ado. Let's do one more thing here and save guys that will do it. Offer this video we will see win the next one. 77. Back Dash - Script #1: Welcome back, everyone. In this video, our goal is to begin putting the script necessary to make our BP player back. Dash, This one's gonna be spread out over a couple of videos here, so let's jump right to it. First thing we need to do is jump into our project settings, which we confined right across the top of our toolbar. Here, let's go Project settings And over on the left hand side I'm going to select input. We're going to add a new action mapping Here. We've got one for jump, interact, exit in the skill acquire. I'm gonna add a new one by clicking the plus button right here Next to action mapping, not access mapping. A lot of people get these confused action Mackett mapping hit the plus button and I will call this new action mapping simply Back Dash. Now I need to bind Ah, certain buttons to it and I'm going to bind game pad base button. This is for all you game pad people out there. Game, pad, face, button top Right there. So for those of you with an Xbox controller, that will be the why button those of you like a PlayStation controller. That would be the triangle button. I'm also going to bind this to another key clicking the plus button right here. And I'll set this to be the up key on my keyboard. So again, you could set this to be whatever you want. But I've got some arrow keys on my keyboard that I'm using to kind of replicate the diamond shape on a game controller. So up key is going to be the equivalent here. Okay, so with that done, we can close out of our project settings. Next, I'm going to jump on over to our BP player located in content Metro Vania Blueprints, characters opener up because we need to add some more variables inside of here is if we don't have enough already. So these were going to go into our skill back dash category. Currently, we've only got two variables inside here, so let's create a new variable. And this one is going to be called B is back dashing. And with that created over on the right hand side in the details panel, I'm gonna put this in the category of our skill back dash, and I'll compile here right away. and by default in his false and I want it to be false. Now we could add a tool tip here. Um, I'm not going to put one just for the sake of time, but this one, this variable is going to be used in our persona entered in order to help direct which animation we want to play. So when this does turn true, we're gonna know which animation we want to trigger a back dashing type of animation. So this one is going to be solely for determining which animation our character is going to play. I'll reorder these variables when I'm finished here, but I'm gonna go ahead and click plus variable to add another one right away. This one is going to be called Be back dash Ready question. Mark and I probably should have put a question mark a to the end of my other ones here to cause that's the way I like to label my Boolean variables. But with this one selected, be back Dash ready over in the details panel will put this into our skill back dash category. And if I compile here, um, I will say that by default it is ready. Now, What are we gonna be using this one for? Well, are back dash ability will have a little bit of a hidden cool down. This is going to determine if the ability has cooled down and the player is able to back dash again. So by default, I want them to be able to back dash immediately. Okay, so that one's gonna be used for that purpose. Okay, Another variable here. Click plus variable. This one is gonna be called back dash. Cool down and I'm gonna change is to be a float variable. You could change it here. Or you can change it up over here in the details panel. I will put this over into our skill back dash category. I will compile so I can add a default. Are cool down between back dashes. It's going to be 0.35 seconds again. This is something that you can fiddle with once we get the script for this together. That's what I found to be pretty good through some play testing. So this is gonna be the amount of time that must pass before you can back dash again. Otherwise you're gonna be able to spam are back. Dash button and just back. Dash repeatedly. Very rapidly. Okay, Next one, we're gonna add here under variables plus variable. This one is going to be called back dash left amount. This is going to be a vector. Variable over in the details panel. I am going to put this in the appropriate category. Skill back, Dash, I am going to make this instance edible. Meaning that we can update this variable when we are running the game as well. From the main editor. So going to check that instance edible. I'm gonna compile here. And my back Dash left amount. I'm going to set the X value to be negative 20. Now, what we're gonna be using this variable for is to determine when our character back dashes how far they move in the X axis. So that's what that one's for. The left amount. Likewise, I am going to select this variable once again. When it is yellow like this. I can hit control plus w on it to duplicate it. And I'm simply going to rename this right amount back dash right amount. And because I duplicated it once it was in the appropriate category. It's already there. So I need to do is compile here and for the back dash. Right amount. I'm simply going to set the X value to be positive. 20. We can leave the X. And why be for those? Okay, let me just do a little bit of reorganization of my variables here. So I've got B has back Dash. I'm actually gonna add question mark at the end of that. OK, then I'm gonna have B is back dashing. Gonna drag and drop that up above here. And I will also put a question mark at the end of that. Then we've got Be back, dash ready. I'm lumping all my bulls here together that I'm gonna have back dash, cool down right above that, then back dash left, amount left. Click and drag that on top of here to move that up and then right amount left, click and drag. Okay. And so I am happy with that. All right. On to some scripting. Let's see. Let's put this in our move said Tab, we've currently got our jump script in here Are landing script in here? If you don't remember, you can access your different grass over here in the my blueprints panel. We've got our event graph, and we created a new graft for move Set. So let's do our script for our back dashing here in our move set tab. Okay, So earlier in the video, we created an event for input back dash. So I'm going to scroll over the right here, leave a lot of space over here, gonna zoom on up by control in mouse wheel in right click, and I'll just do a search for back dash if I can spell it right There is our action event for back dash that we added to our project settings. Now off of this. I want to say, once we've press this, let's bring in a branch. We want to evaluate some things and there's three things that we want to evaluate. If they are true before we're going to say yes, you can back dash. So firstly, I want to check Does our character even have the back dash skill? So Dragon, drop this variable in here. We're gonna get that The next thing I want to check If our be back dash ready is set to true and The other thing I want to check is our character movement. Let's bring this guy in from our components panel gonna drag that in than drag off of that and say is falling. And then we're gonna drag off of this and see not and we're looking for not Boolean right there. So the three things that we want to check our true and I'm gonna go like, you can drag off of any one of these three right here. I'm gonna drag off my has back dash and type in the and type in the word and that I'm looking for in and bullion. So I want to see if we have the back dash and are back. Dash is ready and I can click to add another pin here. And we are not falling. If all three of these if all three of these are true, then I am going to drag off of here. Input in a sequence? No, because there's a few things that we want to do. If all of these things are true, So the first thing I'm gonna do off of our then zero is I'm gonna deal with our cool down so we're gonna take our back dash, ready this Boolean right here. Now, make sure because a lot of these are very similarly named. Make sure you're getting the correct one. I'm gonna bring in RB back Dash Ready, Dragon in here. We're gonna set this and right away. If our back dash is ready, which it is by default and our character starts back dashing, the first thing we're going to say is Nope, he's not ready anymore. So that's gonna prevent us from spamming are back dash ability. And then what I'm gonna do is I'm gonna drag off of this and bringing a delay node in our delay. The duration of this is going to be are back, dash, cool down. You can drag and drop this right on the pin here. And if you remember our back nationally, here is 0.35 seconds. So after that delay of 0.35 seconds, we're going to bring in our back dash ready again, or you can copy and paste this node Selected control C control V and after 0.35 seconds has passed. We could set this to true again so we can back dash after that I'm gonna left, click and drag around these three nodes right here. Left Click Drag! Tap that Seiki and I'm gonna type in back dash, cool down to pre vents player spanning this skill. Okay, so with that in place, then we need to work off of the then one portion of our sequence. Note and off of this, I'm going to set is back dashing. This one right here be is back dashing. We're gonna left click in drag. Put that in here. We want to set this hooking that into our sequence. Note if we're going to set this to true And again, this is what's going to inform our state machine that our characters should be playing a back dashing type of animation. So we're setting out to true right away. Then what I want to do is I want to bring in another branch. Let's do the shortcut for Branch. Hold down the Beaky and left click. There's our branch and we want to evaluate some condition. The condition that I want to evaluate at this point of our script is which way our player is facing. So we know if they should be back dashing to the left or to the right. So I'm gonna bring in my capsule component up here to help out with that drag and drop that into a graph. And then I'm gonna drag off of there, and I'm going to say yet world rotation, okay? And we want to evaluate it. So what I'm gonna do is I'm gonna drag off of this in type in a greater than symbol. Sorry, I'm gonna split this first before. I can't actually just evaluated straightaway here. When I need to do here is I need to right click on a return value here and split the structure pin because rotation is made up of three possible rotations x y or Z rotation, depending on which access you want to check. So again, to get that all I did was I right? Clicked on the pin and there are recombinant. I right clicked here and said Split the struck pin because rotation is made up of three separate rotations rotational values. So I want to evaluate if we are rotated in the Z axis. That's kind of a line straight down through our character. Eso I'm gonna drag off of this type in the greater than symbol, and I wanted to float greater than or equal to, And I'm going to right click on this note and leave a note comment for is facing right, and it is greater than or equal to zero. That's gonna be our condition here. If that is true, we're gonna do something out of here. If that is false, we're going to do something out of here now for debug purposes. What you could do is let's right click and bring in an event. Tick right here that I'm going to drag off of this into a print string. And I'm simply going to drag off of our return values e from our get world rotation here and plug it directly into our in string here. And it's kind of overlapping that right away what this is going to do that's going to every tick year. Let us know our characters rotation here so it will be facing writes if r Z rotation here is greater than or equal to zero. So I'm just gonna jump in a play here along the left hand side of the screen. You're seeing zeros, and if I turn you can see it's basically negative 1 80 So our character is facing right as indicated by our little debug scripts. Okay, I'm gonna delete that, cause I don't really need to see that. Just in case you want to see what value something is out putting. You could do something like that. Okay. With this bit of script done, I'm just gonna bring this all on screen so you can see what we've built so far. So we've built all these variables along the left hand side. Here, we've got three billions, two vectors, a float. And, of course, our struck from earlier. This is a script that we've currently put together. Double check it here. Pause the video. If you need to make sure you got the appropriate things checked. Let's compile and save. We're not done with this yet, but we've got a good start. Let's continue on in the next video. We'll see you there. 78. Back Dash - Script #2: Welcome back. Once again, everyone we're going to continue where we left off in the last video by scripting are back Dash We started it in the last video. This one We're gonna be finishing it off. So let's jump right back to it. Inside of our content. Metroid Vania Blueprints Characters Folder Find your BB player Double click on her to open her up and again we were over in the move set tab You can find it here. And if you don't have that open along the left hand side, there's your move Sets tab that you can access a swell. Now this is where we left off, man. We left off by asking, Is our player facing right? And if it's true, we're going to do something and if it's false, we're going to do something So we're going to be working off the true brands first. But before we do that, I need to create a timeline and you'll see why here in just a little bit, we're going right. Click in some empty space here and just do a search for a time line. We're gonna add a timeline, and I'm gonna call this one back Dash left, and then I'm going to double click on this special note here, you can double click on it to open it up, and I want to change the length of our timeline here from five seconds to be 50.2 seconds is gonna be a very short timeline. Timeline is gonna allow us to change a value over time. In this case, we want to change a float value over time. So I'm gonna add a new float track right here. By clicking on this button, it's going to prompt me to give it a name, and I'm gonna call it movements like so I'm gonna hold down the control key and use my mouse wheel to kind of scroll on end that I'm going to right click, kind of moving on over into position, zooming on up a little bit. I'm going to add two keys to this timeline and doesn't really matter where you add them to start. I'm just gonna right click here in the white space. We're gonna add a key Now, this 1st 1 is going to be set at a time of zero and a value of zero. I'm gonna put that yellow dot right down there that I'm gonna right click again in the graph at another T. This one is going to be set at a time of 10.2. So basically the end of our timeline here and the value here is going to be one. Now, you could see it kind of shot up off the top of the graph. Here, you can click these arrows to zoom into view. Or if you can't ever get something like that, you can just tap the F key and will frame up both of those keys in your timeline viewer here. Okay, So with that one done, I'm gonna jump back to my move. Said Tab right here. I'm gonna select this timeline that I just created. I'm gonna hit control C and I'm gonna hit control V because I'm gonna want a copy of this. So you've got a back dash left, and I'm gonna name this one that I just copied to be back. Dash rights. And I'll be making use of that one a little bit later on as well. So just letting you know how in positioning things here, I'm gonna move my back dash left Timeline up here. Back dash, Right Somewhere around here. And I'm sure we'll fiddle with those positions in just a little bit. Okay? So off of our true branch. If our character is facing to the right here, I'm gonna drag off the true branch. And I'm gonna bring in another sequence, node and off are then zero pain. I'm gonna plug this into the play from start portion of our timeline. I always wanted to a play from start, so we guarantee that our timeline plays from the very beginning of it. Okay, moving this over to the right a little bit. So what I want to dio is I want our character to slide along the ground back, dashing left. So to make our character slide along the ground, I need to bring in a reference to our capsule components. You can left click in drag right there, Indra graph. And then I'm gonna drag off of this and type in set relative location and rotation. We want to change our characters capsule components, location and rotation. Why the capsule component? Because everything else is attached to our capsule component by jump over to our our view port here. This is our route components. So if we move this guy, everything else is coming along for the ride. Okay? Jumping back to our moves, that tab over here. So as we update our timeline, we're going to want to be updating our capital components, location and rotation. In this case, we're only concerned with location for back dashing left. Okay, next thing I'm gonna do is bring in another reference to our capsule component drag and drop it right about down here. And I'm gonna drag off of this. And I want to get the world transform for our capsule component. Basically, I want to know where is the location of this now? I could what I can do with the world transform right here. I can right click on this return value, and I can split the struck pin. Now that will give us locational, rotational and scale data because the transform is made up of those three in this case, I only want the locational data. Now. I could have gotten just the world location itself instead of the world transform. But I'm gonna be doing some copying and pasting of nodes in just a little bit. So this is gonna help me save a step. Okay, So what I want to do is I want to lurk between a few values. So I'm going to right click again in some empty space here and do a search for lower pay Vector lurk vector a sense for linear interpolation. And actually, if you highlight over says it's going to linear early. And I have a hard time saying that linear early interplay between our A location and RB location based on an Alfa input right here. So if we drag off of our timeline here our movement and plug this into the Alfa, this is going to drive our movement from point A to point B. Now again, if I highlight over this Lor vector noted says in the tool tip that will be at 100% of location A when Alfa is zero and 100% of location be one Alfa is one. Now, if you look back in our timeline here, you can see that over the course of 0.2 seconds were changing the value of this float variable from zero 21 Okay, so this timeline is updating this Alfa value here from zero toe one. Okay, so what do we want to plug in, As are a location. What? We want to start off where our character is located in the world. OK, so that's gonna be our initial location. Over the course of 0.2 seconds, I want to take our initial location dragging off of their hit the plus button. And I'm gonna do vector plus vector here, and I want to plug in to our import. Here are input here of our vector plus vector are back dash left amount. So that addition is going to be RB value. So essentially, where our character currently is, Plus at on this amount, that's going to be our new location. Okay, so that is well in. Good. Let me just slide this over a little bit, like so, Because I need to make sure that are, Then one pins got some space is well, okay, so that's what we just build. So if you need to pause the video here, see what we just built? That's what we got going on. Make sure this is set relative location and rotation. Okay. Next, let's build off of the then one branch of this particular sequence node. Now, this, then one is going to feed into some of the visual and sound effects that we want to play. So I'm gonna bring in another reference to our capsule component. Drag that in, and I'm going to drag off of here and get world location. And I'm gonna use this here in just a moment because off of our then one branch here I am going to spawn emitter at location. Never mind some cars horn honking in the parking lot behind me. Okay, gonna plug this into the location of our spawn emitter at location because I want to spawn in the middle here. And which one do I want to spawn? I want to spawn in our back dash. Remember, we just created a particle for our back dash. Right there it is. Okay, so that's the first effect that I want to do. And of course, not only do I want to spawn any Mitter, I want to play a sound at location, so I'm going to continue the flow of execution. Here's a play sound at location. Which location? Well, funny you should ask because we can use this exact same location here. Our capital component is close enough. It's basically the heart of where players located. And what sound you want to slot in here? Well, we just made is sound effect A sound cue earlier for back dash. So let's slot in our created sank you. Now you can click this little drop down and you can, you know, bump up the volume if you want to or set any other settings as well. But I'm gonna live with what we have here for the time being. Okay? So that without done just showing you what we've built so far, let's just do a quick compile and save. Okay? Now, the good news is we can copy a lot of these notes from our back dash left. Four are back dashing, right? In fact, what I'm gonna do is I am going to come under our back dash left, middle left, click and drag all these nodes right here. Left click and highlight all those. I don't want this back dash left, so I'm going to control Click to not select that with all these highlighted, I'm going to do control, See, to copy them. Then I'm gonna come down here right off of my back, dash, Right. Just kind of showing you geographically where it's located right there. And I am going to control V to paste them, or right here. Okay, so gonna be working down here. Just a moment. So off of this false branch. If our character is not basing right, what I want to do is bring in another sequence, node. Okay. And off of the then zero pin. Well, because this is geographically closer, I'm gonna put this into our spawning the emitter and our sound. Okay, And out of the then one pin, let me just bring in a couple of reroute nodes here, like that off of the then one pin. I'm going to want to do our back, dashing to the right. We need to make a few modifications here. But then one we're gonna play from start, make sure you've got your update plugged into the set. Relative location and rotation. Make sure your movement is plugged into the Alfa of the lower pay. Now, one thing that we do want to take note of here and consider is that here we want to have our rotation plugged into our new rotation. We did not do that above, but here we do want to consider that. So I'm going to take our rotation of our caps component. We're gonna plug this into our set relative location and rotation again. We did not do that above that was intentional. And then lastly, we need to swap out or back. Dash left here with our back dash right now. I could delete that and then plug this in, but just want to show you another trick you can do here is with back dash left, amount selected. You can right click on it. And we can replace that variable back dash left with back. Dash writes. It detects that there are other vector variables that we can swap it out with in this blueprint. So there you go. We're not quite finished yet, So let me kind of zoom on out here a little bit and show you what we've got so geographically speaking, this is our back dash right in this section. This is our back dash left up in this section. Here is where we are playing our emitter and our sound effect. But Lastly, what I need to link both of these into is a couple more nodes, one being a delay. Note. I'm gonna place the Delano right about here. Right Click delay. I'm gonna delay for about 0.2 seconds, and then we're going to get our is back. Dashing B is back dashing or to drag that in. And we're going to set that and say no, no longer back dashing after 0.2 seconds passes, which is the length of our timeline, By the way, we are no longer back. Dashing this variable again is going to read into our state machine to determine which animations are playing. So what do we need to plug into here? Are delay well off of both of our set relative location and rotation knows you need to plug that into there after the back dash, right? And then I'm gonna bring this up top and off of our back dash left up here. The set, relative location and rotation that's got to go in. There is. Well, okay, So moment of truth. Hopefully I didn't miss anything there. There is our monster script, and I'll step back and reviews in just a moment but will compile and save. All right, let's give this a shot and see what we have got. So we're going to jump in and play here. Let's interact with our back dash skill di ous. It is acquired. So now I'm going to try back, dashing to the left. Here I did back Dash. Now I noticed that the particle is still going, so we got a problem with the Mitter. We'll look to see what's up with that, just a little bit again. Our character is not playing an animation at all. That's not supposed to be working just yet. And because that emitter is distracting, let's go over here and face and left now and our characters back, dashing the appropriate direction. But the particles are going the wrong way as well. So let's see what's up with that 79. Back Dash - Script #3: Okay, So, for starters, looking at my notes, I did make one mistake here for our spawning the emitter at location. So we've got this back dash here. I actually need to unhook this one right here. We're gonna have separate emitters for back dashing to the left, into the right, our sound at location that can stay the same. We can kind of move this down, but this is gonna be our our back dashing, ah, spawning Mitter to the left. So let me just right click on this, and I'm gonna leave a note Comment for left. And I'm gonna set the Z rotation for this to be negative. 90. Let's try negative 90 for that. And then I'm going to copy and paste these three nodes. Actually, all we need to copying paces are spawning minaret. Location control. See? And then control v it down here. I'm gonna have to move all of our back dashing to the right down just a little bit. And so for back dashing to the right are then zero is going to plug into this emitter. The location for this is going to be the world location of our capsule component. gonna make sure that you plug this back into the play sound at location like, so we can probably get rid of that. Reroute? No, just pipe this directly in in the rotation for this. This one is not gonna be a back dashing to the left, but rather the right. Let's that that z rotation to be 90. Okay, so that's all I updated right here. Is this part of the script off of our back? Dashing right. I added an emitter separate for the right dash right down here. Okay, let's compile and save one more time. And are particles still gonna be screwed up? But let's see if we've got the men are shooting off in the right direction. So collecting are back. Dash here. Okay. Back, dash. Ah, that was still obviously wrong. Okay, so I screwed that up. I'm gonna change the Z location here. Back to be zero for the left and for the right. I'm gonna change that toe. One not negative. One weird number like that was Ghozi off 1 80 And let's try that again. Why did I think 90 there? That didn't make much sense. Okay, So back dashing left that particles kind of shooting off in the right direction and then back dashing right. It's kind of shooting off in the appropriate direction. Now that's all well and good. Let's figure out what's wrong with our particle. Why keeps pumping out smoke there? Okay, over in our content browser. If you come down into the particles folder, there's RP back Dash and it was this trance square emitter that kept spawning again and again. So if I click on are required module right here, down in the details panel here, we've got the duration emitter Loop zero. That's not what we want. Zero indicates looping. Continuously set that toe one. How did I screw that up? Thought I had that one. Correct. Let's go ahead and save that. Then let's jump in and test one more time. Collecting are back. Dash Okay, back dashing that direction looks good. Looks good. Not too shabby. Of course the animations not hooked up yet, but that used to come. OK, so let's take one more look at this monster script here. I'll try to kind of pause the video certain junctions here, or rather frame it up so you can pause so That's the beginning of our back dash. Okay, off of this is facing right. The true branch. We've got the sequence. And here is all we're doing for when we are back. Dashing to the left back dash left him out. Make sure you've got back Dash slotted in his emitter here. Rotation zero back dash sound. We're doing this delay of 00.2 seconds here at the end, and then setting are is back dashing back to false and then backing this up. If our player is facing to the right that evaluates to false right there, then we are doing all this script right here. Try to frame this up as best I can. Guys, it's hard, Lot of script, okay? And hopefully you've got that all put together. All right. Animations are still yet to come with guys that is going to do it off for this one will see you in the next one 80. Back Dash - Anim BP (Event Graph): Welcome back, everyone. In the last video, we finished up our characters back dashing script. In this video, we're gonna begin to pass our variables that we created in the last video from our BP player over to our animation blueprints so that we can have our Countess playing the appropriate animation before we do that. I just wanted to show you that something that you can do inside of your BP player to enable easier tuning of your back dashing while you're playing your game. Let me show you what I mean. Go ahead and open up your BP player and this is the directory where you could find it. There's your BP player, and in the last video we created a bunch of very bowls down over in our skill back dash category, and we checked a couple of variables here. We made them publicly creditable by clicking on this little eyeball icon. Or alternatively, you can make them instance creditable by clicking right here. This does the same things. I note that as I click on this check box, that eyeball icon goes away. Likewise, if I click that eyeball icon, it makes it instance creditable. What I'm gonna do really quickly. Here is I am going Teoh, make all of these very bowls Instance edible. This is just for easier tweaking and tuning while we're playing that, I'm going to compile this and I'm gonna save and I'm gonna jump back over to my test map here. Now I'm gonna hit the play button. But before I do in this drop down window, I'm gonna have This is a new editor window. That's my preferred way to play. So when I click play, my character is going to spawn into my level. And not if I hit Shift in f one. My mouse cursor will appear and I can move this window off to the side a little bit now because my character is spawned into the level over in my world outline. ERM, IBP player now exists, So if I click on my BP player right here, my window is going to go away, and my play window's gonna go away momentarily. But you will see down in the details panel. I've got access to all of these variables that I just made instance creditable over inside of my BP playbills, those yellow I icons and this is useful. Because if I want to tweak and tune some of this stuff while I play, I can, For example, I can make my back dash right amount not be 20. I could set it to be something like 100. So let's try that out now. My window to play the game is right down here. Okay? So first I need to acquire the ability. And if I back dash in this direction, I'm still going. Negative 20. But if I back dash in this direction suddenly I'm going much, much, much further so I can do shift enough One again. In this I'm gonna say Back dash. Right. I'm gonna Onley gonna go five Gonna set that to five. And now if I jump back in and play, I can What did not mean to acquire that one just yet. I'm only back dashing a tiny amount. So this is a really quick and easy way to make it so that you can tweak in two in that back dash right here in the editor. And you could do this with any other variables that you see fit inside of your BP player as well So what I'm gonna dio is jump back to my BP player and uncheck or actually not make thes all instance edible. Something I should have noted there, though, is that if you jump in and play like we were just doing here, shift in F one, select your BP player. Now, notice that all my variables reset themselves here. If you change something like your back dash right, amount to 100 right here and then you exit out. I'm just gonna stop playing. And I jumped into my BP player. It is not going to save those values so again, when you're just testing it out in the editor, that's just to kind of play around with the variables and see what you like. In order for those changes to actually stick, you need to go back here in this blueprint and punch in the values that you want. So I could leave these all instance creditable, but well, what the heck? I will leave him, all instance edible, compile and safe. And let's get on to the agenda of this video, which is transferring some information from here into our animation blueprint. So I've got my BP player open. I'm going to jump up to my mesh component right here and to open my animation blueprint. I'm gonna come under an M class click right here to browse to that asset in the content browser. Double click on it to open it up. And by default, it brings me back to my Annam. Graf, I want to work in the event graph first. And if you remember, when we were putting our double jump together, we did this thing whereby we were passing variable data from our BP player to some variables that we created over in our my blueprint panel here inside of our countess BP Annam. So we're going to do something very similar here. Over in the my blueprint panel, we're gonna create a brand new variable. This one is going to be called is back dashing. Question Mark, I left of the be off the front of it for this version of it. And what I am going to do then is make it so that I can drag out of my BP player here and type in is back dashing. I'm gonna get the is back dashing that exists in my player blueprint by that I'm talking about this one right here. Be Is back dashing. Okay. And then in my countess Anna, BP, I'm going to drag My is back dashing variable in here. And I if I actually drag and drop it right on top of it is going to bring in a center for me. So all I need to do here is a link, my flow of execution in like that. And there we go. We're passing along. Our is back dashing variable data from our BP player to our animation blueprint. Um, something I wanted to note here. What was it that I had in mind right here? Oh, back here. My BP player. If you're wondering where we are actually utilizing this variable inside of our giant scripture, you can right click on it as they find references. And then in your fine results right here, you can see that we're setting it two times. If I click right here, double click on it. You can see that at the beginning of this back dash script. We're setting this to true. And then if I click on this double click on that at the very end of his back. Dass script is where we're setting it toe. False. So those were the changes that were making to this variable inside of our BP player that we are then going to be passing along to our Countess An M B P. Okay, guys, that is going to do it all for this video. I need to compile and save here quickly in the next video. Were actually going to use that variable data to drive which animation? We want our Countess to play. We'll see you there. 81. Back Dash - Anim BP (Anim Graph): Welcome back, everyone. In the last video, we went about passing some variable information from our BP player over here to our Countess Anim BP. If you took a break between videos, I want to get you back to where you should be. So jumping back to my main level editor here, we're within content. Metroid Vania Animations. And here is our Countess Anima BP. Double click on her to open her up. I already have it open. And I am on this blueprint tab right here. And this is where we finish off. Passing some is back, dashing variable information from our BP player to our Countess Animation blueprint. Okay, so now let's make use of this variable by modifying our state machine and in order to modify our state machine, I'm going to come over into my blueprints panel. We've got our Annam graph. If I double click on that, that'll bring me over here. Here is our state machine. I'm gonna double click on this. And what we want to do is enable the player to back dash from an idol slash runs. So in some empty space right below this, I'm gonna right click. I'm gonna add a state. And I'm simply going to call this back dash, Okay? And when I'm gonna do is I'm going to run a wire from my idol run. I want to be able to transition to a back dash. So left, click and drag. And then likewise, I want to be able to go from a back dash left, click and drag from here to an idol run. Okay, so note which way the arrows are going because we're going to be modifying some transitional rules here in just a little bit. Now, Before we do that, I want to determine which animation do we want to play when we are back dashing. So let's double click on our back dash and, um, ST right here. And it's asking, what animation do you want to use when we are back dashing? So over in the right hand side, you should have this asset browser tab, and there is one called play knock backward that I kind of liked. It's kind of like the countess's floating backwards and again. You can use whatever animation you want, but there's some play testing. I thought this one seemed pretty good. Where is that one. Let me just type in knock. It's not called play knocked back. It's just called knock B W D for knocked backwards the drag and drop that in here and plugged that into the result by left clicking and dragging. And if you hover over it, you can kind of see what this animation is gonna look like. It's gonna look like your character kind of got knocked back, but it's gonna happen so rapidly that this was the best sort of back dashing animation that I could find. Okay, so we got that in place. Let's jump back over to our state machine here by clicking right here to get to our default . Now let's set some transitional rules in the first rule that we're gonna set is this guy is going to be this one. The one that's going to transition is from Idol Run toe, back dash. So double click right here and our rule for this is going to be is our character back dashing? So left, click and drag and drop this right on top of this. So if I jump over to my BP player very quickly, you'll notice that when we do begin to back. Dash in. All this is true. Like, does he have the back dash ability, etcetera? Right here is we are saying, Hey, our character is back dashing. That is what is going to inform our countess anima BP that we can and enter the back dashing animation state. Okay, so this is the rule that we're setting is, or character back dashing. And when that sets to true, our character is gonna back dash. Okay, so then let's set our other transitional rule by double clicking on this one. Going from back dash to idle run. Note the arrows location double click on that, and we're going to bring in our is back dashing. We're gonna get that. But off of this, we're going to drag and type in. Not not Boolean is our character not back dashing. And if I jump over to R B P Player, you'll find that at the very end of our back dash script we're setting our is back, dashing right here to false those. That is what's going to transition us out of our back. Dashing. Okay, so I am going to jump back to our state machine here Everything looks good. Let's compile and save. Now I'm gonna play, Um and I'm gonna be able to back Dash, and you should see an animation. Let's collect the ability first, Um, there is going to be a problem associated with it, which I will reveal shortly. So let's go ahead and try back dashing. You could see that little animation right looking. All right. OK, now I'm going to try to expose what is wrong with this, so I can kind of kind of keep moving wall in back dashing, which is a little bit weird. So I'm gonna put in a check for our character movement to try to mitigate that effect. It's very subtle. Nothing looks to agree just there, but to deal with that sort of a little bit of a break, it you're going to jump over to my B a P player script. I'm going to zoom on out and I'm gonna find where our movement input script is right up at the top. Here. We've got our input access move, right. And when our character is moving right, we're telling it to move in the X direction. What I'm gonna do is expand out my comment box here a little bit, and I'm gonna put a check between that input access move right and add movement input. I'm gonna hold down the B key. Be Isn't branch to bring and then left click to bring in a branch node. And I'm going to reroute my execution wires like so Onley here. The condition that I'm going to plug in is B is back dashing. Now again, we've got three of them, very similarly named, So be sure that it is. This b is back dashing left, click and drag that on top of their Let's compile and save jumping and play one more time. I'm going to acquire Sorry. Let me jump in and play one more time Going to acquire my back Dashing ability shift F one . There we go. My mouse cursor was just not Oh, sorry. The problem. Like I was like, why can I can I not control my character is because currently I have this hooked up to the true branch. I want this hooked up to the false branch and I can hold down control and left click right here to move this down to the false branch wondering why I was going crazy there. Why could suddenly not move my character so input access Move right to the branch of the false. If our character is not back dashing, we're going to allow movement input. Let's compile and save one more time. Oh, the boneheaded errors I can make. Okay, Aereo, we have the back testing ability. Now, when I backed Ash now my character essentially I'm holding down left the whole time. So what this is going to do is it's gonna make it. So my character essentially has to finish their back dash before they will continue running forward. So that's just a little subtle fix up. But anyways, guys we now have are back dash animation in place are back dash skill in place. So job well done. Let's keep the momentum rolling. We will see while in the next video 82. Fireball - Blueprint: Welcome back, everyone. Well, we've got two skills implemented. How about we move on to a fireball next? So the goal in this one is to set up a fireball blueprint that will contain all the necessary components are fireball will need. We're talking the mesh, the particle, the collision and even the projectile movement. So let's jump right to it. Here I am, inside of our content. Metroid Vania Blueprints Actor directory. I'm going to right click down here in some empty space. We're going to create a new blueprint class. This one is going to be of the actor variety. So click right up here. It's gonna prompt you for a name. And we're going to call this guy BP, underscore Fire ball and let's double click on it to open it up. And the first thing we're gonna do is add the necessary components. So under your components panel, it's add a component. We're gonna be looking for sphere collision right there. Sphere collision. And I'm gonna call this simply collision, and then I'm gonna drag and drop this on top of our default seen route to make it our new route. Okay, this is the thing that we're going to be checking collision against the next thing I am going to be adding here is going to be a static mesh and the static mesh is going to be called sm underscore fire ball. So let me just add all the components first. Then we'll worry about the details after that. The next thing we want to add here, and I'm going to select our collision component first because I wanted to be attached to our collision component are fireball static Mesh is attached to our collision. That's what this indentation means. I'm going to click here to add a component. This one is going to be a particle system right here, and we will call this V F X underscore fireball. Okay, four are collision settings. There are some settings I need to set in here. I can only do part of it now because there's another step that I need to do a little bit later on in this video, and then we'll come back to this. But for the time being, I'm going to set our sphere radius here to be 20. Not this to be a little bit smaller in size and when we adjust our route here, anything attached to it is going to be scaled down in size as well. So just to know that we will come back to some more settings that we're going to set here eventually. But we're gonna go on to sm fireball next. And for the static mission we want to slot in here. There is a good one called S M. Underscore. Fire Bowl. Interestingly enough, this is in your infinity blade effects pack. Of course, you could just use something spherical shaped as well. But that looks rather fire. Bali and I have some settings up here in the transform. I'm going to set the X Location to be 25. I am going to set the scale to be a little bit bigger. I'm gonna set it to be, too in the X, y and z, something bigger like that. Okay. And then I'm going to scroll down into our collision settings. Where says collision. Collision presets. We're going to change this from block all to no collision. So essentially, what I'm saying here is I don't want to collide with this static mission. All instead, I only want to have our collision sphere here be the thing that we're checking our collision against. Okay. Next, I'm gonna go onto our VFX fireball and in the details panel under the particles template section. I'm going to set this to be a fireball. Interestingly enough, there is one for fireball. Underscore. Strong P underscore. Fireballs strong. This is also the in the infinity blade effects pack. We're gonna set that in. Okay, on. And we're gonna change the location a little bit. The X location is going to be five moving that Ford a little bit. And the scale I'm gonna set to be 1.5 in the X, y and Z now something I can see. Obviously missed in R S M Fireball. We've got no materials slotted in there. And that's just and right, cause we don't want to see that ugly looking grey. So let's select your M S m fireball under the materials. Let's slot in the appropriate one is called M underscore. Fire blast underscore. Ad underscore. Fireball, underscore. Mesh. Emit this guy right here. That's also the infinity blade effects pack. It's gonna take a moment for that shader to compile. But that looks much more like a fireball. Okay, so with all that done, I then need to add one more component here, a projectile movement component. Because we want this fireball to actually move like a projectile. There is my projectile movement component. When I select it, it's just going Teoh, This is not attached to anything. This particular component. It's kind of a special component. You don't have to worry about how it is listed in the hierarchy over here. And how do we want this projectile to move? Well, with that one selected, I'm going to set the initial and Max speed to be 1500. That's going at a pretty decent clip, but it's not too fast. And then I'm going to set our projectile gravity scale here to be zero. Because if we don't, if we started to be zero, it's going to go in a straight line until it eventually is going to hit something, and then we're going to do something with it. Otherwise, you can have it apply gravity, which I don't want it to do. I wanted to just go in a straight line, Okay, so now we need to back things up a little bit. Let's just compile and save here quickly. I need to jump back out to my main level editor in access my project settings, settings, project settings and in my project settings. I need to come under the engine section. In here is something called the collision option. And I want to add a new object channel. So right up here, we've got object channels in trace channels. We're gonna add a new object channel. You'll see why in just a moment. So click this new object channel button. It's gonna say, Hey, what do you want to name this collision channel? I'm going to say we're gonna call this Black Magic and I'll leave the default response here to be block and then I'm going to click. Except now there's no, like, save button here. Anything that is added so we can literally just exit on out of here. And now if I jump back to my BP fireball and come under the collision component down here in my collision settings, find your way on over here. We're going to set our collision presets to be custom and the reason I'm going to say that this is custom is because I want to change what this object type is. I just created an object type by clicking on this drop down called Black Magic. There it is. I want to say Tell other things that I am interacting with that. Hey, this object type is a black magic object type. So depending on with the what's this object type is black magic. We can have different collisions based on different objects in the world. Okay, so let me just double check to make sure that I've got that all looking good here. Our default response is here are all overlap. I'm gonna change them all to be block for the time being. Let me see if there's anything we want to not check. Block. We'll leave it always block for the time being. So custom object type, black magic. And we're going to set everything to block this. Okay, next. What? I want to dio let's compile and save this quickly isn't gonna jump back to my main a level editor and I'm going to hop into our BP interactive object base here. Now, if you recall correctly from way back when this is our parent parent, parent blueprints of our interactive objects out here like our skill diocese are skilled ice is ultimately inherit from this BP interactive object base blueprint. One thing I need to go back and do now that we've added a black magic object channel right there, I need to select our Interact Collider component in here and down in the details panel underneath collision you can see we need to determine what our object response is going to be when a black magic object types such as our fireball interacts with this volume. Currently by default, it's set to block because in our project settings, we said that our default response is going to be block. But what I want to do here is change are over and change our black magic object response for this particular interact Collider trigger volume to be overlap. Now, why am I doing that? Well, firstly, let's compile and save this. The reason I'm doing that is because if we don't set our object channel, here are object response to the overlap. When we eventually shoot these fireballs out, they would collide with the East trigger boxes for all of our skill diocese. And that's gonna look really funny. Okay, So, guys, that is all we wanted to accomplish in this one. We now have a BP fireball created that is going to do it all for this one. Guys, we will see you in the next one. 83. Fireball - Player Setup: Welcome back, everyone. In the last video, we went about creating our BP fireball in this one. Our goal is to set up our player with the appropriate components, variables, functions, etcetera in order to lay the groundwork for our player actually shooting out a fireball. So the first thing I would like to do here is to import a sound effect. I've got a fireball shooting kind of sound effect that I want to import. You should find this attached to this particular video in the course outline. I have mine in my file Explorer here. So I'm gonna come to my Metroid Vania audio folder, where we have been dumping our various sound effects. And with Windows Explorer open here, I'm just going to drag and drop my SFX fireball left. Click Drag it down into this folder. You should be able. Teoh, find this file after you have downloaded it. Likely in your downloads folder. Although you may have it downloading elsewhere, that will be up to you to find Okay, So with that imported, we can then go inside of our A B P player and start working in there. So come under blueprints, characters. There's our BP player. Open it up and I've got some existing tabs open from the previous videos. I am just going to close out quickly on Lee, concerned with the BP player. For now, I'm gonna click on the View Port tab so we get to see our character. Few things I want to add in here. The first I'm going to add is a fireball spawned a point component. That's the point that we're going to designate where we want our fireball to shoot out from . And this is going to be from an arrow component. So in my list of components, I'm going to click Add component, and I'm going to do a search for an aero component. There's Utility Arrow. There it is, and I will name it. Fireball Spawn Point. Okay, It's this giant red arrow sticking out from our characters Pelvis a to moment. Select that. And with that selected over in the details panel, let's change the X location of this to be 70. It's gonna put it out in front a little bit, and I'm gonna change the Z location to be 20. Now, why this exact location? Well, because when we have our character playing a sort of casting animation. Her hand is going to end up it right about this position. So that's about the spot where I want the fireball to spawn from. We can leave the rotation and the scale as is. Okay, so with that in place, we're gonna go on to creating some variables down in our my blueprints panel, and we're gonna be working inside of our magic black fireball section of variables right here. So when we add some variables, we're gonna Adam to this grouping this category. Okay, so the first variable we're gonna add by clicking plus variable is going to be called renaming it here. Be used Fireball course gin mark, this will be a 1,000,000,000 again. I'm going to put it in my magic black fireball a category. Now, this use fireball. The primary use of this one is going to be to drive our animation. We're gonna have a you know, fireball casting animation. So that is a variable that's going to be passed to our animation blueprint by defaults. If I compile this, I do want this to be false. Take creating a another variable here. Coming under variables plus variable. I'm going to create one called be fireball. Ready. Question Mark, This will also be in our, ah, magic black fireball category. Compile. This is well, And of course, it changed my variable name here. I must have screwed up there. So be fireball ready was what I wanted to call this question. Mark, compile that. And I do want this to be true by default. Okay, This one is going to Sorry. Let me flip my page notes here. So this is gonna set true again after. Ah, delay Here. This fireball ready? Um, it's gonna act in concert with our next variable that we're gonna be created years of create a new variable. This one is going to be a fireball. Cool down. We will make this a float variable. Put this in our category of magic Black fireball compile. And the default time I want to set for this is going to be 1.13 seconds. Why that weird value? Well, because that is about the length of time that are casting Animation is when it plays. And I basically want to make it so that we can cast a fireball again once that fireball casting animation has finished up, so you can't spam it over and over and over again. Okay, I'm just gonna be doing some reorganization of my variables here because I'm a d d like that. So I've got be has be magic, viable on top. The next one I'm going to put is be a used firebomb left clicking and dragging over here. Then be fireball ready. Then our fireball cool down left clicking and dragging that right up there that we got data in attributes that is all looking splendid. Okay. Earlier in the course, we made a function called update manner. We need to jump in here and update it because we now have some mana cost values that we want to take into considerations. You can double click on this update manner right here. And if you remember, right, this is where we left off. And on this node right here, I even left a note that said that this is temporary. Okay, What I need to do here is select our update. Mana input node. I'm going to click right here to add a new parameter, and I'm gonna call this magic attributes and are variable type here is going to be our struck str magic attributes. Okay. Now I am also going to add another output. Here, click this plus new parameter And this one is going to be called Sorry, I do not want to add one there. That is my bad. I don't want to add one there. Scratch that. I'm looking ahead to my page of notes. That's not the one I want to add out of our update, man. Here. So now we've got this magic attributes input node right here. I'm going to drag out of this in type in. Break the magic attributes because if you remember in this structure, if I expand is down is got a man a cost associated with it. And I'm gonna plug this into this subtraction node right here. So when we cast a fireball spell, we're going to be calling this function, and we're gonna be taking our current mana amount and we're going to be subtracting the appropriate mana cost based on whatever it is we're trying to cast. In this case, it would be a fireball which I believe was five Mana. I don't really recall off the top of my head. I can right click on this note and get rid of this temporary node Comment for now. Okay, so this function is looking pretty good. I do new need to create another function inside of our BP player here. So if I come over here into my my blueprints panel functions, we're going to create another function. This one is going to be called check if check if enough manner to use magic. And I think that function name pretty much describes what we're looking to do here. So here, I'm going to select my entry tunnel note. I'm gonna add input. This one is also going to be called magic attributes. Let me capitalize that magic attributes It's got that str Magic attributes trucks already a listed in there, which is what I want that I'm going to right click in some empty space here in our graph and I'm gonna add a return node. And with that, select that I want to add output to this by clicking this plus parameter button. And I must have clicked rather fast. It already added one on there I am going to change is to be enough manna question Mark, this is going to be a boolean variable. So we're going to do an evaluation here to see if we have enough manna to actually cast the spell in this case, the fireball. So the way we're gonna do this is we're going to drag out of our magic attributes. We're going to break that structure. We are going to drag out of her man accosts and then put in a less than or equal to sign. And the thing we want to evaluate is if our mana cost is less than or equal to our mana current. And where did I put that in player attributes? There it is, man. A current left click and drag that on top right here. And right up above here, we're going to bring in a branch note. Hold down B and left click. That is going to be the condition we're going to check against in dysfunction. Hook this in. And if this is true, sorry. We actually don't even need that. We don't even need this branch. My bad. We can plug this directly into our enough manner return owed. So this is our function right here. All rights. Let me check my page of notes to see if we have missed anything else that looks to be it for this video. Let's compile in. Save quickly. Still more work here To be done. We still need Teoh. Create the use fireball script that is upcoming. We will see you guys in the next video. 84. Fireball - Use Script: Welcome back, everyone. In this video, our goal is to add the events and write a script to get our player shooting off a fireball . Exciting times. All right, We're going to start off in our project settings here. So jump up to your main toolbar, come under settings, project settings and select input along the left hand side, we're gonna add a new action mapping at the very top. Let's click this plus button next to action mapping, not access mapping, action mapping. And we're gonna name this black magic and we're going to buying two events or to not not events. Two buttons to this event. The 1st 1 we're going to bind to this is going to be the num one key on the keyboard. The 2nd 1 that I am going to bind to this to make this event happen is going to be our game pad trigger game pad, right to trigger. That's what I'm looking for. A game pad, right, trigger. So if you got a game pad that will fire this event off is well, okay, so with that done, we can exit out of our project settings and next we're going to be doing some work inside of our BP player. So come to this directory content. Metro Vania Blueprints, characters. DoubleClick under B P Player to open her up and in the my blueprints panel, we're going to add a new graph. So we've currently got a graph for our move set. This is things like our movement input, jump landing, back dash, etcetera. Wanna have a separate graph for our black magic? So in the graph section, let's add a new graph. Let's call it black Magic and it's already open. So let's see what we can add to it. Let's start off with right clicking in, adding are black magic events are action event that we just created. So the first thing we want to do after we press this button is we want to check if we've got our black magic actually slotted. Now, this is working a little bit ahead, upcoming here in a little bit, we're going to be working on putting together a black magic selection menu so you can slot what black magic that you have active and available for use. You're not gonna be able to use all your different black magic like Yuri electro spark and your fireball at the same time, you can Onley use one of those when you press with white, the right trigger button. So we need to find out which black magic do we have slotted or that honor HUD, that is available to use. And we have a variable that's going to be storing this information. And a list of variables is getting quite lengthy here under our player info category. We've got this. Be magic, Slotted. Okay, we're gonna drag that into our graph. If you remember, right, we are going to be slotting are over here. We're going to be changing out what is slotted based on, uh, the menu screen that were about to be building a little bit later on. And we are going to drag out of this in type in, switch on E B magic. So when we press the right trigger or the one button, we're gonna find out what black magic do we currently have slotted into her HUD and based on which, when we do, we can do something. In this case, we're concerned about the fireball, so we want to kick off some script to shoot out of fireball a little bit down below this I'm going to right click and create a custom event. Add custom event and I'm gonna call this use Fireball. All caps. Sure. Now, with this custom event created, I can call this custom event from here. So I'm just gonna type in use Fireball. So this is essentially a wireless signal. When we press the one button or the right trigger button, we're going to see a sea if black Magic slotted is fireball. If it is, we're going to send a wire list signal to tell this custom event to fire off. The reason I'm using a wireless signal here is because just going to keep our graph a little bit cleaner here. I'm gonna left click and drag around this tap the Seiki call this use black magic for that bit of script. And now I'm gonna move our use fireball off to the right here because we're gonna be building a lot more script for the time being. Because we do want to shoot off a fireball here before the end of the video. I'm gonna change RB magic slotted. I'm gonna manually set this to be fireball here, too. If you want to make this instance edible while we're playing the game, Let's just change that right there. You set that to be instance, Edibles. While we're playing, we can change that up. Okay, So what do we want to dio when we use the fireball? Well, first thing we need to do is we need to check. Do we have enough? Manito actually use the magic, and it's a good thing we created a function for that in the last video. So let's drag and drop dysfunction into the graph. We need to check. Do we have enough manna to use this magic? Now we need to input our magic attributes here. So in our magic black fireball category, we've got fireball attributes. Let's plug this right in here. Now, if you remember right, this fireball attributes struck. It contains information about how much manna does it cost to use this? And in this function that we created the last video. Here it is. Check if enough magic T Mana Teoh use magic. The attributes that we just plugged in here, we're gonna break them apart. We're gonna find out what their mana cost is And if it is less than our current mana were going to say yes, we have enough manna. Let's fire off a fireball. Okay, so we know we're gonna need a branch note here, So let's keep the flow of execution going and put in a branch node. Now checking to see if we have enough manner is just one of the things that I want to check . So let's drag off of our enough manna in typing and we're gonna bring in an and bullion because there's three things that we want to see that our true before we're going to allow a fireball to be fired off. So do we have enough manna? That's one. The second thing I want to find out is is our fireball ready to be fired off by default? It is. So we're gonna drag and drop that on this pin. Then I'm going to click the add pin button to add another input over here. And the thing that I want to check as well is if we are in mist form or not. Now we have not scripted anything related to miss yet, but this is kind of working ahead to make sure that this works. When this course is all said and done, we're gonna bring in this be is using Miss, we're gonna get that that we're gonna drag off of this and type in the word Not so if we are not in miss form And if our fireballs ready And if we have enough manna, if all three of those are true, then we're going to fire off the fireball mawr that to come. Ah, but if it's not true, what I'm gonna do is I'm gonna play a sound, play a sound to D and the sound that I want to play is going to be a V r negative que that one right there This is in your engine content. So if you don't see this particular sound effect, you couldn't come under view options check, show engine content. It should be available for you. So we've got that VR negative Q And you know what? I'm going to right? Click on this pin and I'm gonna promote this to a variable over in our blueprint panel. I'm gonna call this S F X, insufficient man. Even though there could be a multitude of reasons why we were not able to cast this. I'm just going to call it that for now. My insufficient man. A sound. And I'm going to create a brand new category for this in case I want to use it later. And this will be Let's call this our magic general category. There we go. And when we promoted that to a variable, it automatically populated that variable with the VR negative que that we had slotted into this node right here. OK, so all this is optional. You don't have to play this sound effect, but I think it's nice to have Okay, so if this is true, it is all evaluates to true. I want to bring in our function for updating of manna. We want update our Mana like so and I want to bring in doo doo doo doo doo are fireball attributes. Plug this into our update manner like so. And if you remember, update Mana function was doing this, we're taking whatever attributes were plugging in this case, it's the fireball attributes we're breaking our our attributes into the man accosts and we're gonna be subtracting are manna from our current to update our mana amount. Okay, so after we update the man, uh, we're going to bring in RB Used Fireball Dragon dropped that in. We're going to set it, and we're going to say yes. Our player is now using the fireball. Remember, we're using some of these variables to drive our animation, so that's what that one is gonna be used for. Then we're going to set our be fireball ready, drag, and drop that into the graph. We're gonna set that and we're going to say it's not ready right now. Meaning you can't cast another one right now. You only can cast this one for the time being. Then let's bring in the sequence. No, it I'm gonna hold down the s key left click to bring in a sequence Note. We're gonna make two things happen here. First thing, I'm going to bring in a delay note. Hold down the D D's and Dan Key and left Click. We're gonna do a short delay. In fact, I'm gonna make this 1/10 of a 2nd 0.1 seconds. Then I am going to spawn actor from class. The actor I want to spawn is going to be our BP fireball that we just created. There is our BP fireball. Make sure that BP fireball and not the skill be magic Fireball. BP Fireball. Then we need to feed this a transform. Where do we want to spawn this from? Well, we created a fireball spawn point. So let's left click and drag that in from our components panel than off of this weaken. Drag off and let's get the world transform. And this orange output can be plugged into the spawned, transformed input of that node. Then what I want to do is I want to play a sound place sound at location. What sound I want to play. Well, we just import a sound called Fireball. It is this SFX fireball. Which location do we want to play that? Well, why don't we play it at the location of our fireball spawned points? I'm going to drag off of here again and say get world location. Yellow output means I can plug that into the yellow input and then I'm going to set our be a used fireball. We're gonna set that. And remember, earlier we'd set this to true Well, after we fire off the fireball we're going to set this back to false Okay, again. That's to drive some animations for our character. That's to come yet. Okay. So off of this secrets? No. Then the then one branch, I'm I'm going to break off a wire here, and we're gonna bring in another delay, node. And the delay I want to set this duration for is going to be our fireball. Cool down, like so. And when this is done, we're going to say the fireball is ready to be. We're gonna set this. We're gonna set this to true again. So remember, our fireball cool down is going to be 1.13 seconds. And after that has expired, we're going to say yes. Our character, Ken, fire off the fireball once again. Okay, so with all this script done, let me just highlighted here to kind of show you what we got here. Maybe you can pause the video here to see the first part. And here is the second part. That's enlarged at a little bit. Okay, I am going. Teoh left, click and drag Step Seiki, and I'll call this shoot Fireball. Something like that. Now, let's compile in save and a moment of truth year testing this out Now note. Ah, fireball should appear, but the proper an IMS won't be working yet. And there will be no character exertion noise yet. Not a character exertion noise. You should hear, you know, fireballs shooting out. So let's give us a try. Okay? So I need to be sure that I interact with the right Diess year. Well, actually, I don't have to, because in the upper right, you could see that I've already got the fire ball slotted. But anyways, let's pretend I've got interact with that. Get the skill. Okay, Now tap the one key and you can see that the fireball is shooting out. If I turn this way, shooting out and look in the upper right, you can see that my man account is actually decreasing as well as I fire it out. So if I spam the one key really fast, you'll notice that you're hearing that kind of rejection sound. And that's because in the script, if our fireball is not ready and I'm trying to span, that button is basically saying, Hey, you can't use it right now. One of these things is evaluating to be false. Okay, So again, if you tried to test that out and it wasn't working, make sure you got your be magic slotted here, temporarily set to fireball. And we can also test this out. Live in game. If I do shift in F one gonna grab my window right here. Let me jump back to the main level editor. Here's my BP player. Now let me go. Be magic slot. And remember, I made this instant this variable instance variable. I'm gonna set it now to be electoral spark. So now I don't have fire ball slotted in. Let me bring in my play window once again and you can see in the upper right here. I've got electro sparks slotted in. And now if I try casting Fireball, nothing will happen. Even if I collect this fireball skill which I don't need to do right now. Nothing is going to happen. However, shift in F one. I changed my be magic slotted back to Fireball. I will be able to fire that off again. I hit the escape key. Well, long story short, you will be able to fire it out again. Guys, I think the point is proven. We've gotten a fireball shooting out. So happy. Happy day. All right, let's get onto some animations next. That will do it all for this one. We will see you in the next one. 85. Fireball - Animations #1: Welcome back, everyone. Once again in the last video, we got Rvp Player to shoot out a fireball. But it's not very cool yet because we don't have our character playing a cast animation while the fireball is shooting out. And also there is no ah visual effect or character exertion effect while that's happening. So we're going to take care of all that in this one. A lot of work to do here, So let's jump right to it. So come to your content. Metroid Vania Animations folder. We want to do a lot of work inside of our Countess Anim BP double click on her to open her up, and we're going to start off here in the event graft. And if you can't find that it is also in the my blueprints tab, you can double click on your event graft. You find this. Firstly, we need to pass a variable from our BP player to our event graph here to instruct our state machine. What's going on that are Character has used a fireball. So if you remember from our previous video in R B, a P player, I've jumped over to this blueprint right here inside of our magic black fireball, We created a variable called be Used Fireball. And this is what we were going to pass to our anim blueprint to instruct which animation to use. Okay, so now we need to pass that one along to our animation blueprint. So back over here in our Countess anima BP, we are already doing a lot of this off our event. Blueprint update animation. Here is where we're passing all this information from our BP player to this animation blueprint. And I'm gonna drag out of our cast to BB player here and find used Fireball. We're gonna get that. And now I need to pass this to a variable that I create here inside of this animation BP. So let's create one very bowl right there. And we're simply going to call this use fireball question mark like, so that I'm going to drag and drop it. And if I said it right on top of this use fireball, it will create a center straight away. Let me just organize this a little bit better here, and we're gonna be adding to this as we go along. Expand this out. Okay, so that's all good. So now we can jump on over into our state machine and start looking up some animations. So the way to do that is down in the my blueprints tab under your Annam graph. If you click this little drop down here, here is your default state machine. Double click on that. And there it is. Firstly, we need to create a brand new state. We want to be able to shoot out a fireball from an idol or a running animation. So let's right click right about here in your graph, we're gonna add a state, and we're gonna call this stand fireball. And with that position right here in the graph, I am going to double click on it. And we want to instruct what animation we want to have play when we shoot out of fireball. Now, something to consider here is we're not just going to be playing an animation when our character is standing completely still, they could be running as well. So what we need to do is we want to blend together to animations. How are we going to do this? Well, the first animation that I want to blend is our Countess Idol run that you can find here in your asset browser in the lower right. So drag and drop that into your graph. This is a blend space, and the other animation that I want to blend to this is called Cast Simply cast right there . So if you can drag and drop this into your graph, Okay. Now we need to feed this blend space, a speed value that is available right down here in our variable section. That is going to instruct how fast our character is actually locomotive so that they can play, walk, jog, run, etcetera. Not to blend these two animations together. I'm gonna be looking for a special note by right clicking called layered blend per bone. So this is how it works we've got to pose is that it's looking for you. Consider the base pose as the lower body, so we'll consider the lower body. Our legs are walking, are running or jogging? Being from the idol run and this blend pose zero is going to be our upper body. The casting animation. Now, this casting animation basically consists of her sticking your hand out and kind of a cool way there. You can see as I hover over it what it looks like. Okay. And then we want to take the result of this and plug it into this output animation post. Now, something you got to be sure to do here in this layered blend per bone node over in the details panel, we need to set up some extra information under word says layered, set up. Click this little drop down arrow click right here where there is this zero element. We need to add a branch filter. Click this little plus button over here and underneath this zero element, expand that out. We need to feed this a bone name. Why? Well, by feeding a bow name here were essentially instructing this whole deal right here. Where do we want to split our animation? Which bone do we want to split this animation at? Well, the one that I want to split this at is called spine Underscore 01 Now I can demonstrate this a little bit easier by jumping over to this skeleton tab right here. So I'm gonna click over on here. Here is our character skeleton. And in the skeleton tree, I'm simply going to look for spine. And there is my spine. Underscore. Old one note exactly how it is spelled out. If I double click on it, there is our characters. Spine No. One bone. Essentially. What I'm saying here is I want there to be a split animation. I want the idol run for the lower animation from this point down. And I want the cast animation to play from this point up in the animation that we are instructing for our stand fireball. Okay, so make sure you got spine underscore. 01 listed right there. Okay, so that is looking well in. Good. Now we need to add some transition rules. Jump back to your default state machine. Here we have an animation for our stand fireball, but no rules linked to it. So I am going to drag from our idol run right about here. Left click in drag, and it should have just attached there we go create that transition, and then I'm going to drag a wire back. So we want to be able to go from idol run to stand fireball and back again. And if you don't do it just quite right, it's not going to create that transition. Okay, there we go. And then I also I'm going to create a transition from our stand fireball to our jump start state. Like so. Okay, the first transition that we're going to create is for this idle run to a stand. Fireballs to make sure that the arrow is running in that direction. Double click on this transition. And we want our player to transition from an idol run to a stand fireball. When they have used a fireball, you can drag and drop this variable directly in here. That's our transition rule. As soon as we've detected that, yes, they've used a fireball. Play that animation. Okay, jumping back to our state machine here. Let's now set a rule for when we need to go back from a stand fireball to an idol runs double click on this in our transition rule. For this, we're going to right click into a search for time remaining. And as you start to whittle down, what you're looking for is time remaining ratio. Cast that guy right there. So bring it in and then drag off of it. And we're gonna be looking for a less then or equal to float less than or equal to float node. And we're going to say if the ratio of our cast animation is less than 30% 300.3 essentially it's 30%. It still has 30% to G O or less than we're going to transition back to our idol slash run state. Okay, so we got that one done. Let's jump back to our state machine and set our next transition rule. We've got a bunch of transition rules to set in this one. By the way, our transition rule from a stand fireball to a jumpstart click right here. Double click on that is simply going to be Are we in the air? Seacon Drag and drop that variable is in air into the can enter Enter transition were saying Hey, has a player ah, gone airborne? If they have, we're gonna transition out of our casting of the fireball to a jumpstart that is all well and good. Next state that we're going to add is going to be smack dab in the middle here, right click right in the middle of this diamond shape. We're going to add estate. This one is going to be called jump Fireball. Yes. We are going to allow you to shoot out a fireball while you are in the air. 86. Fireball - Animations #2: But first we need to jump into this state and hook up what animation that we want to play. So double click on this and we're going to do a lot like we did before where we need to bring in. I'm gonna right click a layered blend per bone node, because we're going to be combining two animations. Hook this up into the output animation pose right away. Our base pose for this is going to be our third person jump loop, so we should be able to find it in the list. Here, let me just look up, jump whittle it down. Third person, Jump loop that one right there, Drag and drop that in from the acid browser over here, and the other one is going to be our cast node drag and drop that in hook the third person Jump loop up to the base pose and the cast to the blend pose zero, and just like we did before I need to select are layered blend per bone node, and we need to add under layer. Set up zero branch filters. Click this little plus button. We've got to slot in a bone name and That, too, is going to be spine underscore one. Okay, so that's looking pretty spiffy. Now I need to create some transitional rules off of this will jump back out to our state machine here, and we are going to create a transition rule. Well, there's gonna be many rules going to this. Let's do from our jump loop to our jump fireball created transition and then from jump fireball back to jump loop. And then I might as well drag one from jump fireball to jump end is well, and let's do from jump loop to jump fireball. This transition right here. Okay, double click on that. And there is a couple things that we want to see. If they are true, one we're gonna check is our player in the air. So we're gonna get that, Then the other one I want to check is are we using a fireball? Get that so we can drag off of either one of these and type in the word and and plug in use fireball into here. So our transition rule for this is are we in the air? And are we using a fireball? If so, we're going to transition from a jump loop to a jump fireball. Okay, that one's looking pretty good onto the next one. Clicking right here to jump back to our state machine. Let's set a transition rule going from our jump fireball back to our jump loop. This guy right here, note the direction of the arrow double click, and our transition rule for this is going to be I'm going to right click time remaining. And when I'm looking for on this one is our time remaining ratio, third person jump loop. We want to find out how far the way are we through our third person jump looped animation. And if we have Dragon off of this less than or equal to float less than or equal to float less than or equal 2.3, If we've got less than 30% left, then we're going to transition back to our jump loop. As you can see, this is kind of a context sensitive search here knew that I had third person jumped loops that Aziz one of the animations here inside of my jump fireball. Okay, next transition rule that I want to set is going to be from our jump Start up top here down to our jump fireballs the left, click and drag of that and double clicking on this transition note our rule here is going to be Are we in the air? Get that? And have we used a fireball? So this is going to be a similar transition to the one we just added. This jumpstart state is really, really short, But we do need to account for it. And again, you could drag off of either one of these billions and type in the word and And we gotta find out of both of those are true before we can transition from jump start to jump fireball. Okay, let me jump back to our default here. And did we create a transition rule from jump fireball to jump? And we did not. Did we jump fireball to jump end? OK, so we'll get back to that one at the very end. But let's take care of the other ones in place. So hopefully we won't forget that one. Um I do want to create a transition rule from double jumps. Did enough. Sorry. Rather, I want to create a rule from jump start two. I got the wrong What is my notes here? Okay, I'm gonna pause video right here to find out where I am in my notes. I'm on the wrong page. I will be back in just a moment, okay? And we are back. Guys, I had a hard time reading all my crisscross lines in my notes here. I have made sense of it. Now, the next transition that we are going to deal with here is being able to shoot out a fireball from a double jump. So our characters double jump, but we still want to be able to shoot out of fireball. So we need to drag a wire from our double jump start state all the way to our jump fireball . Like so Okay. And this is the transition rule. That guy right there, when you highlight over it, it will highlight the arrow as well. That is the one we want a double click on to set a rule for so double click on that. And our transition here is also going to be dependent on if we are in the air. And if we have used the fireball drag off of either one of these type in and be and Boolean Okay, so that transition is taking care of. Let's jump back to our default state machine. The next one will be from Jump fireball to our jump end this transition right here. Double click on that. Here, too. We simply find want to find out? Ah, if our character is in the air on Lee this time, we're going to say is not in the air because we want to be able to transition out of a fireball jumping fireball to a jump and when our character is new, longer in the air. Okay, not quite finished yet. We are going to jump over to the animation portion of persona up here, and we wanted to add some some jazz, if you will, to our caste animations of Down in the Acid Browser. Let's find our cast animation. So if you double click on that, your character is going to play the cast animation. So that's what our character's upper body is going to be doing when we shoot out a fireball . But I want to make it so that when this animation goes off, we also have a visual effect that accompanies it and a sound effect. Now, typically a t least up until this point, we've get had visual effects and sound effects on Lee triggered through scripting, blueprint scripting. But we can also make it happen here and the way we can do it. Let me just stop this animation for the time being is right up here. We've got this notifies bar. Okay, What we can do is we can right click on this bar and we can add a notify. And it's going to say what type of notified you want to add in your little fly out menu here. And the 1st 1 I'm gonna add is going to be a particle effect. Okay? And when we selected, then you can see it's a little highlighted here in the details panel, we can say which particle effect do we want to add? Well, the one that I want to play here is called p underscore. Countess not want is Countess underscore. Blink strike flash. It's kind of got this reddish look about it, and I'm going to set a locational offset for this that it plays out in front of our character a little bit so are why location is going to be 100. And the Z location here is going to be 50 now. I know down here, you've also got some additional trigger settings. Notified Trigger chance is currently set to one, and you can see from the tool tip that this defines the chance of this notified triggering . So you can have some randomness here by setting this toe one like I have it. Now. That means whenever this animation is triggered, this particle effect is going to play. So if you want to add some randomness here, set a value between zero and one and that is the percentage chance. Okay, um let's see. So I didn't want this to play right at the very beginning of our animation. I'm actually going to left click and drag this to about about you can actually, right click on that little bar. It there to set this notify begin time going to set that to be 0.1 seconds so you can drag and drop it along. This timeline here is my timeline slider for the animation. And so you kind of get an idea as to where this is going to play boom right about there. That would be pretty good. Right? Okay. Next I want to add another notify. I can add another track right here if I want to. So I'm just gonna click right here to add another tracks. Just gonna make it read a little bit cleaner. I'm gonna right click on this top Most track add Notify and I want to play a sound And I'm gonna right click on this bar right away and set the time to be at the zero second marks at the very beginning and over in the details panel, The sound that I want to play is gonna be called, uh, effort. Underscore ability. It is a Countess effort. Ability. Which one of these will want to play ability? E underscore to now? I don't know what the difference is between these two. They look pretty much the same. I don't think it really matters which one you select. But now, if I click play kind here, that's going to sound like sound and look like Okay, well, with all that done, guys, let's go ahead and click. Save up here and you can see open some different tabs here as we move to different tabs of the persona editor here, let's give this a try. Am gonna jump into our level. We're gonna hit play. I am. Firstly, going to collect are fireball skill. So right now, if I hit the one key well, I could technically still cast it out because I still have it set that we can shoot out the fireball right away. So there you see a working from a stand state. Let me try it from running. Okay, We got some problem. There were it got caught up. Probably related to our trigger volume. So let me just keep running over here. There's one he let's try from. I'm gonna have to escape because I ran out of man again. So can't currently cast it anymore. So I've got some warnings going on. Let me see what this warning is all about. W widget. See? Okay, that is already added to the screen. OK, that's fine. Let me jump in and play, and I'm going to jump now. You can see that I can do from a jump. Well, let me get the double jump right away, okay. And then from a dull job I can't as well. Okay, so that is all well in good. Of course, I've got this problem going on, which is causing me to get stuck, can't run and cast it. So let's figure out that problem now. One thing I noticed there while we were playing is the fireball. Onley stopped when our character was running. So there's got to be some sort of a problem with the collision of our fireball and our character because they were probably bumping into each other right from the spawn there. So let me go into my blueprint, actors, and let's jump into our BP fireball here. And if I select our collision over in the details panel, I can see that currently we're studying everything to be block our pawn here. We probably want to ignore the collision with our pond ourselves there. So I'm gonna set that to ignore is, Well, let's go ahead and compile and save. And let's try this one more time. Let's play and again I can cast Fireball because I've got my one variable set to fire ball inside of my BP player. And now if I run and shoot, there seems to be no problems. All right? That looks like it is working as intended. And again, the reason I didn't have to collect the fireball skill from that diocese. Because inside of my BP player, I said, this be magic. Slotted is said to Fireball. So that's how it new. All right, guys, that is going to do it all for this 1 may be a sanity. Compile and save for any other blueprints that you've got open here that will do it all for this one. We will see you in the next one. 87. Fireball - Camera Shake: Welcome back. Once again, everyone. Well, we've got a fireball capable of being shot out by our player character in this one. We're gonna create a camera, shake blueprints so that when our fireball impacts something, we're gonna have a little bit of their, you know, a little bit of more of an impactful sensation that we see on screen. So let's start off in our content. Metroid, Vania Blueprints, Miscellaneous folder. This directory right over here. And then let's right click. We're going to create a new blueprint class, and this one is not part of the common classes. We're going to search for it down here, and we're going to do a search for camera shake. This is going to be our parent class right here. Camera shake. And we will select that and name this BP under score camera shake. Let's double click on this bad boy to open him up. And this is what you need to know. Over on the right hand side, you've got a bunch of details related to how you want your camera shake to behave. You've gotten oscillation duration. This is how long you want your camera shake toe last you've got rotational oscillation in the pitch roll and yaw. That's basically, you know, you can rotate in the X y and Z coordinates. That's what the pitch, yaw and roll all represents locational oscillation. So you can have this camera move in and out or left and right are up and down. And then you've also got F O V oscillation, which is like your zoom in zoom out kind of camera shake. So let's set some parameters here. I'm not gonna set all of these. I do have some specific ones in mind. For starters, I'm going to set our oscillation duration. This is how long our camera shake is gonna be to 1/4 of a second. Now, you do have some blend in times and blend out times to sort of smooth out that transition. If it's gonna be a little bit longer, this is gonna be a really, really brief oscillation. I'm just gonna leave these unchanged. I do want to asa late this rotation, Aly. So I'm going to expand our rotational oscillation here and under the pitch settings. I'm going to set the amplitude to five, and I'm gonna set the frequency 2 50 I definitely encourage you guys to sort of fiddle with some of these settings to see how much they impact things like you set your amplitude too, you know, 100 versus five. You're going to see a lot greater effect. This initial offset here. Ah, instead of random, you've got well, random and zero. I will set it to random is gonna be fine. And let's let's leave these always default. Amplitude and frequency are the big ones here. Let's go under, yaw. I do want to shake it that way as well. Under the amplitude setting, I am going to set that to five. And the frequency is 50. Just so you kind of get what pitch in yaw are. Well, I used to work on a major league baseball game back in the day. So if you think about pitch, that's kind of the angle that a ball would be hit. So, you know, on the ground or up in the air, yaw in the terms of baseball, you could think of yaw is being left to right rotation, you know, left field, center, field, right field. So that sort of rotation along that axis, um OK, so, roll, I'm gonna leave unchanged Locational oscillation. I do want to set some stuff here. Let's expand out the X location oscillation. I'm gonna set the amplitude here to be 50. The frequency is going to be one. Why amplitude I'm gonna set to be Ah, Leave that it 00 as well. But the Z, I am going to set to be amplitude of 10 frequency of 50 as well. Okay, with that all done, I will compile and save here. That is literally all we wanted to do in this one. We needed to get this one out of the way for our next video in which we are going to create a fireball damage script. We'll see you there. 88. Fireball - Damage Script: Welcome back. Once again, everyone in this video we're going to be doing some work inside of our BP fireball blueprint. We're gonna be writing a script that will cause damage to any actor that we intend to receive damage such as an enemy. Now, a little bit later on this course, we will be creating a dummy enemy to test this against. But we're going to go ahead and create this hit fireball script right now so that we get this out of the way. Come under your Metroid, Vania Blueprints, Actors folder, Find your BP, Fireball Double click on it to open it up. And here in the event graph, we have some events by default that I am going to left. Click and drag and delete out because we want a different sort of event here. I'm gonna right click and search for event hits. That guy right there. We want something to happen when we detect that this blueprint hits something else. And the first thing I want to do when we detected this hit something else. It's to drag off our execution, wear here and do a spawn emitter at location. I want to play some kind of emitter at the point where it hits something. The middle template that I'm gonna plug in here is going to be known as Fireball Underscore . Strong. You're looking for this P fireball Strong muz flash. Now, this is in the infinity blade effects pack. And again, if this affects pack is no longer available to you. When you view this video, you can use anything you want. Now we need to feed this a location where we want this despond. Well, when we detect that this BP fireball hits something, it is going to output. Tell us where the hit location is, so we can feed this into the import input of our spawn emitter at location. Okay. And any time you spawn any mirror, you have any minute playing. You usually want to accompany it with dragon off of here. A play have caps, locks on place, sound at location. Let's feed this the same location as our it events, and we want to put in here the explosion explosion que. This is a sound that's in the currently available starter content. I use it quite a lot for demonstration. Okay, The next thing I want to do after we spawned emitter and play A sound is to drag off of here And let's type in play world camera shake That's the know that you're looking for. And wouldn't you know it? In the last video, we created a camera shake blueprints so we can slot that in right here where it's looking for a shake class. There's our BP camera shake, and it needs to know what do we want is the epicenter for where this is going to play. Where is this camera shake going to be centered on? Well, I'm gonna take the hits location, plug it into our epicenter here. Now, our camera is further away than the epicenter as to where this fireball is going to impact . So I'm gonna set the outer radius here to be 1000. And based upon how we have our camera set up, we should be able to see our camera shake just fine. Okay? Continuing on with our script here right after this, After we play the world camera shake, we're going Teoh, destroy the actor. In this case, we're saying we want to destroy ourselves this BP fireball. So upon impact, Fireball, go Bye bye Now. After this, I'm going to right click, get player Ciric ter And then we're going to drag off the return value here in cast two R b P player like so And then out of our as BP player, I'm gonna drag out and type in fireball attributes, attributes We want to get our fireball attributes variable That's located inside of our BP player blueprint. And I want to drag off this in, Say break. Remember, that is struck variable. So it contains a lot of information inside of it, and I'm gonna expand this down. Like so. The thing I'm trying to get to is our damage amount. Now, back in our BP player, just gonna click over here. You don't have to do this. This is just to show you here's our BP player over along the left hand side. We've got our magic black fireball. Here are fireball attributes that struck variable and here were saying that our fireball is going to do 50 damage now, This is a number that we're trying to get it over here in our BP fireball. So here's our fireball attributes were breaking this open and we want to access that damage amount that we're storing in this fireball attributes variable. Now, what are we gonna feed this into? Well, we're gonna feed this into right clicking a node called apply damage. So this damage output goes into the base damage of the apply damage. Make sure you keep your ex. Whoops. Hold on. That was not intended. Take your flow of execution here, plug it into the apply damage. Now, one thing we do have to feed in is which actor do we want to damage? Well, where we get this from the input for this is gonna come way back over here in our event. Hit When we hit something, it can output. What is the other actor object reference that we hit So we can drag this all the way on over to our damage actor to say that is the actor that we want to damage. Now this wire is rather unsightly. So what I'm gonna do is I'm going to create a couple reroute nodes here by double clicking on this line will drag that down and then over to the right here. I will also create another reroute note to kind of snake this around like so. Okay, so just kind of showing you the script that we have here. Let's kind of run through it here. Quickly. Event hit. We're gonna feed the location into a spawn emitter at location that is RP fireball strong muz flash. Then we're gonna play a sound at location are explosion que. Then we're gonna play our world camera shake R B P camera shake. Then we're going to destroy the actor ourselves. BP Fireball. Then we're gonna get the beaver castor R B P player here so that we can access our fireball attributes and know how much damage it's meant to do and then apply that amount of damage to the actor that this fireball actually hits. Okay, let's quickly compile and save here. And the thing I really want a test here is to see if we have a particle effect, a sound effect and some camera shake going on the whole applying damage. We'll explore that later when we create a dummy enemy. So what? How I'm gonna test is that I'm going to jump back into my test map here. I am going to place. Uh, I'm just gonna place I guess a basic cube out here in my level and a dragon dropped that in hit to the end key to snap down to the floor. And then I'm just going Teoh his my space bar and scale this up like so and like so so that I've got a little bit of a wall here. And then let's click play and test this out. Okay? So currently I still have my magic slotted as the fireball, so I don't actually have to collect the diets, but let's see how this goes when it impacts a wall here. All right, so you see the impact effect. You hear the impact effect on you see the screen shake a little. So job well done, guys are fireball Script here is complete. Let's left click drag around all this. Tap the Seiki and we'll simply call this hits fireball script compile and save one more time. Well, guys, that is going to do it for our fireball Siris of scripts here onto the electro spark section. We will see you there 89. Electro Spark - Blueprint: Welcome back, everyone. In this series of videos, we are going to be working on putting together our electro spark skill. That's another black magic skill here in our player is going to acquire that skill. When they interact with this diess right here, it's gonna be pretty cool. It's gonna make our characters sort of animate up into the air just a slight bit off the ground. And there's going to be this electricity that sort of encircles them. And they're going to apply some damage to anything within that radius near our player where all that electricity is flowing. So to get us started here, what we need to do is we need to create an electro spark blueprint. Here I am in our content Metro Vania Blueprints, Actors Folder and just kind of like we did with our BP fireball. We need you right Click create a new blueprint class. This will be based on the actor class, and we're gonna call this BP underscore electro spark. Okay. And then we're gonna double click on it to open it up, and we're going to add all the components necessary to make this happen. So we're gonna start off by creating a are adding a new component. This is going to be a sphere collision right down here. And I'm gonna call this simply collision, and I want to make this our new routes. So I'm just gonna drag and drop it right here on top of our default seen route. And it says it will drop it here to make this the new route, which I do want to do. Okay, right away. As we add each of these components, I'm going to set their details. So with that selected over on the right hand side, let's come under Spear radius. And we're gonna make this way bigger. Something like 500 for our sphere radius much, much bigger. We're going to come under the collision settings, and we're going to change the collision preset here to be custom, the object type that we're gonna set for this is going to be black magic. And then down in our various collision responses, weaken set this to block everything. Although we wanted to ignore the pawn and we eventually wanted Teoh overlap an enemy. You know what? While we're here, we're going to create a new object channel called enemies. So let's just pause right here. By pause. I mean, leave right here. We're gonna jump back to our project settings. Jump here to project settings in over along the left hand side, under collision, we created an object channel called Black Magic. Let's create a new object channel. We will call this one enemy. We can leave the default response to block, and we will accept this. And that will add a new object channel. We can exit out of our project settings here and jumping back to our BP electro sparked blueprint. If I compile this, you can see that now, Over in the right hand side, an object response for enemy is now available. I'm going to set this to be overlapped because we want this particular sphere to be able to overlap anything labeled as an object type enemy. Okay, next thing I'm going to do is add a bunch of V effects particle systems. So it was at a component. This is going to be a particle system, and we're gonna call this V f X underscore, and I'm just gonna leave it at that name for now. And the reason I'm going to leave it at that name for now, by pressing enter is because I want Teoh select or right click on this and copy it. And I'm then going to select our collision component here. And I'm going to paste it once, twice, And it actually is just renaming it particle system. I thought it would actually upend vfx 0102 on to the end of this. It does not pace again. And then we're going to paste again. Essentially, we want five particle systems out here. So let's start with this top. Most one. I'm just gonna hit f two to rename this 1st 1 vfx underscore. Start up gonna hit F to on the one right below and call this the FX underscore Lightning lightning. I think I spell that right. Right. Underscore old one Then I actually want a copy part of that name Left click control Seed. A copy of part of that name because I'm going to use much of a similar name for the rest of these. So hitting up to on this other one gonna hit control vida paste, that name. And I'm just gonna call this one, right? Underscore 02 again. You can rename it over here or in the details panel. Then I'm going to select this one hit f to pace that name and gonna call this left Underscore 01 Then I'm gonna hit F two on this one. Hit control V to pace my copied name. And we're gonna call this left Underscore. Oh, too. The reason I have multiple ones in here is because I want several lightning effects encircling our player is just going to look better that way. And I got that through some trial in there. Let's start with RV effects. Start up. So select that component and right out the gate Here, I want to slot in a particle template. This one is going to be do a search for fire. Underscore. Charge. Underscore. 01 The one you're looking for here is this one. The p underscore our burst fire charge. Okay, you kind of saw it flare interview there, and I'm gonna set the size for this to be a uniform of three in the X y and Z, that's gonna look kind of fancy when we start up this effect. Okay, for R V effects Lightning writes gonna slot this as world wind and I spell whirlwind Wrong . That's embarrassing. Whirlwind underscore Lightning world wind underscore. Lightning underscore Vang Underscore. Old one. That one looked pretty good. I'm going. Teoh set the scale to be too in the x, y and z And then I'm gonna rotate this gonna set the X rotation to be 90 so it's gonna be more facing the camera. You see, all that thing looks kind of cool, right? And I'm also going to set this custom time dilation from 1 to 2. What that's going to do is it's going to places it or play the particle effect at double the speed. So think of this as, ah, speed, modifier of sorts. Time dilation of 0.5 would be playing it at half speed, that sort of thing. Okay, then I'm gonna set, uh, next one to right 02 We're going to slot in that same particle template. In fact, if I just do a search for Vang underscore 01 There's our lightning thing gonna size it up to be twice the size, this one actual set to be 1.5 times the size. I got one a little bit bigger than the other. That's what I got going on one a little bit bigger than the other. The rotation can stay it x of 90. So make sure you set that to 90. And the custom time dilation for this, I will leave as is. So we got one at one point. Oh, and one at two point. Oh, so we're gonna do much the same here for our lightning left. Select your lightning left slot in Vang. Make sure it's that lightning 01 This one. I am going to sets to be two times the size. Our X here is going to be negative. 90 so spinning in the opposite direction. And I'm going to set the custom time dilation here to be to And then our last one here of the FX lightning left to We're gonna slot in that Vang that P World Wind Lightning Vang No . One. We're gonna set our scale here to be 1.5 for the X, Y and Z, and a rotation here is going to be negative. 90 is well, so some of these are spinning around to the left. Some are spinning to the right. Some are going a little bit faster. Skill. A little bit bigger. Smaller, etcetera. Okay, So with that all done, let's compile and say that is all we wanted to accomplish in this one. Lets keep momentum rolling. We'll see you in the next video. 90. Electro Spark - Player Setup: Welcome back, everyone. In the next video, we are going to be putting together an electro sparked use script in preparation for that one. In this video, we need to add the audio, the variables and the functions needed for that upcoming electro spark use script. So let's jump right to it. First things first. I want to import in a sound effect. You should find that sound effect attached to this video lesson. Go ahead and download it and import it from there. I have my sound effect located in this particular folder on my one drive. Once you have downloaded it and for you guys after you downloaded it, it'll probably be in your downloads folder. For me, it is in this folder. You can simply locate it left, click drag and drop it into your content browser. Note our location here content Metro and Vania Audio. Once you see that little plus symbol, you can release your left click. And there is our SFX Electra spark that we're gonna be making use of soon. That is now in place. So the next order of business is we need to do some work inside of our BP players. to come to this directory, double click on your BP player and open her up. All right, so first things first along the left hand side, we want to add a new component. And the component that we're gonna add is called a floating upon movement components. Now, this is going to be used in this video. And also for another. Not in this video for this skill are electric sparks. Skill as well is our missed ability, skill when we can transform our character into Miss. What this is going to allow us to do is if our character is falling, we're gonna be able to use this component to essentially freeze our character in mid air if they choose to use the electro sparks skill. Okay, so that's a little confusing. Stay with me. We'll get there eventually. Okay, so that's in place. The next thing I want to do is create some variables and these variables are gonna be existing in our magic. Black Electoral Spark section currently consists of three variables. Let's go ahead and start creating them. The first variable we're going to create is called be used electro spark question Mark this boolean variable is going to be primarily used to drive which animation our character should play when we get to hooking up animations for this skill. Now I need to put this in the appropriate category so I could do that over here in the details panel right here. Or I could left click and drag it on top of my electoral sparked data. So it is now in the appropriate category. Okay, The next variable I would like to create clicking the plus variable button. This is going to be another Boolean. This will be be electro spark ready question mark. I will drag and drop this into the appropriate section as well. Now this one is going to be used in conjunction with the next variable that we're going to create. Hear clicking this plus variables button. This new variable that we are going to create is going to be called electro spark. Cool down. This won't be of a Boolean. It will be a float variable. Let's left click and drag it up into the appropriate section. So let's compile here quickly and set some default values. For starters, we've got this be used electro spark. We do not want to have that set to True by default. Leavitt. False as it is. Okay for electoral spark ready for this bullying. We do want to set it to be true. That is going to be used again in conjunction in conjunction with our electoral spark. Cool down, which I will set the default value to be 2.1. The idea here is we're gonna say yes, electoral spark. You are ready to use this and then as soon as you use it, it's gonna be flipped to false. And then after this time, duration passes 2.1 seconds. Where you going to then? Flip it to true once again. Now wide. 2.1 seconds. That's kind of a weird value, Mr Wandera. Well, the reason being is because the animation that we're going to have our character play when they are casting this skill takes 2.1 seconds, At which point I'm going to say, Hey, you can cast it again. Should you have enough manna? Okay, so all that is in place. Next, let's come up under our functions section. We want to create a couple of functions that we're going to make use of in the next video. So let's click this plus function button. The 1st 1 we're going to create here is going to be called Electro Spark on. Obviously we are going Teoh call this function to happen when we have activated our electoral spark. First thing I want to do is bring in a character moving component and off of this I'm going to drag off, and I am going to type in is falling, depending on if our character is falling or not. There are various things we've been wanting to do in this project. This is another case where we want to do something special. If our character is falling, let's drag off the return value here and bring in a branch, and that's going to allow us to specify what we wanna happen if it's true or false. If we're falling, let's work off the false branch first. If we are not falling, I simply want to disable input. Now, this does require a player controller, so we can simply right click in some empty space here and type in get player controller. This is pretty self explanatory. What this is going to do is if we are not falling when this gets called, we're just simply going to disable any sorts of controls that are Player may want inputs such as, you know, moving left and right pressing a jump button. That sort of things, simply, your controls aren't gonna work. I'm gonna bring in a little re round note here by double clicking on that wire because I'm gonna be snaking around a series of nodes right up here. Okay, So if it's true that our character is falling, something I want to do here is bring in our floating pawn movement and then drag off of that and we're going to say activate. And the reason we want to do that is because if we call our electro Sparks skill, our character is simply going to freeze in mid air for a second. Okay, so this floating, pawned movement is good for that. It's essentially a way to kind of hack them from falling. They're just gonna freeze their pause in mid air. In addition to that, I want to bring in our character movement component, drag and drop that in, and we're going to drag off of this and were simply going to say, De activate. This is a way of just saying, Hey, we're just activating are floating pawn movement component. We don't want our character movement component to be working at all. Okay. And then take this and we still want to disable input, whether that's true or false. So this is the script that you should have for your electro spark being on. Okay, that's looking good. Let's create another function over here, and I am going to take a little shortcut by trying to duplicate this once. I'm just going to right click on this and duplicate our electro spark on, and now we're going to rename this electro spark off. The reason I wanted to duplicate that is because there's a lot of nose here I want to share . I'm gonna delete out these three nodes. However, I do want the floating upon movement, and I do want this character movement and I do want this player controller. However, I am going to delete out these three top ones. First thing that really didn't save me too many notes. Now did it get dragged off of our get player controller? And when our electric spark is turned off. I want to enable input. Once again you can We will accept. Controls your controls, Dear user. Then we're going to say floating pawn movement gonna drag off of this and we're going to say, Hey, we had it activated. Now we want to deactivate it. And then we're going to take our character movement drag off of this and we're going to say Activate that once again. So once our electoral spark has turned off, we're essentially saying, Hey, if floating pawn movement was turned on to freeze me from falling, we're gonna deactivate that and we're going to reactivate our character movement component . Alright, guys, let's compile In savior prep work is all finished for our electro spark use script that's coming up. Next video. We'll see you there. 91. Electro Spark - Use Script #1: Welcome back, everyone. While we did a little prep work in the last video for this video in this video are electro spark use script. Our goal is to add an event in right script to get our player casting out there. Electro spark offensive magic. So let's jump right to it. Let's jump to our content. Metroid Vania Blueprints Characters folder there. You'll find BP player double click on her to open her up and we're going to be working in our black Magic tab. This is where we created the script for our shooting of the fireball. If you don't see it up here, you can access it over here in the my blueprint panel. You should have that black magic tab right there. And if you really don't have it, you can click right there to create a new graph for black magic. So the good news here is we're gonna be able, Teoh, borrow copy and paste. Some knows that we created when we did our using of the fireball script. First things first like we did before. When we created our shoot fireball script, we created a custom event called Use Fireball Down, below, down here. I'm going to. Right click typing custom event in. We're going to call this one used e. I'll do all cap, just like I did before. Electro spark. Okay. And with that created. Now, Aiken, slide over to the left here, and we've got our input action. Black magic that's hooked up to a keyboard button as well is a but Narcan, our controller. And we're going to say if RB magic slotted, that is in our player info. If this be magic, slotted variable is electro spark, which I am manually changing to electoral spark right now. If it is that then off of our electro spark, we are going to call our use electro spark custom event. So this is just kind of a wireless signal right here to tell this custom events to fire off . Okay, Right off of this event. We can copy and paste some of our nodes up above from our use fireball. Which ones? Well, we're going to start with this check if enough manna to use magic all the way up through this update Mana function right here. So left, click and drag. Grab all of these right here. Hit control C and down here I'm gonna I'm gonna get myself a little bit more room. I'm gonna hit control the let's bring these on down a little bit lower and let's take our used electoral spark and plug it into the check if enough manna to use magic. This is a function that we created, and we need to plug in some magic attributes. And for this we're gonna be plugging in our electro spark attributes and again inside of this custom function. If you find it over here, it is going to extract how much Mana is in our electoral spark attributes. In this case, it's gonna cost 25 it's gonna see Do we have enough manatee even use the magic Now, some of these bull Ian's hooked up are not quite right. Like Is fireball ready? No, we don't want to check if the fireball is ready for use Electro spark. We want to check out if you, uh the electro spark is ready. So what we can do here is we can simply right click on fireball ready. We can say replace with. And the one that I'm looking for is electro spark ready. Be electro spark ready. There it is. That's another way you can swap out some variables that could have simply dragged and dropped it from here is well, so we're gonna check if we have enough. Man, we're going to check if electro Spark is ready. And we're also going to check if we are not using our missed ability. And if all those air true, we're going to update our man amount. However, we don't want our fireball attributes here assessed. We want to right click on this Replace with our electro spark attributes to make sure you swap that out. This is all fine and dandy as well. Everything's good to go there. Okay? So after we update the manner, the next thing we want to do is we want to bring in our be used electro spark gonna left click and drag. We're going to set this and I'm gonna set this to be true. So all that happens to be, you know, you can use it. We're going to say yes. We are using electro spark, and then I'm gonna take electoral spark ready. Be electro spark ready. We're gonna set that and we're currently going to set that to false as in? No, it's not ready anymore because we're already using it. So again, use electro spark is gonna be used to drive our animations, and this one is going to be used in conjunction with electro spark. Cool down to determine if we can use it again. After this, I'm gonna bring in a sequence. Node shortcut is to hold down the S key and left click. There is a sequence note. And now for this next bit, we need a couple of timelines. Or rather, we need one timeline that's gonna have a couple of tracks inside of it. So let's right. Click in some empty space, search out a time line and you'll see why. Here in just a little bit, we're gonna call this electro spark. I'll call it Electoral Sparks scale, even though it's gonna have to tracks inside of it. So once we call this electro sparks scale, it's double click on this timeline. We're going to add a couple of tracks inside of it first, So let's change our length here to be 1.9 seconds. The first track I'm going to add is in event tracks. You can add that by clicking right here. And I'm gonna name this track Disable electro collision. So what's gonna happen here is we are going to spawn in our electro sparked blueprint. And then at some point along this timeline, we're going to disable the collision from that. Because remember that blueprint, that electro spark collision blueprint that we created did have some collision in it. And just to kind of drive home this point, there's our blueprints. Are actors are BP Electoral Spark. And remember, we had this collision component right there. And with that selected, actually, if I right click in this menu tap the f key, I could just frame up on it. So we want to be able to away to talk to that, to tell it to turn off. Okay, let's jump back to our BP player here, Okay? So with this track created, the only thing I need to do is this right Click in our graph over here. I'm gonna add a key. Doesn't really matter where you right click, because we're going to hard set some time and value values here. Our time here is going to be 1.8 seconds so at 1.8 seconds in value can be zero. Doesn't really matter for that, because this is going to be an event that is going to be good to go. Now, if I jump out of this timeline that we are inside of right now, you can see we've added this disabled electro collision exact output pin right here. Or we can make something happen at that 1.8 2nd mark into our track. Okay, let's add another track. This one is going to be a Philip track, and I will call this one scale, and this is going to be used to scale the visual effects of our our BP electro spark just to give it a little extra flair. So we're gonna be adding several keys to this. Ah, the many of them, in fact five. Let me flip my page of notes. Five of them? Yes. So, again, it doesn't really matter where we right click in this graph, right click at a key. 1st 1 will be set at time zero a value of zero right click again at a second key. This one will be at time 10.1 seconds and a value of zero yet then we're going to right click again at another key. This one will be a time of 10.25 seconds, but a value of one It's gonna jump off the graph here. But if you're right, click tap that f ke It's gonna frame all the keys that you got in here J Then I am going to right click again at 1/4 key. The time for this is going to be 1.8 and the value is going to be one. And then I'm going to right click one more time again. It doesn't really matter where and with your key selected, I'm gonna set my time to be 1.9 and my value to be too Okay, so you can choose right now you've got these synchronized view on words trying to keep your two different graphs your synchronized Just gonna uncheck that enough. I right click in here tap that f key. We can zoom up on all of our keys to make them all appear in view. And this is not really going. That one's trying to synchronize view. I'm gonna unseat green eyes. Tap that f key And there it is, all of our keys. Right. Okay. So with our time line created, let's jump out of here. I think we've got this all look incorrect, and we're not gonna be using this just yet. I'm gonna move this over to the right. Our timeline There. You can see our scale output for our float track that we just created in the last video. Okay, so we want to build off of our then zero branch first. So again, we're evaluating a bunch of stuff to see if it's true that we've got enough manna and stuffed even cast this then off of our then a zero branch. We're going to say electro spark on. And if you remember, right, this function is going to do all this stuff primarily. It is going to disable your input. Okay, Which is important. Kind of need to do that. Jumping back to our black magic tab here. Then I'm gonna bring in a slight delay. This is gonna be a delay of we will say 0.3 seconds. This is gonna be a slight delay from the time that we cast we, uh we elect to say yes. We're going to cast electro spark until you see the visuals kind of flare out. Okay. And then after this, I'm going to set our used electro spark left click Drag this in. We're going to set that two false and again that's gonna be used to drive some of our character animation stuff. Okay, so it's gonna be turned off now, after this. Don't want to use the timeline just yet. We're going to drag off this in type in play world camera shake. Kind of like we did before with our fireball. We're gonna play some camera shake. We can use that. Same a shake class that we use before the epicenter. For this, let's grab our capsule component left click and drag that down into the graph. We'll drag out of that and we'll get the world location to say that's gonna be the epicenter of our shake. And let's set our outer radius here to be 1000. And because our camera is positioned where it is, that should shake nicely. Okay, Right after we're playing our camera shake. Here we are going Teoh Spawn actor from class and the actor that we want to spawn in is our electro BP electro spark. That was this fancy looking guy. Now we need to tell this. Where do we want this to spawn in? We gotta feed it a spawned transformation. Ah, What I'm gonna do is I'm gonna right click on this spawned transformation pin, and I am going to split it, and that's going to allow me to extract the or basically specified the location, the rotation and the scale. I'm going to say the location that I want this to play is going to be ah, modified location from our world location. I'm gonna drag off of our capsule components world location hit the plus symbol, and I'm looking for Vector plus vector. And I'm simply going to add 152 z value. So I basically want to spawn this BP electric spark up above a little bit. Where our capsule component is that surrounds our character now spawned, transform rotation that can stay on zeros, as can this scale. That's all well and good. Okay, moving along after this, we now want to plug into our electro spark timeline. I'm gonna plug this into play from start so that we ensure that this is always going to play from the beginning. Now off this well, that's see, There's multiple things we can do here. Let's do this first. Let's drank off of our spawn BP electoral spark off of the return value. I'm gonna drag off and get the collision get its collision. And by that I am referring specifically to this component in our BP electro spark, Our collision component. Okay, jumping back to our BP player. And one thing I want to do is dragging off of this. I want to type in set, collision enabled. And once we've hit the 0.1 point eight seconds into our timeline, our event timeline had at 1.8 seconds in, we wanted to disable the electrodes collision. So that's one thing we wanted to do. Another thing I wanted to do is after this timeline is finished, I want to drag off of our BP Electra spark, and I'm going to say, destroy the actor. So once this 1.9 seconds this past year, we're going to say bye bye, BP Electra Spark, You're gone now, while this is going on, we want something to happen and the thing we wanna happen is we want to take our collision component here. Drag off of this. We want to type in set world scale three D. So while this timeline is playing, we're going to update with world scale of our collision component, and we're gonna update it by this. Amounts were specifying with our scale float weaken. Simply apply this to this vector input, and so that's going to scale it appropriately. Now, if you remember right here in our timeline, you just kind of shrink this all little bit easier. You can see this. Here it is. Oh, it's being so, so difficult. Okay, so we can see that at the very end. For example, we are going to be taking this and going to times the size at 1.8 is going to be at 1.0 size. Basically, it's normal size at the very beginning. This first key, it's obviously very small, very small, even attempt of a second in. And then from 1/10 of a second to 1/4 of a second, we're gonna be scaling it up to its usual size. Okay, We are not quite finished with this yet. Let's jump back to our black magic. We got one more bit of script to add off our then one pin. 92. Electro Spark - Use Script #2: The one thing we still have to do here is deal with our cooling down of our ability, our skill here. So this is how we're gonna do this. We're going to drag off of our then one off the sequence. Note we're going to bring in a delay node. And the amount that we want to delay by is our electro spark. Cool down. Plug that in. And if you get where we are in this massive script right here is that sequence. Now what kind of right in the middle there, and then after this time has passed, we're going to get our electoral spark ready. Be Electra spark ready. Gonna drag that in and set it back to true. And then after this, we're going to get our electoral spark off function. Drag that in and plug that in, like so. All right. With that whole script written, I'm gonna left click Drag Tap the Seiki, And I am going to What am I gonna call this? This called. We call that shoot fireball appear so I'm going to call this Ah, use e electro spark. Let's compile. See if we got any airs here. We don't let save. And again I do have my be magic slotted already set to electro spark, so I don't even have to collect this ability. So let's go ahead and jump in and play and see what the results are. Hut is going to fly on here. There. I could move in the upper right hand corner of my HUD. You can see that the electro spark skill is already there. So I'm gonna tap with one key, and you can see that the camera shake that that ability kind of went off and everything is good. Now there is a few things wrong. As of right now, I currently cannot move, so that is obviously a problem. So let's explore what's going on there now. The obvious place to look here is I must have something wrong in my electro spark off function. Let's so let's jump on over there And sure enough, there it is. This is something to take note because this seems to happen a lot. Whenever I work with the player controller and the enabling and disabling of the input, you'll notice that I have my get player controller plugged into the target as opposed to the player controller. I'm gonna hold down control left, click and drag to make sure that it is in the player controller. Let's compile. Once again, Let's play. Let's try another play test. This is why we play tests. All right, so I could move around just fine. Yada, yada, yada. I'm gonna tap my one key to use the electric spark ability. Of course, no animation is being played and there we go. I can move again now. Earlier, we did that whole floating pawned movement component that we added, and then we were activating and deactivating. It's for cases like these. Let's say I jump in the air and I want to activate it while I am airborne, we can do something like this. Now you see my character floating there and then floating back down as soon as that ability is finished. That is why we added the floating movement component to freezer in midair just like that. Okay, so we have a functioning electoral spark ability. Obviously, it's not all sexy just yet. We still have to hook up some animations for it, but that is upcoming. That would do to offer this one. Guys see you in the next one 93. Electro Spark - Animations: Welcome back, everyone. In this video, our goal is to have our player play the appropriate animation when using electro spark. Now we've gone through this drill when doing our double jump are back dash and our fireball where we got to a point where we needed to hook up the appropriate animation. You should be familiar with this process by now, so let's just jump right to it. Here I am, in my content Metro Vania Animations folder. Here's our Countess anima B A P, and I'm going to double click on her to open it up. This is our animation blueprint, and we want to start off in the event graph. So here you should have your event graph tab across the top. If you don't see it over in the left hand side where you got the my blueprint panel, you should be able to find your event graph from there, and you could double click on that to open it up. First thing we need to do is to pass some variable information from our BP player over to our Countess animation blueprint. Now, what do we want to pass on over? Well, we want to find out if our player has used electro spark. So let me actually open up my BP player really quickly. And in my magic black Electra spark this variable right here, be used electro spark and five. Right Click on it and find references to where this is used in my black magic graph. Over here, you can actually click on these. Double click on him, and it will show you that towards the beginning of our using of the electric spark. This is where we're setting it, the true. And then if I double click on this one down here, this is where we're setting it back to false. And we're going to be passing this variable information from our BP player over to our countess and um B p. Okay, so first things first over in the my blueprint panel of Countess Annam. BP. I'm gonna add a new variable and simply call this one used e electro spark question mark. And just like we've been doing in our past from BP variable section down here, I'm gonna Dre out of my cast to BP player and get my used e electro spark. We're gonna get the use electric spark again. This is the variable that lives inside of our BP player. That guy right there And we're gonna pass that into our used electric spark variable here inside of our animation blueprint. I can just drag and drop it on top of there, and it will set it like so make sure you don't forget to hook in this execution wire. So this is all we need to do to pass along this used electric spark variable from our BP player inside of this similarly named variable inside of our animation blueprint. Okay, next thing we need to do is to jump on over into our state machine. And if you don't remember how to get there, it's under your Annam graph. Right over here in the my blueprints panel. Double click on your default. And this is our current animation graph. Look at how lovely and filled out this is getting. We need to add a new state, and I'm gonna work kind of in this upper left section over here near our entry in our idol run right here. I'm gonna right click. We're gonna add a new state, and this one is gonna be called stand e electro because we want to be able to cast this from an idol or a run state. So with that one created, let's double click on it right away to determine which animation we want to have play when we do an electro spark from a in idle or a run in the acid browser right down here, type in the word death. There is an animation simply called death that I kind of like for this. If you drag and drop it into the graph, we can plug this in square way. And if you hover over the asset name like that kind of show, our character, the count is just gonna kind of float up into the air, which, I don't know. I thought it seemed kind of cool. So that's what I'm gonna roll with. Okay, so we got our animation slotted in here. Let's go back to our state machine by clicking the default option up here. Now we need to create our transition rules to and from our idol run. So I'm gonna drag off of our idol. Run right about here, Dragon Aero to our stand electro create that transition. There is our transition rule a waiting for us to do something. But I'm also gonna drag one back right away from our stand electro to idle run to create a transition for that. Okay, then let's go ahead and start creating our transition rules. First, I will start off with this guy. This is gonna be from our idol. Run to our stand electro. So make sure the arrow is flowing in the appropriate direction. Double click on it. And our rule for this one is simply going to be has our player use the electro spark? You can drag and drop that from the variables right on top here. And that one is all taken care of. Let's jump back to our default state machine and let's address our other rule here, transitioning back from stand electro to idle run. So double click on that rule right there. Note the arrow and our rule for this one is going to be right click time remaining. And I'm looking for time remaining ratio death. It knows that we're going to be playing the death animation from a stand electro and off of this. I'm going to drag out aware and say if this is less than or equal to 0.1. So basically, if we have less than 10% of that animation playing than we can transition back two in idle or a run, depending on if our character is local, moting or not. Okay, that's looking good. We are done with this one. Let's jump back to our default state machine. And next, I'm going to go from our stand electro upper left hand quadrant here, down over to this section of the graph and we're gonna add a whole new state. So right click down over here at a state and this one I'm simply going to call Jump Electoral. We wanna have an animation play when we have the electro spark play while we are airborne. Okay, why this area of the graph? Because, well, this is where I have room. Quite frankly. Okay, let's double click on our jump Electro state and this one I'm going to right click type in layered blend per bone. This one is going to be a combination of two animations, as was our jump fireball. So let's plug this in right away by left clicking and dragging our base pose right over here. I'm going to search for in the asset browser, actually, before I search for our base pose. We've got the death animation right here. I do want that one as well. So I'm gonna drag that one into my graph. That one is going to go into blend poses zero. And from my base pose, I want to bring in jump loop, my third person jump loop, drag, and drop that in here. That will be my base pose. And now I want to select my layered blend per Noora per bone node. And then in the config set up here, we've got our layer set up. Then it's going zero branch filters. Click this plus button right here. Expand out this triangle Next to zero are bone name that you need to put in here is going to be spine underscore +01 just like we did before. Okay, That is all well and good. So now we need to start creating some transitional rules to in from this state. So let's jump back to our default state machine here. And where should we start? Let's go from a jump loop to our jump Electro create that transition. And I think instead of just dragging all the wires to and from this that I want to I'm just gonna go one at a time here. So our jump loop to jump electro I'm gonna double click on this transition, and we want to be able to transition into this when two things are true. One thing is, if our character is in the air and also, if we have used electro sparks the left, click and drag both of those in and I need to bring in and and so you can drag off of either one of these and typing and and you're looking for this and Boolean plug both of these in here, and that is going to be our transition rule to go from jump loop to jump electro. Next Let's go from jump electro to jump loop drag a wire from jump electro to jump loop and let's double click right here to set a transitional rule for that. And here are transitional rule is going to be right click time remaining. And I'm also looking for that time remaining ratio death and I'm gonna drag off of here and we're going to say less than or equal to float, less center, equal to float. And the value is going to be 0.1. So when it's got 10% of its animation or remaining, we can transition back from jump electro state to jump loop. Okay, that's looking pretty good. Next, let's go all the way. This is gonna be some crisscrossing of the wires here. So for do that, I basically want to go to and from a jump start to jump electro. So just for the time being, I'm gonna drag my jump electro state way over here, okay? It's gonna move the transition rules along with it. I'm gonna move it back, but because this is the relationship I wanna work between, I wanted to be kind of close to each other. Okay, So from jump start to jump electro drag in arrow like so and the transition rule that I want to set for this guy is going to be much like it was before is in air. Get and used electoral spark left, click and drag those in drug off of either one. Bring in that and Boolean like so And that is finished jumping back to our default state machine. Now I need to work back. Don't want to work back from this. Well, that's use such a short transition. We don't actually have to work back from that's we're gonna let that one be. Let's go Next from a double jump, I'm going to drag you away over here for now, It double jump, start to jump electoral. Let's drag aware from here to jump electro popped in my transition rule right here. So I'm going to double click on this transition rule and our transition rules Also going to be is in air and use electric spark. If both of those are true Dragon off it, typing in and then we can transition from a double jump to a jump Electoral animation. Okay, And then lastly, I'm gonna drag my jumpy electoral wall the way back to this lower corner Over here. You can see some of these transition rules or kinda kind of starting overlap. Other states here I'm gonna go to from jump electro to jump and drag aware from jumpy lecture, let me actually zoom in here a little bit, holding down control and mouse wheeling to zoom in and out jump electro to jump. And like so, the transition rule I want to set for this one is simply going to be is in air dragging off of this in saying, not basically saying Is he an air? No, he's not. And that's going to allow us to transition from a jump electro to a jump end. Okay, let's jump back to our default state machine and make sure everything looks good here, all right? And it looks like we got everything. If we mess, anything up, will come back and fix it, OK? Now, I'm just gonna jump on over to my animation tab over here. Not quite finished yet. I want to make a few animation callbacks inside of our death animation. So in the asset browser, I'm gonna find death double click on it, and I want to add some sound notifies in here. So I'm just gonna pauses animation for the time being, I'm gonna right click in my notify section up here. Right click, Add notifying. I want to play a sound. And this first sound I want to right click on because I want to play it beginning at 0.65 seconds right there and then in the upper right where the details are. The sound that I want to slot in is known as ability. Underscore. Engage. Did I spell that? Right. Let's go. Ability. Underscore E underscore. Engage 20. There is a few twenties countess ability e engaged 20. Now, the differences between these I don't even know if there is a difference between is that's the one I have in my notes. Okay, it's Let's try that one. Ah, the trigger chance I'm gonna set at one point. Oh, yes, all the time. Ok, then I'm gonna add one more notified down here so you can right click anywhere down here. I'm going to right Click at notify. Play another sound. I'm gonna right click on this place. Sound right away to set a notified begin time. This one is going to start at 10.35 seconds in. So it's gonna be overlapping the other one just a little bit over in the details panel. The sound that I want to slot in is our sf X underscored electro spark. The one we imported in earlier. I'm going to set the volume multiplier here to be five times because the default sound here is a little bit too quiet. So with that, I'm going to save Let's give this a play test and see if we are Character is playing the animation and we're hearing those sounds. And just as a reminder here, I've got our current player info be magic slotted variable hard sets to electro sparks. We don't actually have to interact with that skill diets to collect the skill. So here we are clicking play. I'm going to tap the one key animations playing You heard the the the characters say parish And you heard that thunder crack. Now let me try from a jump Awesome. Let me actually collect some double jump here. Okay, let me try from a double jump. Oh, I'm out of mana. Uh, 25 man, I can't do it. Let me try one more time collecting it. It'll jump, and I forgot to press one key on everything seems to be working as intended. All right, great job, guys. We got some animations and some sound hooked up for when our countess is using the electro spark skill. Now let's go ahead and start to create an enemy in our next. Actually, no. We're not gonna create our enemy next. Next up is creating an electoral spark damage script. Then an enemy after that to test all this on. We'll see you guys there. 94. Electro Spark - Damage Script: Welcome back, everyone. One more video here in our electro sparks Siris of videos. Our goal in this one is to write some script that will cause damage to any actor. We intend to receive this damage like an enemy. And we're gonna be creating in enemy in the next series of videos so we can test our fireball in the electro spark against them. So to do this portion of the video creating a damage script for electro spark, we're gonna be working inside of R B P electro spark. And that is in our blueprints. Actors, there is our BP electro spark. Open it up and you're going to see some event notes here by default Just left click drag and delete these out. And the thing I want to add an event for is if we detect something has overlap this collision here and again, I'm just going to right click. In our view, I'm on my view Port tab. I'm just gonna right click in here with my collision component selected tap the F key to frame up on it. I'm talking about this collisions. Fear kind of encapsulating all of our electricity, So jumping back to our event graph. I'm gonna right click on my collision component. We're gonna add an event and we're gonna add an on component. Begin overlap. So I want to do something. When I detect that something has overlapped this and what I want to do. I want to apply some damage to what? The other actor, in other words, the other thing Thea other actor that is overlapping this collision volumes. I'm going to drag out of my other actor output pin here, and I'm gonna search for apply damage this function note or right over here. Now it's going to hook in the execution wire right away. I'm just gonna hold down the ault and left. Click this because I do want to put some nodes in between here, and I'm gonna create some separation between these two. And I'm gonna bring in a reroute node by left clicking a couple of them on this. No, because I'm going to sneak in a few other nodes between these guys. So I want to apply some damage to the other actor, but I want to know how much damage should I apply. Well, if I right, click and get my player character. And then if I drag off of my player character and cast to my BP player, I will hook in this execution wire to my cast to be people air. And then I dragged off of my SBP player here and I do a search for my electro spark attributes. We want to get the electro spark attributes. Remember, that was destruct variable that lived inside of our BP player. I can then drag off of this and say, Hey, break open This struck because this structure contains some information that I want to get it gonna click this little drop down here. Namely, I wanted to get at how much damage is electro spark meant to do and just jumping out of this blueprint temporarily on over to my BP player and I go under magic black electro spark . My electoral spark attributes there is destruct, and I can see over in the details panel that this is meant to do 100 damage. So that is what I'm doing over here. My BP electro spark. I'm grabbing this attribute these electric spark attributes out of my player and saying, Hey, how much damage is Electra spark meant to do. And then I'm gonna plug this damage into my base damage right here. Now, I don't want to plug this straight away into the applied damage. I'm going to drag off of this and say it do once. So I want to apply this damage one time. But then I'm gonna drag off of the output of my apply damage. Bring in a delay, node that I will set for 2.1 seconds and then take the complete from this and plug it into the reset of the do once node. So what am I essentially saying here? Well, what I'm saying is that when we cast out our electric spark, which is going to cause this to appear and grow in size rapidly, if it overlaps another actor, in which case it's going to be an enemy for us, we're going to apply 100 damage one time. And then we're going to wait 2.1 seconds before we allow that to damage it again. Why 2.1 seconds? If I right click, I will leave a note comment. This is the same time as our electoral spark. Cool down our electro spark cool down is 2.1 seconds. So I'm essentially going to only allow 100 points of damage per time that this is cast. Then when you cast it out again, you can cause another 100 points of damage. So that's why I am doing that. Okay, I would like to play tests, but we really have nothing to play tested against yet. We've got some enemies upcoming next that we contest out this end our fireball against alleged. Just compile and save and move on to the next. Siri's will see their 95. Enemy - Base Class: Welcome back, everyone. Well, we've got a fireball in electoral spark that our character can wield In this syriza videos , we're going to be putting together a dummy enemy of sorts to test those skills against, to see if they actually can hurt another actor out there. This is not gonna be a full fledged enemy, rather just a simple representation of one's. Just that we can be sure that are black Magic and Electro Spark are working in this one. We're gonna be working on putting together our enemy based class. So let's jump right to it. You're in our content, Metro Vania Blueprints, Characters Folder We're going to right click in some empty space over here, going to create a new blueprint class. And this is going to be based on character as our parent class and a name for this. We will call it BP. Underscore Enemy underscore. I'll call it character or char for character base. And the reason I'm going to call this a base enemy is in the future. If we ever to expand out this whole series of videos to create some or enemies and what not will have a base to draw upon gonna hit Enter here and then I'm gonna double click on this blueprint to open it up and I'm gonna docket across the top like I like to do now, if you haven't already done so in a previous video, we created a new collision preset for an enemy. I'm going to show you where that is. In case you have not done it. It's gonna be kind of important going forward in our project settings, which you can access from the main toolbar over on the left hand side, you've got some engine collision settings. A few videos back. We created a new object channel for enemy. If you don't already have that, you can click right here to do New Object Channel, create a new object channel named Enemy and make the default response B block. Now with that created him and again, we created it in a previous video. I'm going to come under my blueprint, actors, and under our BP interactive object base, going to double click on it to open this guy up. If you remember, our diocese are skilled ices inherit. From this, I'm going to select our Interact Collider here. That's just this interact box right there and then down in the details panel, we've got our new object response for enemy that's currently set to block. Now, this isn't super important for this serious videos. But just because I like to clean up any loose ends, I'm gonna set our default response for an enemy here to be overlap in case we ever decide. We want to get these enemies locomotive in back and forth a little bit. If we did not do that, our enemies let me just compile and save this really quickly, and I can close out of here. If we did not do that, what would happen is, if we got our enemies moving back and forth, they would bonk right into these trigger volumes for all these skill diocese. And you don't want that. Okay, we can close out of our project settings here too, and jump back into our BP anime character base. And what I want to do is I want to set some details here for our various components that are already in place. First thing I'm gonna select is our capsule component and over in the details panel under a collision. I'm going to set our collision preset to be custom. Because I want to set our object type not to be upon. But I want to label this as an enemy object type. Now for some of our channels down here. I've got black magic said to be blocked. Yes. Enemies said to be block. Yes. Um, everything else. Yeah, you know, I will leave it all is blocked for now if we need to change some of these later on, that's fine. The reason I want blood black magic set to block is because if you remember right, our BP fireball is going to fire off of a hit event. And we do want our fireball to collide with this capsule component right here. So fireball, which is labeled as black magic as an object type. We want to collide with this to fire off an event hit inside of our fireball. Okay, so that's all well and good. Let's go to set a mesh next. And the mess that I wants that here is our skeletal mesh. Let's put in s m underscore. Countess, There is this show gun one that looks pretty cool. Try to slot that one in. It's gonna take a little while here. Hopefully mine didn't freeze up. Too bad. And apparently my engine has frozen wonderful. And there she finally popped in. Now it's just gonna take a little while just to compile some shade Urz heer So I am going to move along While that is all happening, I'm going to jump on down to my character movement component. I will jump back to this mess in just a little bit. But underneath my character movement component, if you scroll down a ways you're gonna find a section called Plainer Movements. Here it is. You're gonna find a property called Constrained to Plane that I want to set to True. And I want to set my plane constraint access setting right here to be the why access? What am I saying here? I'm saying I want to constrain this character to the y axis. Now, if I jump back to my map, the reason I've doing this is my Y axis, which is represented by this green arrow. I'm basically saying, Hey, I don't I want I want you to be constrained by this. I don't want you to move into the foreground. or into the background at all. Once I place you in the level now, you may be saying, Why's that even necessary? Well, the reason that it's somewhat necessary is if I were to run my character into this enemy character, it would automatically try to shove it out of the way and it could bump it a little bit too to the foreground or the background, depending on which side of me it's kind of on. So I want to constrain that plane so I can make sure that our fireball is going to hit it instead of accidentally me nudging into it and then it getting nudged into the foreground or into the background a little bit. So that's why I did that. Okay, jumping back to my BP enemy based character here. That is what this show gun looks like. Pretty sweet, right? Okay, so I'm gonna select her, and a Z could see she's not within the capsule component. So let's go ahead and fix that by jumping up to our trans form settings way at the very top . I'm gonna set the Z location to be negative. 90. That'll jumper down, and then the rotation I'm gonna set the Z rotation to be negative. 90 is well, that's looking pretty good. And anything else I want to set here well, in an M class probably would be nice. So it's not just a brick wall. Let's set in an M class right away. I will set this to be Countess. Let's set this to Countess anima BP and then I'll just make her look a little bit alive. Okay, so with that all done, we have finished creating our enemy based class. Let's compile and save guys that'll do it all for this video. We'll see you in the next one. 96. Enemy - Script #1: Welcome back, everyone. Over the course of the next few videos here, we're gonna be working in our enemy base class that we created earlier. And we're gonna be adding some variables and some scripts so that we can damage our enemy so that we can test out our fireball in our electro spark skills to see that they actually work. Now, across the top of my editor here, I have a few different blueprints open already because we're gonna be working inside each of these a little bit. So if you want to get some prep work out of the way, you can come into your content. Metroid Vania Blueprints Characters Folder Have your enemy based class character open already by double clicking on it as well as your BP player. And then in my Blueprint Actors folder, I opened up my electro spark and my fireball is well, just so they're ready to go for this lesson and the next one. So we're gonna be starting off in our BP enemy character based class and we're gonna be adding some variables right away. It's come under your my blueprint section under variables. The 1st 1 we are going to create is gonna be called damage class. Sorry. Damage vulnerable class. We're gonna make this enemy vulnerable to a certain type of damage type. I'm gonna change the type of this to be variable type type in damage type. And when you whittle it down, you can say, Hey, do I want this to be an object reference or a class reference? We're gonna want it to be a class reference to reference A ah, given class of damage type. So it shouldn't be this purplish color right here. Okay, then I'm going to create another variable. This one is going to be called damage resistance class. So we're gonna make our enemy resistant to a certain type of damage and by default, because the previous variable was of the damage type of variable type. This one should be as well. And if it's not, please change it to match the damage. Vulnerable class. Okay. Adding some more variables here, this next one is gonna be called vulnerable multiplier. We're going to change this to a float variable. We're gonna make it so that if our enemy is vulnerable to a given damage type that it the the given skill such as a fireball is going to deal more damage than it normally does. Okay, with this variable selected when it selected like that and highlighted yellow, I could do control plus W. And I'm gonna change this one to be resistant multiplier. That will also be a float. And with that highlighted yellow like that, I'm going to do control post W We're going to create a health variable. This will contain how much health, how maney hit points our enemy character is gonna have. And then I'm gonna do control plus W and I'm gonna create a variable called incoming base damage. Okay, so now, with all these created, I'm going to compile so that we can set some defaults for all of these. So let's start off at the top at our damage. Vulnerable class. So with that selected, I am going to come over in the details and I'm going to say I want to slot in R B P damage fire. I want to make him vulnerable to fire damage by default. Now, where did I get this from? Well, if I click right here, I can browse to this asset in the content browser Once upon a time. Way back in the video titled Skill Acquire Data, we created these to damage types BP damage fire and BP damage lightning. And if I jump into my B a p player blueprint and come under my magic black fireball, I've got fireball attributes heared my fireball attributes I am saying that this fireball by default is gonna do 50 damage. And the damage type is BP fire damage. So when our enemy base class character here is going to receive some damage, we're going to be able to feed it what kind of damage they are vulnerable against. And here we're specifying that they're gonna be vulnerable against our fireball damaged BP damage fire. Okay, so here I'm gonna select damage resistance and in the details panel, I'm going to say they're gonna be resistant to lightning just because vulnerable multiplier . I'm going to say that if our character is vulnerable to fire, we're going to add a multiplier of to yeah, double damage resistance multiplier. We're going to save if they are resistant to a certain damage type in this case, lightning. We're gonna do half damage. That's gonna be our multiplier health we're gonna set to be 100 and our incoming base damage. We're actually going to leave this as zero, because we are going to set this variable from the incoming damage that we will be receiving. Okay, So with all those with default values, I do want to click some of these eyeball icons over here along the left hand side. I'm gonna show the eyeball icon for damage. Vulnerable class, click on the resistant class. All of these, except for our incoming base damage. What you've just done here is you've set these all to be instance, editor Will, That's the same thing. Is checking that check box right there? Okay. And what this will enable you to do, is it you compile and save if you jump back to your level editor here, find in your blueprints, characters folder, your BP enemy character, Dragon dropped them into your level, as I have already done and what you've just done by making those all instance edible. If you select your enemy here in the level, it just scroll on down in the details panel and I believe this is gonna be somewhere near the bottom. Do do do do, do, do, do, do do do do scrolling down, Scrolling on down, Scrolling out down Here we go. Our default category here. We've got a damaged vulnerable class which I can edit right here from the editor. I could change it here to be lightning if I wanted to. I can update our damage, resist class to be something else. I've got my vulnerable multiplier health resist multiplier or resist multiplier and health value that I can update here, Per instance, that is per copy of our enemy character that I place in my level that's gonna make for some easy tweaking and tuning something else. You should be sure that you do when you place your enemy character into your level is if I scroll up to the top, you'll notice that my why location is set to zero. That is where they are located along this green axis. Now I set that to be zero because my player start actor here. If I still like that is also at zero. And that's gonna make it so that when I spawn in, if I click play here, we're on the exact same plane. One character is not slightly in the foreground or the background. So that's gonna ensure that our firewall is going to connect as well as our electro spark. It's gonna connect with the character just fine. Okay, so we have some variables created and expose into our editor. Next up, we're going to create something called a macro that's going to utilize a bunch of these variables inside of our BP enemy character base. That'll do it. Offer this one that will come in the next video. We'll see there. 97. Enemy - Script #2: All right. Welcome back, everyone. In the last video, we created some variables inside of our BP enemy character here located in this directory. And we also expose them to our level editor by placing our character into the level and with our play, our character placed into level, we had set all of these variables inside of our BP enemy character base. To have these particular variables be instance creditable meaning we can get to them from the main level editor. Now, we are going to create a macro inside of our BP enemy character base to utilize a bunch of these variables we just created. So, with your BP enemy character based open, come along the my blueprints panel. And we've got a section here for Mac Rose. What is a mackerel? Willie macro is a lot like a function in many ways in which you can have ah, node one single node do a lot of stuff. But it's different from a function in that a function can only have one input execution pin and one output execution pin mackerels can have multiples. Also inside of a macro, you can put in things like delay nodes, which you cannot put into a function note now I want to create a macro here because the Siris of scripts that I'm going to be writing is going to result in having a multiple output execution pins. So let's come under macro. Click this plus button to create a macro, and I'm gonna call this one calculate damage. That is what is going to happen between our input note here in our output note. Notice that once we created this, we added a new tab across the top. Create some space between your input in your output note because we're gonna need it. And we're going to start off by creating some inputs. So select this input node right here and over in your details panel. Click this plus button three times to create three new inputs. The first input we're going to create here is just going to be called executive in. And if this is simply going to be an executive pin, you seen that an execution pin right there. The next one we're going to create is gonna be called incoming base damage. This will be a float variable and the next one we're gonna create here is going to be called incoming damage type, and this is going to be of the damage type. And if you do a search for it in the variable type damage damage type, we're looking for an object reference here. And so now you see these pins populated here in our calculate damage Macro. Now we will be making use of this macro in our event graft eventually. Let me just jump over to my event graph really quickly. And if I drag in my calculate damage, macro and it I'm zoomed way out. You can see what it's currently gonna look like when I begin to utilize us in the event graph. We've got some input pins here for exact in incoming base damage and incoming damage type. So we're gonna be plugging some stuff into it on this side of the node. So now let's jump back to our calculate damage, mackerel. Let's work on adding some outputs here. So we're gonna be doing some math in between all of these and determining if our character , our enemy character, is resistance or vulnerable to the given incoming damage type. And then we're going to be determining how much damage to be applied, and based on all of that, we're going to have different potential outcomes. So, under outputs, click the new parameter of one, 2345 and six times and we will name these accordingly. Vulnerable death. And this is going to be an executive. And in fact, all of these are going to be exact pins. Then I'm going to set another one too vulnerable, damaged. This is gonna be an exact pin. And I'll explain why we're creating all the easy in just a little bit resistant death. And I got a spell. This rights that's not intelligent, otherwise resistant, damaged. Let me just set these all to exact right away and then down below in slot number five here we got normal death and normal damaged. So we're going to be receiving some damage given float value, a swell as a damaged type and based upon all that math and the damage type, we're going to fire out of one of these output pins. And if I jump back to my event graph depending on how much damage we received and if we were vulnerable to it or resist into it, we can spawn in different particle effects and either destroy the actor or not. So that is going to be pretty handy. Let's jump back into our calculate damage macro here. And what are we going to do first out of our input. So let's ah, drag out of are, Actually, let's not drag out of our exact in. The first thing I'm going to do is I am going to drag our incoming a base damage variable here, dragon in. We're going to set it, and by default, this is zero. And the reason this is yours because we're going to set it to be whatever our incoming based damage is like so okay, and our incoming damage type, we're going to drag out of this and we're gonna type in, get class, okay? And we're going to find out the incoming damage type. We're going to drag in a damage vulnerable class. We're gonna get the vulnerable class, and I'm gonna drag out of here in type and the equal symbol and I want to see equal to class. I want to find out if the damage vulnerable class is equal to that is the same as the incoming damage type. And if it is, we're gonna bring in a branch. If it is, we're going to calculate damage in a certain way. And if it's not, we're going to calculate damage in a certain way. Okay, let's just stay right here for a moment, because I'm also going to bring in my damage resistance class right here, drag and drop it in. We're gonna get that. And I'm going to drag off of my get clasp in here and bring in another equal class node, equal class. And we're gonna find out if our class is equal to the damage resistance class. And if that is the case, we're gonna bring in another branch node like so and are false branch from this top one is going to plug into the input of this branch. No, right here. So at this point, this is the script you should have. Might want to pause the video here if you need to. Okay. And at this point, we can say like, hey ah, where are we going to be getting this base damage from and this incoming damage type? Well, while we're here and we've got our BP electro spark and BP fireball open. Let's jump into each of those. I'm going to jump into BP Electro Spark first and in our BP Electro Sparks script, we're gonna find out if this particular collision components F right there. That wire frame right there were gonna be checking to see if that's overlapping something. In this case, we're going to see if it's overlapping our enemy character. If the enemy character the other actor, is overlapped, we're going to apply some damage. How much damage? Well, we're going to apply the amount of damage that are electro spark attributes specifies also . And I Missus in this video when we put it together, we should plug in this damage type from here to this apply damage node. Now, eventually. Not quite yet. We're going to be using a damage event inside of our enemy character to receive and pass on all this information. OK, so make sure here in your BP electoral spark that you've hooked up your damage type right here to the apply damage note down here. I missed that in the previous one. I bet you I did that in the fireball as well. So jumping over to my BP fireball. How much damage is our fireball going to do? We're gonna pass that to this, apply damage function and are damaged type here too. I forgot that. We gotta plug this into our damage type class. You should compile and say that both in the BP fireball and your electro spark. Okay. And with that, let's jump back to our BP enemy character base. But now, what kind of math are we going to do if the incoming damage type is equal to our damage? Vulnerable class. If this evaluates to true what we're going to be bringing in this Siris of nodes, we're going to bring in our incoming base damage. We're gonna get that. Then we are going to be bringing in our vulnerable multiplier. I'm gonna hold down control left, click and drag into automatically bring in a getter for that and I'm going to multiply these two together. So dragging off of one, this is going to be a float multiplied by float. Kind of make these all snuggie okay. And then I'm gonna bring in my health variable going to control, hold down control left, click in drag so we can get that. And I'm going to drag off of health and bring in a subtract float minus float node. So we're gonna take our health, which is 100 we're going to subtract it by whatever our incoming base damages, which gets set here and multiplying that by are vulnerable multiplier. So far, incoming base damage starts off at 50 which are fireball normally does. We're gonna take our vulnerable multiplier times to which equals 100. We're going to subtract that from our health, and then we are going to set our health. I'm just gonna drag and drop our health on top of this output right here. And that's gonna bring in a center square away, okay? And I want to bring in this wire now this execution wire from our true branch all the way up to this center. And let's double click to bring in a little reroute node to make things look a little nicer . Okay, so, so far, so good. Something else I want to do is I'm gonna drag off this center and bring in a print string note because I want to see some of this. Some of these health values output to the screen so I could be sure that the math is behaving like I expected to dragging out of my health into my in string. That'll bring in a little conversion note. And then lastly, I want to do a little evaluation on the health and gonna drag off this health and say if it is less than or equal to float less than or equal to float if it's less than or equal to zero, I'm gonna bring in a branch node like so. And I'm going to say if it is less than or equal to zero, that means we have killed the player, right? So I'm gonna say out of this true branch If this evaluates to true, we're going to fire out of the vulnerable death output. If that is false, we're going to say, Yeah, the enemy was vulnerable to this, but they were just damaged. They did not die. Okay, so if you need to pause the video here to get this little bit of script and that would be a good time to do so, okay. And now the good news is, we can copy and paste this section of nodes right here for the next evaluation we're going to do so I'm just left clicking and dragging. I'm gonna hit control C right here and then I'm going. Teoh, come down here and do control V kind of move these into position and out of this branch right here. If our incoming damage type is equal to our damage, resist class. If this evaluates to true, I'm gonna plug this true into this health centre. Then we're going to do some more math. The only thing I need to change here is we're getting our incoming based average. But instead of the vulnerable multiplier, I'm gonna delete that out and bring in our resist multiplier. Okay, so that's the math we're going to do if our incoming damage type is equal to our damage resistance class. If that is true, we're gonna do all the same math. And here we're gonna take the true branch that if that kills the player, we're going to say we should fire out of the resistant death output. But if it has not killed the player, we're going to fire out of the resistance damage output. Okay, then I am going to make sure I've got all these notes highlighted like ended before which I really actually have them highlighted. But you can left, click, drag control. See? Again, we're gonna come down here a little bit lower. I'm going to control the and we are going to bring in off of this false branch right here. If our incoming damage type is not equal to our damage, resist class and gonna take our false out of this branch, type it into plug it into our health, not type it in bringing a little reroute note here. But I do need to make a little modification down here as well. Specifically right here. We got this incoming base damage and resist multiplier. I can delete out this multiplier in this resistant multiplier, and I simply want to take our health and subtract the incoming base damage. So no resistant multiplier, no vulnerable multiplier. And then our branch here. If the incoming base damage does result in our health dropping below zero, we're going to say they received a normal death. And if it did not, then we're going to say they were damaged. They did not die. Okay, let me just kind of frame this all up, so you can see this Mondo macro that we have just put together maximizing our screen space here. Okay, so take special note as to where every note is double Check all those wires, make sure everything is hooked up as it is here. Let me just kind of go through it slowly from up to the top. This is for if they're vulnerable. Okay? This is if they are resistance, that is true. And lastly, if they are not resistant or vulnerable for that case, we're gonna go out of this bottom false branch, take our health, simply subtract the incoming base damage and go out of that output is well okay with that, guys, let's compile and save. We're not done yet. With this macro. In the next video, we're going to put it to good use so that I'll do it all for this one. See you in the next one. 98. Enemy - Script #3: Welcome back, everyone. In the last video we finished up making this Mondo calculate damage macro inside of our BP enemy character base. In this video, our goal is to create the script to receive damage from an outside sorts from an outside source like a fireball or electro spark, as well as create some script to damage our player if the enemy touches us so that we can actually see our hut health working properly, let's deal with applying damage to our enemy when we hit them with a fireball or electro spark. So I am going to jump over to our event graph inside of our BP enemy character base. And if you pause between videos here, this is the directory on how to find your BP enemy character base double click on her to open her up. In any event graph, I already have my calculate damage macro out here, which you can get by left clicking over here, dragging and dropping it into your graph and directly to the left of this I'm going to right click and bring in an event called Any damage this guy. So in the last video, we looked at our BP fireball in our BP electro spark. In each of these blueprints had a function node called applied Damage in which we are plugging in a damage value and a damaged type that's in our BP electro spark. This is in our BP fireball in all this information is coming from our fireball attributes and are electro spark attributes that were populated inside of our BP player. So as soon as this gets passed into this node, right, apply damage. This is actually going to tell this event any damage here, inside of our enemy based character to fire out. We're gonna take our execution pin, plug it in here. How much damage did we do? Well, that is going to be supplied by this information right here. The base damage. And what type of damage did they do? Well, again? Here in our fireball, we plugged any damage type into our damage type class. So let's just pass that along as well. Damage type, incoming damage type. All right, Now, in based upon all the math that is taking place inside of our calculate damage macro here, which you can actually see by just double clicking on it, remember this awesome script. Now we can have different effects happen based on the result of that math and if our character was vulnerable or resistant to that damage type. So this is how we're gonna do this? I am going to bring in it reference to our mesh. Our mesh has its transformed set right down there. The characters feet. I'm going to bring in a reference to our mesh. And I'm gonna drag off of this and say, Get the world location of that mesh basically right at our characters Feet there. And the reason I want to do that is because off of this return value, I'm going to say spawn E Mitter at location. I'm gonna bring in one of these and slot the emitter as p underscore flame explode. This is in the infinity blade effects packed by the way. You can slot in whatever makes you happy. And then I'm gonna copy this. No, by hitting control C and control V to Paste. And I'm gonna plug in this get world location into this spawned a minaret location. Okay. And what I'm gonna do is I'm gonna say if our character is vulnerable to a given damage type, which currently we've got set to fire. We're going to spawn this flame explode on Lee. I am going to make the scale here two times is big in the X, y and Z. So it's gonna be amore grand explosion if it actually kills them. However, if they're vulnerable to that damage type but it does not kill him, it only damages them. I'm gonna play into this emitter in which I'm going to say play that flame explode. Let's just keep the scale at one. And I'm saying to spawn this aet are meshes world location basically at our feet here just because that's where the particle effect is going to look most natural. And I discovered that through testing. Okay, so with this done, I'm gonna move this on up a little bit. We'll see this come into play in just a little bit Now, I'm gonna highlight these nodes right here. Left, click and drag. I'm gonna hit control C and then I'm gonna hit control V down here kind of paced in another Siri's Onley for if our character resist that given damage type, I'm gonna plug into these two only I don't want to do the flame explode for if they resist is damaged type. Remember, our enemy character here is going to resist some lightning damage. So I'm gonna set our emitter here to be There's one called line two points. Underscore. Blast underscore lightning. That one right there. Line two point blasts lightning 00 And this also end the infinity blade effects back and again you can use which ever one you want. I'm gonna slot that in There is well is line two point underscore blast underscore lightning. So I'm slotting that into both of these for our resistance. The top most one if it's going to kill our player there said the resistance that damage type, but they're still going to kill him. I'm gonna make the scale the 1.51 point five and 1.5. However, if they are resistant to that damage type and it does not kill them, I'm going to change the scale here to be 0.75 in the X, the Y in the Z. Okay, so we've got different particle effects that are gonna play depending on if they're vulnerable or resistant to them. Now I'm going. Teoh, select these notes again. Control. See Control V and pace another copy down here. For if we calculate damage in our character is neither resistant nor vulnerable. So I'm gonna set normal death into here. Normal damaged Into here on Lee. I don't want to play this at the location of our mesh for this one. I'm gonna play at the location of our capsule component. What am I gonna play at our capital Components location? And let me just jump to the view port are capsule component has the transform basically right in the middle. So imagine this particle effect that we're about to spawn going to be playing right in the middle there for this one, we're just going to do a regular explosion. Good old p explosion P underscore explosion p underscore explosion. And if it kills them, I'm going to set the scale here to be need to flip my page and notes. I said it to be twos across the board 22 and two. And if it doesn't kill him, I'm gonna set the scale to be one one and one now, uh, notes that it actually kills the character. Whether it be the vulnerable death, the resistant death or the normal death I need to bring in a destroy actor node. So it's gonna This one is going to destroy gonna hit control, C resistant death this one is going to destroy. So essentially every other one here and then normal death this one is going to destroy as well. Okay, so let me left click and drag around all these nose hit the Seiki and I'm gonna say apply. Let me zoom up a little bit. Apply damage to enemy. All right, let's quickly compile and save, and we should be able to test this out. So just clicking on play over here, Okay? Our character is not fireball, so let me shoot out a fireball. And in the upper left hand corner of my view port, you should see how much damage our enemy has being output to the screen as well. So here we go, fireball against our enemy character, which they are vulnerable against. Boom! You could see a big old explosion. You saw 0.0 up there in the left hand corner of the screen. Let's do a few things here. Let's go into our envy test map. Let me select my enemy character. I'm gonna go all the way down to my default setting so I can modify some of this to do. Where was it? Okay, so I'm gonna change my vulnerable multiplier here to be, Ah, simply 1.5. So that's not gonna be enough damage to kill them. Fireballs to 50 damage times 1.51 point five should now be 75 damaged. Now would watch what happens when I jump in and play. The explosion should be a little bit smaller, and it should not destroy our character of the first time. A little bit smaller. And you see 25 health. This next one should kill them, and that effect should be bigger. Okay, so we saw that play. Let me select my enemy character once again Here. We're gonna set this back to zero. Um, how about I change, uh, given spell that I'm casting to my lightning? OK, let's try lightening next. Let me just click play here. So I am in the editor. I'm just gonna hit shipped plus f one that's gonna give me control of my mouth's. And now, if I select my BP player that has now appeared in my world out liner. I am going to come under. I'm gonna come under my player info My be magic slotted, which I've made available here in the editor. This be magic Slotted variable here in my BP player. Now, remember, I made this be magic Slotted variable. I click that eyeball icon so that I could edit it in in the editor Over here. I'm gonna changes over to be electro spark. So now let me bring on my window once again. And now I gotta click on my window to give myself access to it again. Now, when I hit the one key, I should be doing electoral spark. Look at the damage Valley. That's gonna be up output in the upper left hand corner of the screen as well as the particle effect that's going to play when it hits my character. Okay, so 50 damage. Okay, let me do it once again. Missed on that one. Let me get a little bit closer. And actually, I can't catch it anymore. Come out a man s So let me jump out of here. Jump back in and play I'm still doing fireballs. I got to go back to let me jump in and play shift plus f one gonna grab my player and I'm gonna say hey, do electro spark. All right, so one to damage them with the Lexus Park and then one again, This one should kill her. It was just a little bit bigger. So you have now created a damage script for your enemy. Pretty sweet. And you've seen how you can select your enemy character here. And you can swap out all kinds of things about your enemies straight away from the details panel. With those exposed variables, you can change things like, what is their damaged, vulnerable class? They're damage, resist class. And you can even modify their multipliers and their health values. That is all well and good. Now, how about we move on to creating a little bit of script where our enemy can actually damage us? This should be relatively simple to do. So let's just jump back into our BP enemy character base. I am going to add a brand new variable over here, and I'm gonna call it attack Damage. This is how much damage that our enemy is going to deal to us. I'm going to compile here and save. It's sure I'll make this instance edible as well. And I'll say they're gonna deal 25 damage to us now. With that done, I need to find a new spot here in my event graph away from our apply damage. Let's just go over to the right here a little bit and I am going to right click and bring in an event hit so off of event hit, I'm going to drag out of the other actor in Find out Cast to BP player If the thing that hit us the enemy character was the BP player, If it waas, I'm gonna drag out of this SBP player. I'm gonna type in apply damage this function right here, and I'm going to create some space between the two. I'm gonna double click on this wire here once in twice to bring in a reroute note because I'm going to put something in between here. What am I gonna put in between here? I'm going to drag out of my BP player and bring in a do one snowed. Why do no one snow? Because when our BP player bumps in to our enemy character. I only want to apply that damage one time and not have it repeat itself quickly. So I'm gonna say, do it once, apply that damage and then off of the apply damage. I'm gonna drag out a wire, bring in a delay, Node. I'm gonna make this delay for Let me just snug these up a little bit closer like that. I'm gonna bring in a delay. Ah, half a 2nd 0.5 seconds. And I'm going to say after half second delay. If BP player you bump into the enemy character, we're gonna say you can get damaged once again. Okay, So you saw how that were just resetting that do once known. So it can happen again. Now, how much damage do we want? A deal. Well, let's plug in our attack damage variable here, which says 25 damage. Okay, so we've got this apply damage going on here inside of our BP enemy character based. Let's quickly compile and safe. But our BP player right now does not have an event to receive any damage and do something with that. So let's fix that Let's go back to our BP player quickly in content. Metroid Vania Blueprints, Characters. BP player. Let's jump over to the event graph tab here. We've got some test scripts where we were updating our health by just tapping the H key just showed that our health meter would actually work. And right below my test scripts, I'm going to right click and I'm gonna type in event, any damage. So if we receive any damage like we're doing over here in our BP enemy character were saying the damage actor is our BP player. We want to apply damage to the BP player We're going to drag out of here and simply say update health. Here is my update. Health function that I've created inside of my BP player. I simply could have gotten it by dragging and dropping into the graph as well. How much damage should be applied? Well, we're gonna pass that on into our in coming damage of our update Health node. And again that is determined by the damage in my BP enemy character that were specifying right here there were feeding into this apply damage function. So with our BP player now having this little bit of script I can compile in save Let me just left click drag around this tapas IKI and say player receives damage Let me compile and say it one more time Now I should be able to jump in and play. And when a run my character into the enemy watch my health In the upper left hand portion of my HUD we go down to 75 we go down to 50 we go down to 25 and we go down to zero. Now, we're not actually doing anything when our health is down to zero. But we could All right, guys, that is going to do it all for this syriza videos. Now we've got an enemy character that we can damage with our fireball and our electro spark . And we've made it so that our enemy character can damage us. If we run into it, that'll do it all for this one will see you guys in the next one 99. Enemy - Script #4: Welcome back, everyone in this video we're going to go about fixing up our B P electro spark. And the reason we're gonna be fixing that up is so that it can go about damaging multiple enemies at the same time. Now, if you're really savvy, you may be looking down on my content browser and basically being like, Hey, I don't have these blueprints yet. What is going on? Well, I'm recording this particular video. After the original course was already created, I got a question from a student named James and James. Notice that in going through the course the first time, that are BP Electro Spark would only damage one enemy. And he asked me the question, Hey, how can we make it so that we damage multiple enemies? And I said, Hey, my bad, I should show you how to do that. So I am going back and showing you how you can set up your blueprint, your electro spark blueprints so that it can damage multiple enemies. So first things first. With that all out of the way, let's come under content. Metro in Vania blueprints, actors find your BP electoral sparked. Double click on that to open it up and you should have some script in here that does not look like mine. I currently have the revised script for how to damage multiple enemies. And this is a full bit of script that we're gonna be creating here in just a moment. But I just want to bring it on full screen, in case you wanted to pause it here to show you what we should have at the end of this video, all the script that you created earlier, A few videos back. You can delete that out because this is what we're gonna be going with long term in order to make it so that you could damage multiple enemies at once. So we do want this on component. Begin overlap of our collision component. So and you can get this event right here again by right clicking at events. Add on components. Begin overlap. It's not currently in here because this event is already added to my graph the night. The next thing you want to do is drag out a wire and get all actors of class like so get all actors of class. That's the one you're looking for right there. Just delete that out. Hook that back in and in here. The actor class you want to slot in is your BP enemy character BP enemy character base. And then what you do is after this, you drag out of the out actors pin. It will give you an array of any enemy characters added to your level. And then you want to bring in a four each loop, not with break just for each loop like so. And this will give us any every actor in the array out of this pin right here. So the first thing I did is I drug aware out of this and I typed in is valid. Now you got to be careful when you go through. This one I did is valid. And I went with this question mark version. There's two different versions here. Go with that question mark. Version one. And what were essentially checking here is is the actor even alive? Is he in our level? And if he is valid is alive. Let's go on, in which case we're going to proceed onto a branch. Now. The branch here that we're checking against is is the ah, BP Electric spark, the component, the collision component. Is it overlapping? The other actor that is equal to one of our BP enemy character? We're checking. Are they? The same thing is what our collision component is overlapping. Is it one of our BP enemy characters? If it is, if it's evaluates to true, we're going to continue on. And here is where we're doing. All the rest of what we were doing before is were referencing our BP player and out of our BP player. We're talking to our electro spark attributes that we created, and I'm just going to jump over to my BP player momentarily here. Here's our electro spark attributes that struck that we created. And here's we are where we are, determining how much damage we're doing. 100 points of damage. So we're breaking that struck our electro spark Attributes struck were grabbing how much damage in the damage type to apply damage to whom, well, any actor in our array here, our BP enemy character based array you can see that's being piped all the way through to our damage actor. So this is how you can go about ensuring that your BP electro spark is going to damage mawr than one enemy in your level. So thank you, James, for catching that. I should have caught that the first time through some play testing. But this set of right here should make it so that you can add multiple enemies to your level and damage them. Also, I just wanted to point out here, in case you haven't already done so in helping James with this problem in your BP player, I am in my black magic tab and I'm in this use electro spark section of script. Make sure that's right down here. We're responding. Are BP Electric Spark that you got your spawned? Transform said 200 in zero. I think the first time I recorded it, I had it mistakenly said to 11 in one, Make sure it's set to 00 and zero because it's through this timeline that we're scaling it up. Ah, problem that I caught eventually after the fact here is that we were spotting in at 111 size normal size. And then in our timeline here we were shrinking it back down to zero and then scaling it back up again, resulting in two hits. So make sure that you've got your spawn transforms scale here set to 000 All right, so that is me amending my wrongs, making sure that we've got our BP electric spark set up right to damage multiple enemies. Guys, that will do it all for this one. See you in the next one. 100. Black Magic Menu - Assets: Welcome back, everyone. Well, we are starting a new series of videos here. This whole selection of videos is going to be how to create a black magic menu. By that, I mean, how do we swap out which active black magic skill our character has? I currently have open in front of us the version of the project that I made in preparation for teaching this course. So this is an older, completed version of the project. I'm just going to jump in and play here to show you what we are going to be building and how it's going to function before I show you the menu. I'm just going to collect my fireball ability and I'm gonna collect our electoral spark ability. And I'm gonna hit Excuse me, the black magic menu. But now, to bring it onto the screen there, you can see it. And now you can see if I use a w A S and D keys I can highlight, which particulary black magic skill. I want to slot up into my hut. And as you can see as I am toddling between them in the upper right, the HUD is changing as well So if I release the button the menu button, which is currently bound to the zero key while I have electric spark activated, it will select That is my black magic menu. So on and off we got a little animation going on there, and I can swap out, which is my active black magic skills. Pretty cool. Okay, so with that, I'm going to exit out of this older version of the project. Sure, I'll save that. And what you see in front of you is the version of the project that we are working on together. And all we want to accomplish in this one is to import some assets that are necessary to construct our black magic menu system. Now, we do have a lot of things imported already that we're gonna make use of things like our fireball texture here. Bloodlust, Arctic blast, etcetera. What I want to do, though, is bring in two new ones that you should find attached to this video lesson in your course outline. Mine are currently sitting in this folder. The two assets that I'm talking about are this aero texture and this highlight texture named accordingly. So with that I'm going to select both of them and I'm gonna left click and drag them down into my content. Metroid Vania Textures Folder. Once you see that plus similar, you can release left click And there they have been imported again. Some of these backgrounds like a little Jang ki. So if you just double click on the texture you can set the texture group to be you I and save that. And then when you exit out of there, it should cure your a d d nous. I'm gonna do the same for the highlight as well. Texture groups that that to you, I and save that. Alright, guys. Well, that is what is in store for this whole black magic menu. Syriza videos. All I wanted to do in this one to show you what We're gonna build an import. Those two textures. We will see you guys in the next video 101. Black Magic Menu - Material: Welcome back, everyone. In this video, we are going to continue making strides putting together our black magic menu in this one. Specifically, we're going to be creating a stylish material that will be using as a highlight effect when highlighting a possible magic selection in our menu. I'm back in my old projects here that I made in preparation for this course, and I just want to show you the exact material that we're going to create Gonna bring on my black magic menu. Now you can see when I highlight the word bloodlust or Arctic Blast. You see that kind of black outline outlining the text there? That is actually a material. And we need to create that if we want that kind of effect. So that's what we're gonna be working on in this video. So let me just exit out here, exit out of this older project, and we're gonna be working in our content Metroid, Vania Material folder and we're gonna right click in here, create a brand new material, and this is gonna be called M underscore. Text highlights. Let's double click on it to open it up. And I'm just gonna docket across the top here. Now, the first thing I want to do is to create this special text highlight material. I'm gonna come over in the left hand side where we've got our details panel. These are our details. When we have this master node selected over in the graph, I'm gonna set our material domain to be user interface. And when I do, you can see it collapses down our master material Note quite significantly, because there's a lot less that we need to input. I'm gonna set our blend mode here. To be masked is well, and now you can see we've on Lee. Got three possible inputs here. Final color in opacity mask of which we are only going to be using two of them Final color and opacity mask. Okay, now let's put together the nodes that we need to create this effect. I'm gonna right click, and I'm gonna look for a texture. Coordinate node, texture, coordinate node right there. And I will set the details for all these in just a little bit out of this, I am going to drag out and put in a pander node. And there is a hot key for that if you hold down the peaky and left click, you can also bring in a pan or node just f y I. And then I'm going to bring in a texture sample note. And there's also a hot key for this. If you hold down the T key, TIAs and Tom and Left Click, you'll bring in a texture sample node so the texture coordinate is going to plug into the pan er, which is going to plug into the U. V's of a texture sample. With these three selected, you can highlight him all by left clicking and dragging do control, see and then control V to paste another group of these down below. Now we're gonna peace be slotting in a texture sample up here and a texture sample here, and we're going to pan them each in a given direction. That is kind of like scroll them left and right or up and down that sort of thing, and we're going to actually add these two together, so I'm gonna drag off of the texture sample, appear type in ad. We're gonna add these two together, and the result of these will plug into the final color, and it's saying we're missing texture samples. Yes, we know that as well as the opacity mask. Now, obviously, we don't have anything in here yet, so let's go ahead and change that. So first thing I'm gonna slot in here is going to be some texture samples. Uh, this top most texture sample. So I'm gonna select that one first. I'm gonna set this to be in the details panel. Something called Pipe Underscore. Lava love. Ah, Underscore E. Now there's four different versions here. I don't know either. Four different versions, Probably cause they're in four different folders. But you should select one of these to get that sort of a look. That's the one we want for this top texture sample. Now, I am going to put in a bottom texture sample for that one. I am going to slot in one called engine Flame a mask. This particular one is in the Soul City pack again. You don't have to use the same textures that I'm using. This one is in Seoul City. This one is in the infinity blade effects pack. But I thought the combination of these here you can see the results of these added together what it currently looks like now. Right now, it doesn't look nearly what it looked like in our menu, but we'll fix up. Okay? So with our top texture, coordinate nude this one way up at the top, we can set a u and V um, setting for this. So essentially you is with how why'd you want this To be V is height. So I'm going to set this to be a 0.8 for the U tiling and for the V tiling. Just to show you an extreme example falls to set this to be, like, 10. You can see how it stretches it. Ah, whole lot. Okay, so I'm gonna set that to be 0.8 as well. That's a way of kind of shrinking or enlarging the size of this texture. Sample this bottom texture sample. I'm gonna leave the texture coordinate for this to be one and one. Okay, So top texture, sample the texture Accordance. I'm gonna set to be 0.8 point eight. The bottom texture sample. I'm going to set the texture coordinates to be one in one. Now for the pan er the Panter for our lava here. I'm gonna set this to be a speed of negative 0.2 and you could see that's gonna scroll it to the right. If I was to set a positive value there, it's going to scroll in the opposite direction. So just know that positive values scroll it one way and negative scroll in another way. So I'm gonna set that to be negative point to and in the why I'm going to set that to be point to. So Speed X is left and right Speed, Why is up and down for our bottom Panter node right down here? I'm gonna set our values to be zero in the X. But the why I'm gonna set to be one so something like that and we'll see how this ultimately results when we get it in game. Let me just double check my notes to make sure I've got everything looking all snazzy here . That looks pretty good for now. Let's just finish this off by saving our material. And if we want to, we can come back and make some adjustments later on. But I think that will do just fine for now. So now we've got a nice text highlight sort of material that we will be utilising in our black magic menu. All right, guys, that will do it all for this one. In the next video, we'll start to actually create our Black magic menu. We'll see you there. 102. Black Magic Menu - Creation: Welcome back, everyone. In this video, our goal is to create our black magic menu widget blueprint. And we're going to take a shortcut here by duplicating an already existing widget blueprint to save us some time. Find your way on over to your content Metroid Vania Widgets folder And we've got this W B P Hut already created, and I'll just double click it to show you what's in here. It looks like it's empty. Ah, but if you click on one of your animations and move that slider all the way to the right there you can see the left side of our hud. And here you can see the right side of her, Hud, so you can't see a lot of it right now, but know that it consists of some HUD that were animating onto the screen. Now what I am most particularly interested in saving from this duplicate that we're about to create from our W B P hut is this right hand corner of our HUD that weaken display what we have slotted in for our black magic skill and eventually a white magic skill. I don't really care about what's available on the left hand side of the screen. That stuff. I am going to eliminate all this kind of stuff. Okay, so let's exit out of R W B P Hud. Let's right. Click on R W B P HUD, and let's duplicate this. Let's go ahead and call this W B P for widget blueprint. Be magic Underscore Menu. Then let's double click on this guy to open it up and make the necessary of modifications. First things first. I'm gonna jump on over to our graph tab, and we got some script in here. Let's just go ahead left. Click drag and delete all this out. Don't eat it. Let's jump on over to our designer tab and we've got some animations in here for HUD left in HUD, right, Let's delete out in, delete out. OK, and now let's delete the unnecessary widgets that we're not gonna need for this particular screen. I want to be careful here. The portrait background, the health background. I'm just gonna control Click the ones that I wanted to lead out the health background, the health meter, the portrait pick the health current 100. Those five can go. Bye bye. So the ones right at the top. There. Delete him out. And then there is a white magic button. White magic Underscore Button and a B magic button Control clicking. Both of those Those can go Bye bye as well. So these are the remaining widgets that I do want to keep. And, of course, they're currently not visible on screen. Don't worry about that. Okay with that, let's go ahead and compile and save guys. That is going to do it all for this one. We have our Black magic menu. Created a lot of work ahead, but we've got a foundation in place. See you all in the next video. 103. Black Magic Menu - Layout #1: Welcome back, everybody. Well, we now have a black magic menu widget blueprint created over the next few videos. We're going to work on laying out that black magic menu. So if you haven't already done so, come under your content. Metroid Vania Widgets folder Double click on your be magic menu to open it up. Now we do have some existing widgets over here in our hierarchy. Some of them are visible. Some of them are not for the ones that are, well, even the ones that are visible in the ones that are not visible. Don't worry about it all For now. We will shape this up over the next few videos. Let's just take care of the things we want to take care of in this video. Namely, I want to create a title over here something that says, you know, Black Magic menu, that kind of thing. So this is what I want to add. Firstly is in my palette panel. I am going to do a search for a blur widget. There is something called a background blur widget. I'm going to drag and drop this on top of my canvas panel. This is going to enable us to have a full screen blur when this comes onto the screen. Now, here is my background blur widget way down here. Make sure you select that guy. You can reorder this if you want. I'm gonna reorder this by dragging it right beneath my canvas panel. And when you see that yellow line like that, you can just drop it right there. And with that selected over in the details panel, I'm going to set the anchor for this to be this full screen anchor. And when it's got the full screen anchor, I still need to set the offset left top right and bottom all to be zero to make it true. Full screen. You could see that green outline now encompassing the border of my screen and then down in the appearance section. I want to set the Blur strength here to be three. Now you can see it kind of blurred out that grid in the background a little bit. If you didn't see that, let me set that back. Blur strength zero. Now look at the grid in the background as we said that the three that's gonna add a little blur effect so that our our men you can't pops out from what we see in the game. Okay, so that's all well and good. Next thing we're going to add is going to be a text widget. I'm gonna exit out of here. We're looking for a text widget when a drag and drop this on top of the canvas panel and I'm gonna reorder this up towards the top is Well, I'm gonna put it right below my background blur like so. And I am going to start off by naming this particulate widget. Let's call it menu underscore name and you could see it updated in the hierarchy. The text that I am going to slot in is going to say black magic. I do want to set an anchor for this, and the anchor is going to be this upper left square, which it already is. So, truth be told, we did not have to set an anchor for that. The position for this particular widget I'm going to set an exposition of its 75. Why? Position is going to be 60. You can see how this is starting to nudge it all around. I'm gonna size to content here. And when I check this box, watch what it does to this green box over here it is basically going to make that green box . Whatever the size of the contents are, we are then going to come under the appearance section. I'm going to change the appearance to be Ah, let's go. Are one g one be. Let's change that to be zero. So we've got some yellow texts. I'm gonna change the font family here to be our Gothic letters. I'm gonna change the size of this to be a 65. Like so that's looking swell. Ah, One thing I do want to dio appears I want to change rz order to be five. I'm gonna have kind of an underlying effect a little bit beneath this. So by setting this to five, that's gonna ensure that it's on top. Remember, bigger numbers are on top, so I could set this to be 123 5000. As long as it's gonna be bigger than the next widget, I'm gonna add we will be fine. Okay. I do want to add some shadowing effects or rather, outline effects to this is well some shadow and outline. So I'm going to scroll on down where my outlined settings are. Um, you know, said the outline size to be five, and it's gonna be a black outline on my black background here. It's a little tough to see. So all I size of five outline color of black, which is all good for a shadow offset. I'm going to set that to be shadow offset of five and five in the shadow color. Here I am going to set to have an a value of one. Currently you can't see. It causes a value the Alfa Value zero. But if you set that toe one boom now you see some shadowing underneath all those letters. That's looking pretty slick. Okay, next widget I am looking to add here is going to be an image widget. I'm gonna left click and drag this onto my canvas panel as well. Like so and then I'm going to re order it. So it just added this image zero down here. I'm gonna put this right underneath my black magic like so And I'm going to rename this in the details. Panel to menu underscore underlying like so and the would end the details we want to set for this. Let me just zoom out a little bit so we can see what we're doing here. We got an anchor. Is the upper left, which is good. The position of this is going to be negative. 1 30 The position why is gonna be negative. 35. We're going to size to contents or check that box. My Z order here is going to be zero. That's fine. Now the appearance brush, I actually want to slot in an image in here. I want Aunt and always does that. So you're gonna left click? Hold down, left, click. Then I'm going to release left click. When I'm in this browse section t underscore Inc. That's the one I'm looking for. Let's see, you've got t underscore Ink black, pink Let's go black, something like that. And then I'm going to come under my render transform section And for the scale, the X scale I'm gonna set to be 0.8 and the wise scale, which is kind of the up and down again. I'm gonna set to be 0.3, something like that. Now let me just double check my position here because that is not exactly where I was expecting it to be. Negative. 1 30 negative. 35. That is what I have my notes saying It should be as however I disagree. I don't think that that is exactly where it should go. So I'm gonna take our wide position here, gonna slide it up and down. I'm selecting right here. Kind of moving this down a little bit right about there. So that's about where I want this to go. Now I may decide I want to change this at a later time. I think I'm gonna go to about 35. So I think I had it in negative. 35. Let's go. 35 for now. Maybe we'll change it later. Okay, That is going to do it all for this one. We've just added a title to our screen. Let's go ahead and compile and save a lot more work to be done. But guys that'll do it all for this one will see you win the next one 104. Black Magic Menu - Layout #2: Welcome back, everyone In this video, we're going to continue making mawr strides on R W B P B Magic menu. What you see in front of you is the completed version of this be magic black Magic menu that I created in preparation for this course. Now, I just wanted to show you what were specifically going to be creating in this video. It's gonna be this center portion right here. Essentially, this is going to kind of indicate a neutral thumb stick, if you will, and some arrows indicating that you could push up left down right to select some sort of magic in this video, we're just gonna be working on this center portion as well as adding this outer box. But before we get to any of that, I wanted to direct your attention up here to the upper left. We've kind of got this pink highlight for our underlying of the Black Magic header here. We currently do not have that in our version of this be magic menu. So I want to add that first before we continue with the rest of this Laos, I'm going to jump out of my older version of the project here, the one I created in preparation for this course. And I want to bring on our current version off the menu that we have created. Firstly, if you're not in your w bpb Magic menu, this is the directory in which to find it in down in your content browser double click on that to open it up And to add this sort of pink shadowing for the underlying we got this black underlying that's really hard to see right now without that pink ah shadow, if you will. This is how we're going to add it. Select your menu. Underline Right here in your hierarchy. We're going to right click, and we're going to duplicate this and in duplicating it it added this image for me, it's underscore six. It probably says underscore one for you down below. I'm just gonna left click and move this up underneath our menu underlined just for organizational purposes. And then I'm gonna hit F two on this and call this menu underscore underlying underscore highlights. Okay, and then I'm going to set some details for this. So over in the details panel I'm gonna set. First of all, we don't want this to be t ink black. I'm going to left click and hold down. Left, click. And then down here in our brow section, I'm going to do t ink pink. We imported this earlier, okay? With that selected, I'm going to uncheck this size to content. I do not want to size it to content. I'm going to manually size this. I'm going to set the size X to be 9 50 and the size why is going to be to 20 and then I'm going to position this accordingly. Position X is going to be negative. 95 in the position. Why? I am going to set to be 32. And I got this truce, um, through some trial and error. Now, one thing you'll note here is that my pink is on top of my black and I actually wanted the other way around. The Z order can take care of this. Now, remember, with Z order, if you got things kind of stacked on top of one another, the larger the number of them or how higher up on the stack it is. So I'm going to set the Z order for my highlight here to be zero, and now it puts it behind my menu underlined. Now, my menu underline between videos. I did set this to one. So if yours is currently zero, it'll show as still beneath the pink. If you set this to be one, that will bump it up in the priority list here, kind of move it up on the stack of paper, if you will, and that will put it on top. So there we go. We got a nice little pink highlight there for our title there. All right, let's move along to the agenda of the video, and that is creating this centre selection arrow of kind of widget thing. And what I'm gonna do here is in the palate panel. I am going to look for something called Grid, and I've got two different grids here. A uniform great panel and a grid panel. I'm gonna left click and drag this on top of my canvas panel. It's gonna add it to the bottom down here, and I'm gonna hit two on this and call this be magic. Underscore grid panel. Now, with that selected, I am going to set the details for it right away. We're gonna set the anchor point to be this center square. And now any positions that I said to this are going to be relative to that anchor point that point right there. So the position X, I'm going to set to be zero, the position why is going to be 100 the size X. I'm gonna set to be 900 the size why I'm gonna set to be 900 and then the alignment here. So it's currently down in our lower right, The alignment here. I'm going to set this to be 0.5, so it's gonna shove it basically over to the midpoint along the X axis 0.5. You could see how that nudged it over to the midpoint along the X axis. And then for the why I'm going to set that to be a 0.5, and that's going to set it to the midpoint of the Y axis right here. Okay, that's looking pretty good. Next thing we want to change about this is I want to specify some columns and rows that this grid panel is going to consist of. So I'm gonna click my column filling here five times 1234 and five that I'm going to do the same with the row. Fill 1234 and five. Now, essentially, what I've specified here is I said, Hey, I want a grid here that consists of five columns and five rows. Now, these numbers basically determined how wide each column or row is. If I was to set them all to be one across the board, like I will do immediately, that's essentially a quick and easy way of saying I want them all to be of equal size equal with, if you will. Now, if I said to some of these 22 I'm essentially making that bigger now to kind of drive home this point on the column Fill in the row, Phil, I'm just going to jump back over to the previous version of this project that I created. This show is kind of the finalized version here, and if I select my be magic grid panel here here, you can see I've got my column and row fills all filled out like I'm going to do back on our version of this in just a little bit. So I've got my columns here column 0123 and four. But I've got columns 02 and four, a little bit thicker than one in three. Now, watch Column zero here is gonna be this left most column. If I set this to be something like five, it's going to set it to be extremely wide. Was if I said it to be something like 50.1, you can see how it shrinks it all up like that. So essentially, what this is going to do for you is make a given column or row bigger or smaller. If you want them all to be a uniform within heights, you can set them to you ones across the board. However, for this particular course, I've got some very specific values that I want for him. Okay, jumping back to our version of this menu. So I'm gonna set our column, Phil here. The zero column is gonna be, too. The two column is gonna be two. And the four column is going to be a two. So 2 to 2. And then for the row, Phil, I'm gonna set to zero to be to the Row two is gonna be a value of two in row four is gonna be a value of two. So double check all the used to make sure that those look all right. Now, the first thing I want to do is add an overlay right smack dab in the middle of this grid panel by that jumping back to my other version of this course that I've already created. I want to specify something, right smack dab in the middle here, and so I'm going to be adding an overlay right smack dab in the middle. Let's jump back to our version of this. I'm going to do a search up here in the palate panel for overlay. I'm gonna left click, and I'm going to drag and drop it on top of our grid panel. Make sure there's that yellow outline around. Grid panel. Select our overlay. Let's hit F two on it to rename it right away. And I will call this no magic underscore overlay. And now I need to specify where in the grid do I want this to exist. While I wanted to be in row two in my details panel wrote to column two. Now it doesn't look very centered right now. Don't worry about that. For now. That will all shape itself up a little bit later on. I also have this nudging here that you can actually offset this a little bit through some trial and error. I did find that I wanted to nudge us over by negative seven in the X, the why we can leave a zero. And then if I come under the render transform section, I'm going to select the scale of this, and I'm going to set it to be 0.7 in the X and 0.7 in the why again right now. Note that it is not perfectly centered within here. Don't worry about that. That will sort itself out a little bit later. Okay, So with this no magic overlay in place. The next thing I want to add is a border. So come under your palate panel. Under the common section is a border, and I'm gonna drag and drop this on top of my new magic overlay. First thing I'm gonna do is hit f two on this and call this Noah magic border. And what am I going to use this particular with for Well, I'm gonna use it to slot in an image actually, over in the details panel under the appearance section where we got this image area brush image. I'm gonna left, click and hold left, Click released left, click down in the brow section And I am going to look for black magic and I'm looking for t underscore Black magic. And currently this looks really, really tiny. And the reason looks really tiny is because up here at the top horizontal alignment, I'm going to set that to fill and the vertical alignment. I'm gonna set that to fill, so that is going to fill up my entire area right here. Okay, So make sure you have set that to t black magic and then in the slot overlay horizontal and vertical alignment set to fill. All right, the next thing I am looking to adhere is going to be an image. So let's drag and drop an image on top of our no magic border. So note our hierarchy here. We're kind of stepping in every time we've attached things to one another, this one we're going to name hitting F to on that no magic underscore image and over in the details panel. I want to slot in an appearance brush image. So I'm gonna left click release left, Click Down on the brow section and I got magic. Underscore. Empty T underscore Magic underscore. Empty. Now you can see that it is kind of overpowering our magic border. But that's okay. We can fix that. And the way we can fix that is by coming under our slot, patting in the details panel, just clicking this triangle to expand it, and I'm going to set some padding values here. I'm going to set the left padding to be 78 you can see how that nudged it over. I'm going to set the top padding to be 80 and you can see how that nudged it down from the top. The right padding. I am going to set to be 60 and the bottom padding. I am going to set to be 64. Let's see how that looks. It's located in there pretty well. It's not perfect. I could probably a little bit better here. Maybe if I reduce our top padding from 80 to like 78. Something like that. So take note. I've got 78 78 60 and 64 is my padding values. It's not perfect, but it's pretty good. It looks like it fits inside of there just fine. OK, the next thing I want to add here is another image, and this one I am going to drag and drop on top of are no magic overlay just like this once again. So note where it lives in the hierarchy. Here I drag and drop this on top of the no magic overlay. I'm going to select this and I'm gonna rename it right away, hitting F two on it. It will be called No magic underscores selected. And with that guy added, I'm gonna jump on over to the details panel under the appearance brush gonna left click release left click down here in my search bar and I'm looking for one called highlights t underscore Highlight that we imported earlier and it's looking a little bit big. So in our patting section up here, I'm gonna set the horizontal alignment to be the middle. The vertical alignment to the middle That really didn't do much eso. Let's set our patting here to be left of nine. Let's set our top to be five, and it's still looking pretty big. So let's come down under our scale. Settings rendered, transform and for the scale, let's set that to be 0.775 in the X and point 775 in the Why that's not quite perfect, but it's pretty close. I could probably bump it down the top padding. Maybe if I went like seven. That's a little bit more accurate. Maybe six. We'll split the difference there, said A seven will go six. All right, that's not too bad. Okay, making good progress. Let's add a few more images here. We need to add some arrows that are going to surround this. 105. Black Magic Menu - Layout #3: And so the thing I'm looking to add here is an image I'm gonna left click on my image in the palate panel. I'm going to drag and drop it on top of my be magic grid panels. Make sure that that's highlighted all the way around. Notice the hierarchy right here, and I'm going to select it. Hit F two and call this arrow. Underscore. Right. And then I'm going to copy this, and I'm gonna select my grid panel again. And I'm going to pace this once. I'm gonna paste it twice, and I'm gonna paste it three times. And I'm going to name these all accordingly. Arrow underscore Left arrow, underscore up and arrow. Whoops. Hitting F two on that arrow. Underscore down. Let's go ahead and set the details for each of these. So for Aero writes, the first thing I should slot in is an image appearance. Brush image, left click. I'm going to do a search for Arrow and I'm looking for t underscore Arrow and I want to slot this into row to and there you see it? Way off to the left. There road to column three. Okay, now it's rather big Don't worry about that just yet. Because I'm gonna come under my rendered transform section, set the scale to be 0.5 and the X and 0.5 in the why. And then I'm going to set the angle here to be 90 degrees. And actually, I did get that. Why scale a little bit off the Y scale is gonna be 0.3. So it's gonna look something like that. And I could see I got some stuff a little bit off here. That's OK. We'll go back and fix that in a little bit and got some padding settings. It looks like a little bit off. No worries on that era left. Let's set that next. Actually, I do want to set one more thing here with our arrow right before we go on to Errol left. I've got a nudge setting for the arrow. Right. The arrow right nudge is going to be negative. 55. That's gonna nudge that way closer. OK, let's go into a row left next. So air left. I'm going to set the nudge right away to be 55. I should slot in my image here, which is going to be a t underscore arrow so we can see what we're working with. The role for this one is gonna be too. The column is going to be one. Then scrolling on down to a render transform area. I'm going to set that X scale to be 0.5 with wise scale to be 0.3, the angle for this one will be 90 Rather negative. 90 like so. And let's see, what else do I have said here? You know what? I'm not sure on that value. Negative nine. That doesn't look quite right here because you can see the pink highlight is a little bit off. So let me go back and consult my previous version of this. So this was my previous version. The Errol left. I did have Ah ha. I did have the angle of 90. But the why was at negative 900.3 for the scale. So let me set our aero left to be 90 for the angle, but negative 0.3 there we dio for our scale. Okay, Next, let's go on to our arrow up. Select that guy. And with that said, Let's slot in our image here of tea. Underscore arrow the row is going to be Row one. The column is going to be column it, too down in our render transform area. Let's set the scale to be 0.3 for the X, and the Y will be 0.5. The angle is just fine. However, I do want to come on up and set the nudge in the Y axis 2 55 That's gonna move it on down just a little bit there and laughing. At least let's select our arrow down component widget, I should say, not component widget coming into the appearance section. Let's set this to be t underscore. Er, arrow. The road is going to be Row three. That column is going to be column number two. The nudge is going to be negative 55 and then scrolling down into the scale section. Let's set our X to be 0.3 are. Why to be negative 0.5 negative 0.5 and the angle looks good as is. Now. We can see that our inner our inner no magic image is a little bit off, so let's see what we can do about that. And you know what I would be willing to bet. We've probably got some of our padding settings off yet. You know, these are not. I do have two sets of numbers in my notes, and I think I picked the wrong a set of numbers. I'm gonna set my left padding here to be 57. Let's try these that I have my notes, the top padding to be 55 the right to be a 42 and the bottom to be 48 48. Let's try that again. 48th. All right, so I got 57 55 42 in 48. And you know what? That looks pretty spiffy. And there it is. It did auto correct itself. And now all of this element is smack dab in the middle of our be magic grid panel. Things are looking up. Sorry about that mistake there. I picked the wrong set of numbers from my notes. Well, guys, let's do a quick compile and savior. We're making some headway here on her black magic menu. Still more work to be done, but we'll see while in the next video 106. Black Magic Menu - Layout #4: Welcome back, everyone. While we are continuing to make project in our black Magic selection menu, we'd now have a title. We've got sort of this center widget, if you will. That kind of shows you the different directions that you compress on your thumb. Sicker. Eric Keys To select a different magic in this video, we're going to get these four different magic selections added to our layout. So again, I am in the finished version of what this magic menu will look like. I'm going to jump out of here now and go back to our current version of this project. This is what we currently have in place. For starters, if you haven't already done so, come to this directory content Metro Vania Widgets Find your way on over to the Black Magic menu. Double click on it to open it up. So seemingly there are a lot of widgets we need to adhere. But through copying and pasting, we can take a little shortcut. So what we're going to add firstly is an overlay. Come up to the palate and search for an overlay. We are going to drag and drop this on top of RB magic grid panel. So select it and come under your be magic grid panel. That guy right there, drop it right on there. And right away, we're going to rename this to F two. We're gonna call it Electro Spark. Underscore overlay. We're going to start with the electric spark overlay, okay? And I'm gonna try to maximize my space here because our hierarchy is getting rather large. Have no need for animations right now, so I can kind of lower that down. So with our electric spark overlay selected, actually, you know what? Let me let me place all of the widgets here first, and then we'll go back and set the details. I think that may go a little bit faster. So we've got the overlay, and then the next thing I'm gonna add is a border widget. So I'm gonna left, click drag and drop a border on top of our overlay. Like so gonna have to this and call this electro spark underscore border. Next thing I'm going to add is an image. There is an image in our palate. Left click. We're going to drag and drop this on top of our border. Gonna hit F two on this electro spark underscore image, and you'll note that this hierarchy right here is very similar to what we just created here . 123123 Next, I am going to grab another image on Lee. I'm going to place this one on top of our electro spark overlay right here. Gonna hit F two on this. And this will be called electro spark. Underscore selected. Okay. Next, I'm going to grab a text widget. Not a text box, but a text widget. Left click. We're gonna drag and drop this on top of Electra Spark overlaying note the hierarchy here. Good hit, too. This will be called Electro Spark. Underscore name. And then I'm going to do another text box or not. Text box. Sorry, my bad. A text widget, text widget, drag and drop it on top of the electric spark overlay hit F two and this will be called electro Spark. Underscore Mana cost. Okay. So note the hierarchy here. Now, let's go ahead and set some details for all these and then we're going to be able to do some copying and pasting, so that should be nice. So let's start with our electro spark overlay. And make sure you got that selected over in the details panel. We're gonna set this into Row two column zero, That's all good. The electro spark border is what I want to deal with next. And we are going to set the padding for this to be the content padding. Actually, you know, actually, don't need to set it for this. The electro spark border. I'm looking ahead of my notes Electric spark border. Here is we're where we want to come under the appearance section and we want to set the appearance to be our black magic t underscore black magic. Okay. And let's set that to be the horizontal and vertical alignment to fill in fill. Um, it's showing up like this because we haven't set our electro spark image yet. Let's go to electro spark image. Let's set that to be have a patting of 57 by 55 by 42 by 48 you can see as I'm setting the padding here. It's kind of, uh, revealing our border back there that t black magic. Now for this, the brush image I want to slot in our magic Empty T magic empty. And it fits in there quite nicely. All right, so that is looking good. Let's do our electro spark selected. Next. Let's set the image right away. Appearance image. It's gonna be our highlight image T underscore. Highlight. And I'm going to set the padding here to be left of nine. Top of five, right in bottom are going to be zero. I'm going to also just make sure the horizontal and vertical alignment is centered as well . And then coming, Undermine, render transform. What do I want to set for the render Transform Flipping over my page of notes? If I remember right, it was 0.775 for the scale and it was 0.775 for the X scale 0.775 for the Y scale. And also, I do want to set the visibility of this in the behavior section up here to be hidden. I do not want that to show right away. Now I know that currently, you still see it here in the editor. But this is telling this when it is appearing in game, it will show is hidden. So note that hidden doesn't mean hidden here in our widget blueprint. And as evidence of this, if I jump back over to the previous version of this screen that we're creating right here, you can see that this exact widget I've got set to hidden, but it's not actually hidden. Okay, Jumping back to our version of this screen that we're putting together. The next thing I want to select is Ari Electro Spark name and in the details panel. I want to set our horizontal alignment to middle are vertical alignment to the top. The padding is gonna be said to six for the left, 20 for the top, and I need to set some text in here. I'll just set that to be a some magic, cause this is gonna be bound to a variable later on. I do have some appearance that I want to set for this. I'm going to set the color and opacity as our one G wannabe A zero. I want some yellow in there. Font family is going to be our Gothic letters, and I'm gonna set the size to be 35. I am going to have an outline for this. So outlined size will set that to to We got a little bit of a black outline around our yellow text there. That's looking pretty spiffy there in some shadow offset. Sure, Why not? Let's go shut off Set of two in the X and the Y. And, of course, to make the shadow appear I've got to set this Alfa value here. This a value to be one, and that will add a little bit. There is. Well, also, I want to scroll on down the justification of this. I'm going to set this to middle. So by setting this justification to middle, that's gonna ensure that our text is really centered up like we want it to be. Okay, last we got our electoral spark Mana cost. Like that guy. Let's go ahead and set the text here to be default of 99 just cause that's a good dummy value, right? Let's set the color and opacity to be yellow as well. So I'm just gonna changes, Be value here to be zero. Gonna change the font family to be Gothic numbers fonts the size of this. I'm gonna set to 40 so you can see kind of what this is gonna look like. Now let's set some of the padding settings. The left padding is gonna be set to nine. The bottom padding is going to be set to 20. But I also want to set our vertical alignment here to be the bottom. So that's gonna nudge it down here to the bottom. And then down in our appearance, Section two, I'm gonna set the justification for this to be a boom smack dab in the middle. Is that not what I wanted to do? Let me just double check that. Ah, yes. Middle here is well, even though, like I had it not set to middle middle. Here's well, but also at the top. I want to set the horizontal alignment to be middle in the middle of the slot. Okay, I do want to set some more settings for this. For the outline. Go said an outline size of two that is gonna be black in the shadow. Offset for this I am going to set to be to in to the Alfa Value. We gotta set that to one to make that shadow actually show up. That's looking pretty nice. Okay, so if I zoom, I'm back. You can see what this slot is gonna look like. So now what I'm gonna do is give myself some room here. I'm going to right click and select this electro spark overlay going right, Click it. I'm going to copy it. And then I'm gonna come up to my grid panel, and I'm gonna paste it once I'm gonna paste it twice. And I'm gonna pace it 1/3 time because we're essentially going to be duplicating this for our different skills or fireball and our blood less an Arctic blast, etcetera. Okay, so before we get started here, I'm just going to send you on a naming convention crusade here because I'm gonna pause video just a little bit, but I'm gonna let you know which overlays should be which so, down from the electro spark overlay this next one down, I'm gonna name this to be fireball Underscore. Overlay. This next one down, I'm gonna hit F two on this is going to be bloodlust. Underscore, overlay over Lay. And then this last one, I'm gonna hit F two on and this is going to be Arc Dick. Blast. Underscore Overlay. Okay, so now I'm going to pause the video here while I go about renaming each of these widgets in a similar naming convention To how I name my electro spark widgets. So seeing a little bit pausing now, Okay. And we are back now, I think I've got everything named appropriately along the left hand side here. If you weren't sure what you were supposed to name everything. You can pause a video here and see how I named everything. So what we've got now is four different overlays. What? Their haul? Occupying the exact same slot, the exact same row and column. So I want electro spark here, but I want to move these other three. So I'm gonna select my fireball overlay, and I'm going to set the new row for this to be too. But the new column for this to be forced, this is gonna live over on the right hand side here. Our bloodlust. Overly. Let's select that next. I'm going to set the row for this guy to be zero, but the column to be to that's gonna be our top most one. This is not perfectly kind of centered above my arrows here, so I'm gonna do is. I'm just gonna nudge this on over a little bit. I'm gonna set my ex nudge to negative five. That's just going to kind of snug it up a little bit more in my imprecise vision to be directly above our arrow right here. Let's elect our Arctic blast overlay here. I'm gonna set the row for this one to be four. I'm easy. One backs. You can see what I'm doing. And the column will be, too. And here, too, I'm just gonna nudge the X over to negative five just to slightly bump it on over. All right, guys, that is looking pretty good. We're not quite done yet. There's still little bit of fix ups I want to do over with ease, Hud widgets that are gonna populate this black magic menu as well. But for the purposes of this video, we're finished. So let's go ahead and compile and save. That will do it all for this one. Guys. See you in the next one. 107. Black Magic Menu - Layout #5: Welcome back, everyone. Well, we got one more video here for laying out our black magic menu. If you haven't already done so come to your W bpb Magic menu in this directory. Double click on it to open it up in this one. All we need to do is fix up the details for our various HUD widgets that are present during our Black magic menu. If you remember right, we duplicated this widget blueprint from our W B P HUD widget blueprint. And in doing so, we deleted out a bunch of stuff and we kept some stuff and this was some of the stuff that we kept. But we need to go back and fix up some of the details for these so that they actually appear on screen when we eventually hook up the script to show this screen. So these are the things we need to fix up. We need to select our mana overlay over in the hierarchy. And if I come under the details and I come under the Render Transformed Scale section said the X and Y to both be one and then you'll see that appear back on screen next select the w magic border widget. That guy right there and over in the details panel. What we need to change about this is the position. Why? Needs to change to be negative. Five. Slide that back down on screen. Next. Yeah, we still have a few more things here. Off lingering. Don't worry. We'll get those, uh, next we got our w magic overlay selected that guy, and you can see it selects that up top there. And when we need to set for this flipping my page oh, notes is gonna be our position. Why again instead of negative 200 Set it to be 33. That's gonna slide it on down. Let's go with R W Magic man A cost. That widget right there. This we need to scroll on down to the render transform set the scale to be x one. And why one and now you'll see that 99 appear down there. Next, we're going to select our w magic text. This is our ready text in the render transform here. We need to set our scale x and wide to be one apiece. Mm. There we go. And that's looking pretty good. Now with our black magic stuff are black magic widgets. Let's select be magic image. And with that guy selected that we need to come up in the details panel and where it says position why we're gonna change the position wide to be 31. That'll slide that down The be magic image. Let's select Be Magic Border Next and here the position wise got to be changed to negative five. So, like be magic man accosts next, coming under the scale settings for their under the render transform. Let's that the x and y to be one apiece and now that appears back on screen next, we're going to change. Actually. Did we get everything? You're I do believe we did. This is our current version of the menu. Let me just cross reference with my previous version of the project just to make sure everything is in order. And it does look like we got everything all right that's looking swell and dandy. Let's go ahead and compile and save next. We're on to create some bindings for these various HUD widgets so that all these different texts in numerical values can be made dynamic. That's to come in the next video. We will see you there 108. Black Magic Menu - Bindings #1: Welcome back, everyone. In this video, our goal is to create bindings for our specific magic selections. Here. I'm talking some of these names, some of these images and some of these man accosts. Now I think we're going to split this off across two videos because there's a lot of work to be done here. Let's jump right to it. If you're not already in your w bpb magic menu, come to your content. Metroid Vania Widgets Folder This is where we are working WPP Magic Menu Let's open it up and immediately I'm gonna jump on over to my graph tab in some empty space here. If you don't already have an event, construct out here, which usually there's one by default, but I believe we deleted it earlier. I'm gonna right click and type in events construct. This is kind of the ah, the begin play, if you will, for when this widget is shown, this fires off and then right below that, I'm going to get player character. And then I'm going to drag off of that and cast two R B p player like so and then I'm going to right click on this SBP player, and I'm gonna promote two variables. What I'm saying here is right away when we generate when we show this be magic menu, I want to create a reference and save reference to my BP player. Promoted that to variable. Uh, up over here or down Here is a matter of fact. You could just rename this to be palay er, and it says we already have a player out here. That's because when we I'm gonna delete that one. When we copied this over from our w b P Hut, if I jump on over to the graph in the variable section we had already created a reference to our player. Isn't that fine and dandy? So what we can do here is with that variable already created, Aiken simply drag and drop it right on top of our BP player like this. And there we go right away. When we generate this menu we're gonna cast are BP player and set this variable to be our BP player. So just note that if that for whatever reason wasn't existing out there, you could have right clicked on this particular pin promoted to a variable and named that variable player. Okay. Yes, we will delete that. Ah, left click Dragon marquee selection and say that this little bit of script is a reference to player. Okay, with that in place, we can go about creating some bindings way mawr easily. So I'm going to jump back to my designer tab up here. We're gonna be referencing the player a lot. I'm going to start with my w magic text ready? I'm talking this way up here. The w magic text ready. Select that guy over in the details panel under the behaviors section. I'm talking right here where it says a visibility. We're gonna create a binding for this click right here. We're gonna create a binding, and it's going to jump us on over to the graph tab. And if I scroll up in the my blueprints panel, there is the function it is prompting me to make. I'm gonna rename this right away, hitting F two on this to yet get w magic underscore. Ready? Actually not gonna do the underscore. Ready visibility. Now, I've got all of these other different functions out here. Um, I could delete these out because we created these When we did our w b p hud. I'm gonna leave them there for the time being, and I'll just go ahead and create the ones were intending to make. So get to w magic. Visibility ready. Okay, So what do we want to do in this function that we're creating? Well, all we need to do is get a reference to our player. Come on into the variable section, dragging a reference to your player, get him, and then we're gonna drag out of our player and do a search for w Magic. Ready? We have a variable that exist that exists inside of our BP player called Is W magic ready. And we're going to deal with this a little bit more when we create some of our white magic skills are missed and our lens of truth toddling that on and off to be a true or false And anyways, we are going to plug this into a select node. I'm looking for this note right here. It's kind of got that three prongs on the arrow off of its select node, and I'm gonna plug the return value this into the return value of the return node and the select nodes. Gonna kind of blow up like this and what I want to do that I want to say if w magic is false, I want this text here to be hidden. However, if r w magic are white, magic is ready to be used by the player. That is, the cool down has expired and it's ready to be used. Then we want this text to be visible. So this is a way for us of making this text here on our black magic menu. Ah, show or hide. Okay, let's go down to the next one here. I'm gonna go into electro spark image. So, like that guy right there and we're talking about this image that's going to fit in this part of our black magic menu. Electra Spark Image. Come under the appearance brush section. Right now, it's just tea magic empty. Let's create a binding for this click binding create binding. And I am going to be prompted to give this a name again up in the function section hit up to on this. Let's just call this set electro spark image. I'm gonna create a little space between these two and I'm gonna bring in a reference to my player. We're gonna get that. The first thing I want to ask dragging off of my player is has be magic. Electro spark get has be magic. Electro spark doesn't play or have the electoral spark ability even. And we're gonna plug this into a a select node that seems sort of select noon right there. And this is going to have a true or false as well. So if we do not have RB Magic Electro Spark, what I want to do is I want to take our magic empty variable. This slate brush right here. This also came over when we copied over r W B P hood. This magic empty notices variable type is slate brush and its value is t magic empty. We're gonna plug this into the false of our select. Now, if we do have be Magic Electra Spark, if that is true, what do we want our image to be? Well, we can get this by bringing in a reference to our player once again, I'm gonna get that that I'm gonna drag off this and type in electro spark attributes. And you remember we have this electro sparks attributes struck inside of our BP player. And if I drag off of this and I break this open inside of this struck, we have an icon slate that determines the image that we want to see if we have electro spark. So I'm gonna plug this return value into the return value of the return node and that should then set that to be the proper image. Let me just kind of snug this up like so, because eventually we're gonna copy and paste some of this stuff to make setting images and one not for our other are other skills a little bit easier. Just a kind of drive home. The point here and you're just gonna jump on over to my BP player and in my magic black electro Sparks section I've Got the Electric Sparks attributes which we just pulled out in R B magic menu Electra Spark attributes electric spark attributes and inside this struck here we've got this icon slate, this image. So that's what we're saying to use over here in r w BPB Magic menu. If our player has the electro spark skill, If that is true, this is the image that we want to show it. If it's false, we just wanna show that slot is empty. Okay, let's move on to our electro spark name. So right now it says some magic. We don't actually who want that to say some magic. So coming over the details panel next to the text section, let's create a binding here buying to create binding that's gonna jump us on over to the graph tab here in our functions. Let's rename this function. I'm gonna set this to be set electro spark name, okay. And a lot of the same concepts are going to apply here from what we just did. Firstly, I'm gonna bring in a reference to our players are coming under the variable section. There is a reference to my player gonna get him gonna pull off of this and find out. Do does he have electro spark get has electro spark like so then we're gonna bring in a branch dragging off that bringing in a branch node. Let's hook in our execution wear into that and I want to find over here. Next in the variable section are electro spark Mana cost electro spark, Mana cost Electro spark Mana cost Electra Sport image selected. Let's come back to our designer tab and I'm looking for electoral spark Man accosts this particulate er text widget right here and over in the details panel I can set this to be is variable. I am going to check that on In doing so over in my graph tab electric spark mana cost is now a variable that I can left click and place into my graph. I can get with that I can drag off of this in typing set visibility. And what I want to do is I want to say that if our player does have the electro spark ability, if that is true, I want to set the visibility of this text widget this Elektra spark mana cost. I want to make sure that that is visible. However, I'm gonna copy and paste this set Visibility? No, Right here. Control C control V. If this is false, that are, player does not have the electro spark ability. I'm gonna take electoral spark man accosts and plug it into this target is Well, then I want to set this to be hidden. Okay, So I am going to plug both of these into the execution of our return note. But we're not finished yet. I want to plug something into this return value as well, Because our electoral sparked name currently says some magic and we don't want it to say it's some magic. Rather, You know what? I got my Electra spark name here and what I really wanted to be setting, not my electoral spark Man accosts here is I wanted to make sure that I was grabbing my electro spark name Maya Bad Electra Spark name. I'm gonna so like that and said that to be is variable I I selected the mana cost that use my bad So I'm gonna come back to the graph. And now note that I had electro sparked mana cost right here. I actually wanted electro spark name. This is what happens when you work. Long days. Electro spark name. Let's make sure we get that in there. Her function is electric spark name And somewhere along the way I decided we were working on electric spark Man Accosts oe. Okay, so, dough do we have the electric spark? If we do, we're going to show the electric spark name. If we do not, we're going to hide the electric spark name. And what do we want to print out into that Electra spark name Field. Well, to get that to be proper, I'm gonna drag out of my player type in electro spark attributes. I want to get the electric spark attributes get electro spark attributes. There they are, that I'm going to drag off of this and I'm gonna break it open. And there is my name right there so I can plug this into the return value. Like so Okay, let's compile and say that right away in Let's move on to our electro spark Mana cost. So jumping back to the designer tab here is going to be our electro spark. Mana cost that particular widget right down there. So let's come over toe where it currently says 99 over in the details panel and choose right here to create a binding that's going to jump us over to the graph tab, prompt us to create a function. I'm gonna rename this right away in my blueprints as set electro spark mana. And there's gonna be a lot of similarities here between our set Electra spark manna and set electro spark names. So I'm gonna jump over to my Electra spark name tab, which is right here, and I'm gonna left, click and drag. And I'm gonna copy these nodes right here. Not that one. So control plus click to un Select that with these notes. All highlighted I'm gonna control See Then jumped back to my set Electric spark Man attacked by double clicking on it I'm gonna hit control V to paste them all in And then I'm gonna swap out the things that I need to swap out So right away let's get our set electric spark Mana plugged into a branch node All this is going to remain relevant That b has be magic electro spark and the electric spark attributes However, I want to swap out the electro spark name here with electro spark Amana Now is the time where this should actually be used. Electro spark Mana We're gonna get that the mana cost. I should say that is going to be our target and here that's going to remain visible appear hidden down here. Let's make sure this execution wires plugged into the return note is this execution wire and I just want to make sure Did I get my execution wires plugged in for this set? Electra spark name? I did. Good. So jumping back to our set Electra spark Amana. Okay, so here in the return value, what I'm looking for, I'm gonna click this little drop down. I'm looking for the man accosts. How much does this electro spark mana cost? And that's the value that I want to plug in. So I'm gonna drag off of this, and I'm gonna take you round. That's gonna make it so that we can get an integer value, not a float value. And then if I plug this into the return value, it's going to convert my integer into a text like it needs to be. Okay, so that is looking pretty swell as well. Okay, I'm gonna compile and save here. Now what? I'm going to suggest that we do. At this point, I'm gonna come back to the designer tab with all of our texts here, and you can multi select them over here in the hierarchy is probably the easiest way to do it. By that, I'm talking about fireball name it's highlighting Are some magic over there. Let's do bloodlust. Name Arctic Blast name. I'm just holding down control for all of these. So I got all three of those selected and I want to make all of those ease of variable because we're going to one's actually not gonna let me do if I multi select him. Unfortunately, let's do Fireball name. Let's set is a variable. Let's go. Bloodlust name is a variable. I thought it would allow you to do all three. Let's do Arctic blast name is variable seen with a man A cost for all three of those set Those to be is variable right away because we are going to need to use those in the functions that we're going to be creating for all of these bindings. Okay, So you just saw how I created bindings for our electro spark over here and I created bindings for the title. That man accosted even the image that's going to appear in here as well. What I am going to do now is I'm actually going to recreate all of those bindings for the rest of these three cause the process is going to remain largely the same as what we just did for our electro spark. So rather than bore you and do this all on video, the exact three bindings that we just did. Four. The image, the name and the Mana. I am going to do them and then share them all with you in case you get lost along the way. Okay, so I'm gonna compile and save at this point. That's gonna do it off for this one. In the next one, I'll share with you what I've built. We'll see you there. 109. Black Magic Menu - Bindings #1 - ADDENDUM: Hello, everyone. I wanted to make a quick update to this video because I've gotten some reports from students that they are getting an air message related to some of their images here in their Black Magic menu, as well as probably their white magic menu And error is happening with some of their images . In this case, just as an example, I'm gonna talk about my fireball image. We've got this binding here. This set fireball image binding were supposed to populate this with our fireball image going to navigate to where we created this function go to function. And over here in the graph tab, some students are reporting that they're getting errors, saying that they can't find a reference to our player. Now, if I jump back to our event graph here in w b p B magic menu at the very beginning, when we construct this W b P B magic menu, we're we're casting toe RBB player and we're saving our player into a variable For whatever reason, this variable is not being initialized in time for our setting of our various images, and that's what's causing the error. But there's a work around to this. We don't actually have to do this method where we're saving a reference to our player. If I go to where my set fireball image function is here, we're gonna double click on that weaken, delete out our reference to our player, and instead I could right click, get player character, then drag aware out of here and do a cast to BP player. And here I could drag out a wire and plug this into our fireball attributes buttes and RB Magic has fireball variable right here as well. Now remember, this has be magic fireball in this fireball attributes. These are variables that exists inside of our BP player, so we need to be able to get a reference to RB People Air in order to talk to these variables now. Currently, it's seeking some execution wires coming into and out of this node. But I can right click on this note and convert this to a pure cast in order to get rid of those execution pins. Now, the reason I'm doing this year is I know that this cast is not going to fail. If you know that your cast is not going to fail you can do like I did and convert this to a pure cast in order to get rid of those execution wires. However, if you don't feel comfortable with that, if I went back to an impure cast that is going to bring on these execution pins once again , I could plug this in, like so. And this is all going to do the exact same thing. So whether you have a set up like this or whether you have a set up like this and I'm gonna change us back to a purer cast that will work towards getting rid of those player errors. Now you're gonna want to do this of all your various functions here. So how can you find where you've got references to your player? Well, you come under your list of variables here. Here is a reference to your player. This is where we're storing our player or supposedly soaring it into the variable. If you right, click on here and find references. This is where you can find references to player throughout your grass here, and you can just double click on any of these. Here's our set electro spark image. Double click on that it will jump you right to it. So I recommend that if you are getting these errors related to your player, you just right click get player character cast to your BP player, just like you just saw me do. And that is a work around to that issue. So hopefully that helps guys. Now let's get you back to the rest of your tutorial. Enjoy. 110. Black Magic Menu - Bindings #2: Welcome back, everyone. Well, in this video, our goal is to finish off creating all of our bindings here in our black magic menu. We left off in the last video by creating some bindings for our image for our text, our name here and our mana cost for the electro spark. And I instructed you between videos to attempt to do the same for our bloodlust, our fireball in our arctic blast. We're gonna walk through one of those examples and I'm just going to show you the script that I've put together for each of those. But we'll walk through one of them so you can be sure that you've done everything correctly . So if you haven't already done so Here we are in our content. Metro in Vania Widgets folder double click on W BPB Magic Menu to open it up. That is where we left off. OK, so let's walk through how I went through creating all these bindings for our fireball slot over here. So let's start with our fireball image. I made sure that I had that selected and then over in the right hand side, where we are looking at our appearance, I created a binding right over here by clicking on this. Let's just it said buying before. But let's just assume I clicked on binding. Create binding. We were prompted to create a function over here in our graph tab. I then renamed this particulate function this one I renamed set fireball image. There it is over here. And this is my script for putting that together again. You gotta bring in references to your player and wherever I have got these notes saying specific to function again. All of these set image functions are relatively the same between the electro sparked the fireball Arctic blast, etcetera. The only difference is we have different variables that were referencing here for fireball . We got fireball attributes and be magic fireball for are plugging for index here. So note that as I walk through all these Okay, so this was for the set fireball image than over back in mind. Designer Tab. We also said we were going to swap out create a binding for our fireball name. So with this guy selected, I came up over into the details panel under content. I created a binding by clicking right here That prompted me to create a function over in our graph tab. And over in my functionary of my blueprints panel, I rename this to set fire ball Name this guy right here. And this is a script that I have available for that. And take note again. As to these specific variables that I have in this function, they should all say fireball here as well, because we're trying to set the fireball name and whether or not we actually see it now for this fireball name Variable again. This came from our variable section down here where it says fireball name. And the way we got that to show up in the variable panel over here is back in our designer tab. We had selected Fireball named in the previous video and check this box to make this variable. And in doing so, that makes it so that we can actually drag and drop it from our variable section into my blueprint panel into this graph. So this is a set fireball name jumping back to our designer tab. We also did one of these bindings for Fireball mana cost, so selecting that over in the details panel under content I created a binding by clicking right here, jumping over to the graph tab. I created a ah function here. Names set, Fireball Mana. This is what it looks like. Take note of all the nodes here again. I did a lot of copying and pasting between different functions. Here. Note here to where it says specific to functions. These should be specific to whatever it is you're trying Teoh display here in this case, Fireball Manus. So I got to get be fireball magic fireball attributes, and I got these by dragging out of here. Okay. However, this fireball mana cost this came from back in our designer tab Fireball Mana cost. We had it selected right over here, and we check this box for is variable. So that's how we could bring this guy into the graph. This one is available in your variables panel over here. So these particular variables you gotta drag out of the player reference. This particular variable should be available in the variable section of your my blueprints panel. So again, double check to make sure everything is right here. That's the process. I went for each of these. Now let me just walk through my different scripts here. This is the set Bloodlust name. If you need to pause the video here, that's how that looks. This is set bloodlust manner. This is I feel like I'm missing one blood less. I am missing one bloodless. Ah, bloodlust image. We bring this guy over with the rest of my blood less. This is setting the blood less image again. Take note of these particular variables pulled out of my player. Here is my set. Arctic blast image set, Arctic blast name set, Arctic Blast Mana. And that should do it. Hopefully didn't make any mistakes within their. So we're not quite at a point where we're at where we are actually going to bring this menu up on screen. We're going to create some some widget animations Next, and then we'll focus on bringing this black magic menu up on screen to see how it looks and how it will eventually function. That's going to do it all for this one. Guys. See you in the next 111. Black Magic Menu - Animation: Let's jump right to it. Here we are in our content. Metro in Vania Widgets folder. Let's double click on W B P B Magic menu so that we can create an animation for this. Ah, currently, my animation section is kind of squished down here. I'm just gonna lift this up because we are going to be creating a brand new animation. I'm gonna click right here to zoom to fit my black magic menu. And in our lower left hand corner, where we've got the animations panel, I'm gonna click this green button to add an animation, and we will call this be Magic menu in True. Okay, so we're gonna have one animation here in which we will be animating several things. So first, I'm gonna make sure I select my animation here, and you can see now I've got a timeline over here on the right side to deal with. The first thing I want to animate is our be magic grid panel. That's this grid panel right here. Be magic grid panel. Now, before I start to animate this over time, I am going to change some of the defaults in this case. I'm going to change its scale default. We currently have these values all set so we can see what our final many is gonna look like down here in the details panel. Scroll down until you find your rendered transform scale settings. And I'm gonna change the x and y of this now to be zero in the X and zero in the UAE. So it's gonna temporarily be ah, invisible if you will squash down infinitely and I'm gonna click right here under rendered transform scale to add keys for this down to our timeline And there we see it down here be magic grid panel transform. Let's expand out our scale settings and we can see that we've got a couple of key frames here at the zero second mark for X and y values 00 Okay, let's move our timeline slider over to the 00.15 2nd mark. And again, I am going to hold down control and mouse wheel in to kind of expand out my track here because 0.15 seconds is not that far away. And then I'm gonna right click and kind of slide my timeline slider over to the right like this. So I'm at a 0.15 seconds and I'm going to click right here to add some or key frames for the X and Y. And now I'm going to change my ex value here to be 1.5 and my y value to be at 1.5 as well . So just kind of showing you what we're doing here is when we do call this to appear on the screen, this is gonna kind of, like flare out bam like that. But then we're gonna move this down to the 0.25 2nd mark here in our timeline. I just grab this red bar, moved it over to the 0.25 2nd mark. I'm gonna adds more scale keys by clicking this little plus button. There are my two keys and I'm gonna change my ex to be one point. Oh, and my y i to be 1.0 is Well, so now if I go to the front by clicking right here and then clicking the play button, you kind of see what that's gonna look like a really quick animation where it's gonna flare out and then kind of go back to its default size there. Okay, so we got our grid panel animation in place. Let's collapse this. I'm gonna click right here to collapses Graph. I'm gonna move our timelines ladder all the way back to the zero second mark. The next thing that I want to animate over time here is going to be our menu. Name our menu name right up here where it says black magic. You can click on words as black magic or alternatively, over here in your hierarchy. Okay. And with that selected come under your details panel, I'm gonna come under the render transform section. And here, too, I'm going to set a new default value for my scale. I do want the X to be one, but I'm going to change the wide to be zero, so it's gonna squish it on down to the point where you can't see it. And with that now in place and our timeline at the zero second mark, I'm gonna click right over here in the details panel under scale to add key frames. For this, there has been added down to a timeline menu name. Let's expand out or transform section. Let's expand out or scale. There are key frames. So what? Zero second mark? We want that. I'm gonna move our timeline slider all the way over to the 00.35 2nd mark. I'm gonna add some or scale keys for this by clicking right here. There are my keys, the X value I'm going to keep at one and the y value. I'm going to keep at zero that I'm gonna move my timeline slider over to the 0.6 2nd mark 6/10 of a second. I'm gonna add some more skill keys by clicking right here. Here. The X is going to be one, but the why is going to be you one as well. So if I hold down control in mouse wheel back, I'm gonna squish this timeline together a little bit. So we got this going on. We're essentially are title here is kind of squished together. And then over time, it's just going Teoh do, do do do do that kind of thing. Okay, that's kind of cool. All right, let's collapse this menu name portion of our timeline. We're done with that. Next. Let's select our menu. Underline Now we've got a menu underline, and we've got a menu. Underline. Highlight. Because I made this be two separate pieces of art, which, in hindsight, I would go back and make it one piece of art in photo shop or something like this. We're gonna have to create two animations, cause I'm gonna slide this in from the side because I'm going to slide the menu underlying this black sort of ink in from the side. I'm gonna have to do the same with the highlight, the pink ink splatter. But that shouldn't be too much of a problem. So with our menu underlined which it selected over in the details panel. Let's scroll until we find the render transform scale section. Ah, not the scale section, the translation sections. What we're gonna be fiddling with here. So at the translation section, I've got 00 Let me see. I gotta flip my page of notes here a time. Zero. We're going to set. Sorry. The X value here to be negative. One 1000 off the side of the screen. You can see it's over to the left side of the screen. Okay, So with that as our new default value, we haven't actually added keys down to our timeline here. We've got translation at Xnegative 1000. Why still zero? I'm going to click right here to add key frames for this there. It appears down in our timeline. Let's expand this out there under our translation. We see X value of negative 1000. Why? Value of zero? Let's move our timeline, Slatter. Over to the 0.35 2nd mark. Right about there we will ADM. Or translation keys clicking right there and here. The why can remain at zero. The X is going to just the zero is well, so over time that is going to slide in like so. Okay, now again, that pink one is still out there, which we don't want. So let's head. Let's add an animation for that. Let's collapse our menu. Underline Select menu. Underline. Highlight here with that guy selected under the Orender transformed section over in the details panel. Let's set to the X translation for that to be negative 1000. And then let's add some key friends for this so clicking right here. We now have menu underline, Highlight added to our timeline. Let's expand out some triangles here and at the zero second mark. That is what we want for X and Y translation. Let's move this to the 00.35 2nd mark. Add some more keys clicking right there. Here. I'm just going to change our X to be zero as well. So with all of these in place, let me zoom to fit up here. Let's move our timeline, cider all the way back to the front. I can click right here to go back to the front. And if I click play way, that's kind of how it's gonna look. Now you'll notice that I'm Onley animating the title and this middle part not these parts over in the upper right. And the reason I'm not gonna be animating those onto the screen is because our HUD has those elements on the screen. So when we summon this on the screen, essentially want these to be in place right where the HUD has them in place. So I really only care about animating these things over on the left hand side. Okay. With that done, you should always compile save. We are good to go on this one. Guys, we will see you in the next video where we start to script are black magic men. You see there 112. Black Magic Menu - Script #1: Welcome back, everyone. In this video, our goal is to create some script inside of our player controller to make our black Magic menu Come on and off the screen at will. Let's jump right to it. We're going to start out here working inside of our project settings. So jumping back to your main level editor coming to the toolbar settings, we want to access our project settings right there and over in the left hand side selector input category. We're gonna add a new action mapping not a new axis mapping, but a new action mapping. So click this plus button right here. We're going to create a new action mapping for black Magic menu. That's a good name for an event that we can fire off. And we're gonna bind this to a couple of buttons. The 1st 1 we are going to bind this to will be our number zero on our keyboard. And we're also going to add another action mapping here for this For all you controller people, I want to do one for the right shoulder button game had right shoulder. Okay, So with that added, we can exit out of our projects said. Well, actually, you know, let's keep our project settings here because we're gonna be jumping back to this in just a moment. In fact, I'm gonna be jumping over to the maps in modes category. In our maps and modes category, we can see that our current player controller class here for our project is P C Metroid Vania. Now we're gonna be adding this bit of script for showing and hiding the black Magic menu inside of our player controller here RPC Metro Vania. So let's click right here to browse to this asset in the content browser That'll jump us over to the appropriate directory. Let's double click on this to open it up. And I firstly need to create a reference to RB Magic menu. We've got some some script in here already for showing the acquired skill in hiding the acquired skill blueprint. I'm just gonna jump over to the right here a little bit, right click and type and begin play. We're gonna add an event upon beginning play for player control here. I'm gonna drag off of this typing create widget and the widget that I want to create is RB Magic Menu and then off of the return value here. I'm not gonna drag out and said, I'm going to right click on this return value and promote this created widgets to a variable, and I'm going to name that W B P Underscore be magic underscore menu. So once we've created it, we're storing it into a variable Ah, left click drag around this to have that Seiki and I will say that this is a B magic menu reference. That's what this bit of script is. Reference. That's what this bit of script is right here. Okay, so the next thing I want to do here inside of our PC Metro Vania is I want to right click into a search for black Magic. I have already whittled down to two different input action events. I want Black Magic menu, the one that we just created inside of our project setting. So remember the right shoulder button or the number zero on her keyboard can fire this out , and I want something to happen when we press either that button or the shoulder button. Well, something I want to make sure that I do before I add any script is with this event added over in the details panel, we've got this option for execute when pause that is currently unchecked for this particular action, we want to make sure that this is checked. Now. Why? Because when we pressed zero key or the right shoulder button, we're going to be pausing the game in order to display the Black Magic venue. And the only way to have this work went unp laws ing it is to ensure that this event could fire off when pause. This is saying yes, this can still register an event. It will still fire out when the game is paused to make sure that you have that checked. Okay, So what do I want to do when we press this button? Well, what I want to do is I want to right click. I'm going to get Hud. Then I'm gonna drag off of this and type in cast, too. R M v hud. And let's link this in his well off of the press event, I'll bring in a little reroute e note here. Now, why do I want to do this? Well in our project settings in our maps and most section Our current HUD class is M V hood . And if I click here two rows of this asset in the content browser there it is. In this directory, I will double click on it to open it up. You can see that we have an event in here. Where we are creating are W B P hud widget, and we're adding it to the view port. Now, this is gonna be important for this next step. And actually, I need to make an adjustment here inside of our M v hud between our creation of the hut and adding it to the View port. I'm gonna break these links momentarily by holding down Ault the old key and left clicking , and I'm going to right click on a return value and promote our HUD here to be variable. And I will call this W b P underscore Hud like so and then keep the flow of execution going and pass this along to add that to the view port. So make sure that you do this in your M v HUD and very important step here. You must compile in save. Why must we compile and save? Because now, when we jump over to R. P. C. Metro Vania Player, controller Blueprint. We're saying we want to get whatever our current Hud is here, we're saying is our current HUD, the M V Hood, And if it is, we're gonna drag out of our as M V hood. We're gonna access that W b p underscore get W b p hud that we just created over here in our m the HUD blueprint. That guy right there were accessing that. Now why are we accessing? That is because I want to say that when we press this button are black Magic menu button, we're gonna grab that Hud, and I'm gonna drag off of here and say, Remove from parent. That's essentially a fancy way of saying remove our HUD from the screen that will remove, like our health bar that's in the upper left. That kind of thing. Okay, so I want to remove that. But I also want to add something. Well, what do I want to add? Here is my W bpb magic menu stored invariable. I'm gonna drag that out, we're gonna get that, and I'm going to drag off of this and say add to view port organizing it thusly. Okay. Flipping over my page of newts. What also I want to do after attitude of you poor. Well, I want to drag out of my be magic menu here, and I want to look for be magic menu intro our animation that we just created in the last video. We're gonna grab that. Then we're gonna drag off of this and say, Play animation number of loops to play just one. What else I want to do here? Well, I think I would like to play a sound. Let's do a two d sound in which sound do I want to play? I will have this be flipping over my page of notes. It's going to be start simulate que Now if I hover over it shows me the pathway for this. This is in my engine content. And if you don't know if you have engine content enabled or not, you can come under view options and you can check right there in order to show engine content than that should be available to you again. You can put in whatever you want, so I'm gonna put in start simulate to you and You know what? I'm gonna promote this to a variable. So with that sound slotted and I'm gonna right click on this, I'm gonna promote this to Variable. And I will call this S f X underscore Menu s effects underscore menu underscore on. So we're gonna play that sound because that's all well and good. Something else I want to do after we do this is I'm going to set game paused. Make sure you check this boxing. Yep. The game is going to be paused. Then I'm going to right click, and I'm going to get player controller, and I'm gonna drag off of this and say, Set input mode game. And you I hook this in like So Now we need this node. Not just Theus. EMP set input mode. You I only because if you I Onley Then when we eventually released this button, the release event for this event will not trigger we have all this yet to hook up. But it's important here that you set your input mode here to be game. And you I so that both your game, the game that you're playing and the u I can accept inputs all right, the ah, the widget to focus on here. Well, we could simply say we're going to focus on the W B P Black Magic menu. That's the one we want to allow. Focus. Hook that in like so and everything else here is looking. OK, okay, let's move along to what we want to happen now when we do our input action Black Magic menu on the release, we release that button. We're gonna make something happen when we hold down the zero button and or the right shoulder, and when we release it, we're gonna have something else completely different happen. Before you do that. Let's go ahead and compile and save. Of course, there is in an error here. Let's see what our air is. Ah ha! We forgot to plug in a plea animation target. That's why we compiled to find any errors. Well, for this, let's plug in R B Magic menu as the target. Let's try to compile and save one more time. Everything is good to go, All right. Next, let's move back to our released event when we let go of our right shoulder or the zero button and determine what's going to happen then? Well, the first thing I want to do is here. We said We're going to remove are W B P Hud. Remove that from the screen R W B p r. When we release our action button, Here are black men, you magic button I want to add add to view port. We're gonna add this back to the view port. So on release, we're gonna add or HUD back to the View port and are W B P magic menu, which we had previously added. When we pressed the button here, I'm going to drag off and say a remove from parent So we're kind of flip flopping what we're doing here. We're adding one, removing the other, adding the HUD, removing the Black Magic menu, then sliding on over to the right here a little bit. Let me just drop this down a little bit lower, and at the end of this video, I'll try to go back through this also, you can see exactly what we have. So after we remove that from the parent, I want Teoh play a sound to t just like we did here. So I'm gonna hit control C and control V to copy and paste that I'll drag this execution where all the way down the sound that I want to play here is going to be Sim You late It is the end. Simulate que That's the one I'm looking for in again. As I'm hovering over it says it is in the engine folders again. If you come under view options right here. That is how you can show your engine content and make that available to you. I will. Right? Click on this pin as well. And let's promote this to variable. Just because we promoted the other one will call this S f X underscore menu underscore off . Okay, then we want Teoh. I'm gonna control See this set game paused control v it down here on Lee. When we release the button, we want to uncheck this pause to say Nope. The game is no longer paused. And then lastly, what I wanna do is I want to drag off of my get player controller here, drag off that we're going to say set input mode. In this case, we want the input mode to be our game on Lee. No more worries about any you I So let's kind of walk back through here and see what we've got. In fact, before I do that, let me just left click and drag a marquee selection around all this Tep that Seiki and I'll call this my show slash hide Black Magic menu. Just bring the sun down here. Let me compile this real quick, just to make sure there's no errors and I'll save and I'll walk us actually, before we walked through, This is a recap. Let's go ahead and play this. So here we are in our level. Now. If I hit zero key on my keyboard, it shows up. You saw that animation play. Let me get rid of that right there. So hit zero key. It shows up. If I release zero key, it goes away. And if I do the right shoulder button, it shows. And if I release the right shoulder button, it goes away. Excellent things are working as intended. This is our script. Note to an important detail here in our M. The HUD that is located in our project settings, maps and modes. M. V hood right there. The one thing we didn't side of here. Envy HUD, is we promoted R W B P hud to a variable We right click right there and promoted that to variable That enabled us over in our PC Metro in Vania to drag out of our cast here to access that so that we could remove our HUD from the screen or added to the screen. So just moving over to the right here, showing everything that we've got hooked up. Pause a video as you need. And there we have it. Guys, we have a black magic menu weaken, Bring on or off the screen. Job Well done. That will do it all for this video. We'll see you guys in the next one. 113. Black Magic Menu - Script #2: All right. Welcome back, everyone. So we have it now Where if I jump in and play and I pressed the zero key I can bring on my black magic menu. And Aiken, bring it off if I release that button. But I don't have any way of selecting one of my available black magic skills by press any of the arrow keys, ws and D any the D pad analog stick, etcetera. My yellow highlighter right there in the middle is not going to highlight and select any of those skills. Let me just jump over now to the previous version of this project that I created in preparation for this course it is. Do do right over here If I click play again. This is the finished version of what we are going to create. What we're going to start working towards is making it so that you can actually highlight and select these different skills. Notice that when I'm highlighting a skill like Arctic Blast Year, that Texan large is there's a yellow highlighter around the skill itself. There's kind of that material around the text, and also, if you look in the upper right hand corner you can see that that particular image is populating in our black magic skill slot in our HUD. Right, So that's what we're gonna be working on towards or towards in the next three or four video . So I'm gonna exit out of my existing project right here and here we are, back in our version of the project, we're gonna be working inside of W B P A B magic menu. So find your way out over to this directory, double click on it to open it up. And don't be alarmed if when you do open it up, you're like, Hey, where is my black magic menu of Remember, you created an animation be Magic Menu Intro animation in which you set the default to new values for a lot of these. So if you select your animation, move your timeline slider over to the right, you will see what your menu will ultimately look like, and you will feel warm and fuzzy inside. Okay, let's get to it. In this video, we're going to be creating three functions that we're going to be using in the next few videos. So laying some groundwork down in this one this is gonna be done over in the graph tab. So over in the my blueprint panel, where it says functions, we're going to create a brand new function. So click right here to add one. We're gonna name this first function, select magic text effect hit. Enter on that. And with that guy created, I'm going to select our entry node right here. And I'm gonna add in input right here in the details panel to click this plus button, It's gonna ask for a new input name. I'm gonna call this text to highlights. And I don't want this to be a boolean variable. I'm going to select right here. We want this to be I'm gonna simply type in text. All right, There a doo doo doo doo doo. Where is it? Ah ha. That got right there. Ah, simple static text widget. Not text strings to make sure you get simple static text widget. The object reference that guy right there. So it's kind of this bluish color, right? Okay, So with that set, I'm gonna drag out of our text to highlight like so. And I'm gonna type in set bond, and you're gonna find this Ah, set font function that we can plug into like this. Now, this is gonna be the text that we want to highlight, and we can set some font information. So now we're gonna work backwards a little bit. I'm going to drag off this in a font. Info like so. And I'm gonna type in a make slate font info like so And it's going to allow me to specify some things. I'm gonna click this little drop down to show you everything that we can possibly slot in here. Ah, font family, which I do want to set. So what kind of font family do I want to set this as I want to slot in? Let's do Gothic letters. Font material. Nothing here yet. Typeface. Nothing size. I'm going to set this to a font size of 50. So our when we select a given magic, the size of our fund is going to increase. And I do want to set some outline settings, but check this out. We've made some slate font infer information here by dragging backwards. Aiken dragged backwards out of my outline settings like so and say make font outline settings. Ah, Ha. And what this is going to allow us to do is specify some outline settings. I'm gonna click this little drop down. I'm gonna say the outline size is going to be seven. The outline material is going to be the one that we created earlier called M underscore. Text highlights. You remember when we created this sweet looking material, right? Kind of had the flames flowing through it. The outline color I'm gonna leave is straight black, and the rest of this is going to be fine. I believe so. That is our first function. Congratulations. All right, let's create a another function here, over in the details panel or the my blueprint panel. Rather Plus, to add another function, this one we will call un Select magic text effect not selected magic text effect. I don't even know that's correct. English there. But anyways, we're going to select this entry nude right here. We're gonna add input for this down here. Inputs plus parameter, This one, we will call text to a new highlights on highly. I don't even know if that's a word. Ah, the object or the variable pin type here should be the same as before. But in case you don't have this auto populated from earlier, this was a text. The one you are looking for is down here a simple static text widget. The object reference. Okay, here, too. We're gonna drag off of our text to a new highlight. We're going to set a font like so we're going to drag backwards from infant info and we're going to say make slate font info. And here we're going to set the font family to the Gothic letters right there. Fought material is gonna be blank. Are size is gonna just be setback to 35. So we're enlarging the text when we're highlighting and we're setting it back to size 35 when we're not highlighting it anymore. That's what's going on there. And then for our fun outline sightings. Let's drag backwards out of our outline settings and we will type in make fun outline settings clicking that little drop down arrow are outlined size. Let's set that to be more to our outline material is going to be our text. Sorry. Rather, we're not gonna have an outline material here because when we are doing our select text magic effect. That is when you want that fancy m text highlight just to show you what that looks like. Once again, I'm gonna browse to this in the content browser. Remember that guy right there Now it's gonna look black when we see it in game. It's not gonna be orange and white like that, but that was our material that we created earlier. So jumping back to our WBB magic menu back on topic here. Here we are with our UN selected text or magic text effect. Double click on that. That's where we were. So the outline size here is set Teoh to to We will leave everything else as is. I think that looks fine. Okay. Last one to create last function for this video. Anyways, come under functions, create another function. This one we're going to call unsa, lex all magic text effect. OK, And select that entry nude right there, over in the inputs. We're gonna create a new input and we're going to call this Tex plural. Two un highlights and this should be that same variable type as before. However, we want to make something a little bit different here. If you click this little T icon, right to the right. We want to make this in array. We're going, Teoh. Basically unknown. Highlight multiple text. And this is in a way, we can do this more easily through making this an array of variable. So you should see this sort of sort of like, waffle looking grid icon, and that's the one we're going to want for this. Now, in this particular function, what we're going to do is drag off of our text to highlight Array. This little waffle icon shows that that is going to be an array of text objects. We're gonna drag off of this and we're gonna bring in a four each loop for each loop. Right there. There it is. It took in that execution is well, so are for each. Look, What do we want to do for each array element for each texts? Well, for each elements in that array, we're going to set the fun. Let's make sure that the loop of body is plugged into this function as well. And then here, too, we're gonna drag backwards out of the infant info and type in make slate info and our font family here is going to be the Gothic letters, fonts, font material is going to be blank. The size here is going to be 35 as well and our outline settings weakened. Dragged backwards out of that and type in or it's right there. Actually make fun outline settings are outlined. Size will be too in. That should just about do it. So to recap here we created three functions working backwards. We've got this uninsulated all magic text effect. I'll select that entry tunnel note to see what we got for inputs here. This is all that we have in this particular function. That's unsolicited. All magic text effect. Here's our UN select magic text effect Singular version if you will pause the video if you need to hear, make sure you're not missing any of these connections in the last but not least we got this select magic text effect function that we created here, too. Note the input that we're going to be plugging into this eventually. Okay, so with that, we are will compile and save. There is definitely more work to be done so we can actually utilize these functions. But that will do it all for this video. See you in the next 114. Black Magic Menu - Script #3: Welcome back, everyone In this video, we're gonna be working on creating a macro to help us indicate which magic we are selecting now in the last video and in the next few videos. Again, we're working towards a system whereby we can show which one of these magic selection magic skills we've got highlighted so that we can then slotted into our hut in the upper right when we have selected it a few things to put in place to make this happen. In the last video, we created some functions, and this one, we're going to be creating a macro to help with this selection. Now, I am in the older version of this project that I created in preparation for this course, and I'm just going to show you what we're going to be building in this video. Now over in my graph tab, I have created a macro due to do to do right here macro a macro called select magic. And this is the monstrous script that were about to build. Now it looks rather intimidating, but honestly, it's not nearly as scary as it looks. There is a lot of copying and pacing and truth be told, we could simplify this quite substantially based on your own needs. If you are not using a controller, there's a lot of things you don't need to do here. So just letting you know I had a time. Because there is a lot of script to do here. We're probably gonna break this macro out into two separate videos just so we can fit it in in our time constraints. I gotta make these in less than 20 minutes. So here we go. I'm gonna exit out of this project that I'm gonna jump into my existing project the one that we're currently putting together just to make sure we're all on the same page. Make sure you're in your content. Metro in Vania Widgets folder and double click on W BPB Magic menu. And we're gonna be hopping on over to the graph tab if you are not already over there. Once in the graph tab over in the my blueprint panel. Find your way on where you've got this macros section that is below the function section in the my blueprint panel. We're gonna create a brand new macro, and this one is going to be called select magic. That's a fine name. And the reason we're gonna be creating a macro instead of a function even though inside of this mackerel we're going to be doing some evaluations much like a function can dio we want to have multiple execute out pins in this Know this macro know that we're about to create a function node cannot have multiple execution out nodes. So firstly, select our input note here with our selective magic macro created, we're gonna create one input. So click this plus parameter over in the details panel and we're simply going to call this Well, what should we call this? Let's just call it exactly in exact in like so Whoops. I really want to capitalize the in, and now you can see that added, there are outputs for this node. We're going to select that and create some output pins, and we're gonna create five of them. So let's click this one to three, four and five times, and it's scrolling a little bit off the bottom of the screen. I do want these all to be execution out pins and I will name them thusly. We have let me scroll over to my page of notes because obviously, I've got a lot of notes for this one. We have no a magic selected. We will have fireballs selected. We will have electro spark selected. We will have blood lust selected and we will have Arctic Arc Dick Blast selected. Always spell arctic wrong. Okay, so what are we gonna be put between these two notes? Well, between these two noses where we're going to put all of our evaluations to determine which one off scrolling in my timeline here, which one of these different magics we are intending on selecting and thus we should highlight. Okay, so let's jump on back to our graph tab. Make sure you've got a healthy amount of space between your input and your output note here because a lot of space is going to be needed off of our inputs Knowed let's add a branch right away. You can hold down the beaky left click and that will add a branch node. Nice little shortcut there and for our condition here. We're going to be evaluating ah, lot of stuff and not just one condition, but rather many things. So when I'm gonna do is I'm gonna right click, and I am going to type in and Boolean I want to check if a whole lot of things are true or false. Not just one thing. Many things and and bullion can do that. So I've got to input pins. Currently, I want to have 12 total. So click this ad pin button 10 more times so that we have 12 of them Total. That's 4567 eight, nine and 10. And then we're gonna take the output of this bullying. That's gonna be our condition. Now, what is going to be plugged into this and knowed right here? Firstly, let's right click. Let's type in, get player controller, Add one of these and then out of the player controller, I'm going to drag off the return value and type in is input key down. Once we grab our player control, we can find out if they are pressing down on a certain key. Now, that does not mean just a keyboard key. Could mean a button or direction on ah, controller as well. Specifically, I've got three in mind here to check if we're holding down trying to select our fireball skill. I'm going to set our key here to be keyboard de the D Key. Now, why the d key? Cause if you're using the w A s and D keys jumping back to my designer tab here and if I was to see all my skills here, the fireball is going to live in this spot right here. So I'm saying if the d key is down, they would be trying to select that in this case, over our graph tab, we're going to be asking not if that key is down. But if the return value is not down, So drag out of the return Valley and you want to type in, not you're looking for a not bullying and then plug that right in here. Okay, then what we're gonna do is I'm gonna take these two nodes left, click drag out of marquee selection, Hit control C. And let's control V once and twice. And this is where if you are using a controller, you're gonna want to follow with these steps. If you're not using a controller, you can ignore these steps. We're gonna make sure a player controller is plugged into all three of these. We're going to check to see for this middle one. If game pad, I'm gonna do a search for it's a little bit easier. The game pad deep had is pressed to the right. That's kind of the equivalent of pressing Deanna keyboard. We're essentially saying are you pressing over to the right? Likewise. Over here in this is input key Down over here, we're gonna change this key to be left some stick left thumb stick. Right? Are you pushing your left thumb? Stick over to the right. Not meaning you are not doing that. Make sure each of these is hooked into an appropriate input note on your giant and note here. Okay, so all of these three are gonna be checking if we're trying to push over to the right to select this right? Most slot right here, which is going to be occupied by our fireball skill. So I'm gonna left, click and drag back over here in our graph Select magic macro around all these three. Tap that Seiki. And I'm just gonna type in fireball right here, trying to indicate that there we are trying to see if we are not selecting the fireball. Okay, now with this whole section created weaken, do some more copying and pasting. So let's left, click and drag around all of this Hit control C Then kind of Come on down, We're gonna control the once Control the twice and control V 1/3 time so that you got kind of four of these sections. Now, this next section working down, we got fireball appear This next one I'm gonna rename to the Electro Spark. We're gonna check to see if we're selecting or rather not selecting, pushing in the direction of our electoral sparks skill. So what I need to do now is change out. What keys? I'm checking if we are not pushing down there. So for electro spark, that is going to be due to do need to move my animations lighter. Over here are electro sparks skills going to live over here on the left hand side. So I need to check. Is input key not D down, but keyboard A Because that's essentially pushing. Left using the w s and D keys for you. Controller People out there. I need game pad deep. Had game had d pad d pad left And for the thumb stick on a controller. I need left thumb stick, left film. Stick left. Now, it's really easy to make a mistake in here. So you might want to double check all these as we're going through it just to make sure they're all nice. Gonna make sure all these three are plugged into our and notice. Well, again, this first branch is doing an evaluation to see if all of these are not selected. I mean, all of them, everything we're plugging into this we're seeing are they all not selected? Okay, for this third group down here, this is going to be our bloodlust skill. And looking back over the designer tab, the bloodlust skill is going to occupy this top most slot. So what key are we going to check on a keyboard? Well, it's not gonna be the D key. It's going to be the w key for using the WS and D keys. We're gonna be also checking for you. Control. The guys deep had d pad up and for the left thumb stick, we're going to check if the left thumb stick is up. And then let's make sure that we plug all of these into our and node as well. And it looks like I need to add some more pins down here. Only added 10 pins. Ha! Foolish me. You'd add two more pins to accommodate our last one here. So that's bloodlust. Moving down line here. This next group I've got Arctic Arctic blast. I could never spell that. Right, Um, is input key down? So looking back at our designer to have Arctic blast here is going to occupy this bottom slot right here. So for the W A s and D keys, we're gonna be checking for keyboard. That would be the s key s for the game had deep add that would be D pad down. And for the left thumb stick, that would be left thumb. Stick down. And let's make sure all of these are plugged into our giant and node, okay? And then zooming back a little bit. This is what we've got put together so far. So, again, this first evaluation is we're finding out. Is it true that all of these keys are not being pressed down or is that false or any of them being pressed down? Okay, so with that. Let's compile and save from here and call this video. Good. Obviously more work to be done in this macro, But we'll take care of that in the next video. We'll see you there. 115. Black Magic Menu - Script #4: welcome back after one in this video, we're going to pick right where we left off in the last video. That was we were creating a select magic macro inside of R W B P B Magic menu. Just to make sure were all on the same page if you took a break between videos. We are here content. Metroid Vania Widgets in our content browser in r W bpb Magic menu over in our graph tab And we were doing work inside of our select magic macro. That is how you can find your way on back here. Now, we've gotten to a point where we are ready to branch off of our branch note here, true or false. But before we do that, we need to create one variable that we're going to utilize within this macro. So over here in the my blueprints panel under the variable section, right under the macro section, let's click the plus variable to add one new variable. This is gonna be called be selection made question Mark and I will put in a tool tip for this just in case you're wondering what this is going to do needed to ensure player doesn't simultaneously select two options at once by holding down D and a keys, for example. Maybe that will help you in the future. So, um, we're gonna compile. Well, it is ready compiled. We want our default value here to be false, so ensure that you have that. Now, with this variable made, we can start to build off of our branch here. The first thing we want to do is build off of the true branch, and we're gonna be bringing in this variable right away by dragging into our graph. Do we want to get it, or do we want to set it? We're going to set this two falls saying, Hey, if all of these things are true that none of these keys are pressed down, not a single one, then bringing our output note on closer so I can frames on the view. Then we're going to say the user is not selecting any magic Now, Eventually. Now, eventually, we're going to utilize this macro in our event Graft tab. Right. We're gonna drag and drop this select magic into an event graph and out of here this is what our macro is going to look like, ultimately out of here, we're gonna be able to do some things, right. So we're not at that stage yet. That is to come, but just letting you know where we are going with this. So let me delete this for now. Jump back to my select magic menu. Select Magic Tab. Macro Tab. And so that's what we have so far. That seems simple enough now, off the false branches going to start getting mawr complicated. So what we need to do is, firstly, bring in a sequence node. And I wanna have four possible outputs here. So add two more pins one in two and we're going to bring in another branch node. So hit the Beaky left click and out of the then zero of the sequence, let's plug this into the branch. We want to evaluate if there is some condition here. What condition are we going to use? Well, how about we check our be selection made Boolean? Let's drag and drop that right on top of there. We want to find out, has a selection Ben made. If that is false that a selection has not been made. Then we're going to plug this into another branch and this branch, We're going to check some more stuff. What are we gonna check? Well, the first thing I want to check is if our player we should have a player variable over in your my blueprints panel drag and drop that into our graph. Get the player we want to find out if he has be magic. Fireball get has be magic Fireball. Has he learned this? Or I should say she in this case, has she picked up that ability. I want to check that, and I want to check something else. We're gonna be checking to see if two things are true. Does our player have the black Magic or the black Magic fireball? And and I'm gonna steal some nodes over here. I'm gonna come over to my fireball Selection of nodes due to do fireball. Yeah, let's g o over here. I'm gonna left click and drag around all the I don't actually need the not notes, so I'm just gonna left click and drag to see if we've got those right there. Control. See and control the to paste them right about here. And then out of any of these return values doesn't matter which one of these you can just simply drag out and type in or were looking for an or bullion. And we want to add three pins here. So 123 make sure all these air hooked up like so. And then the output of this is going to be plugged into our and so let's just try to understand what we're saying here. We're trying to say back in this way up, our first thing is we're going to check this branch. Are we not pressing down any of these keys? If that is false, that we're not pressing them down. Meaning we are pressing something down. We're then going to check, Okay? Has a selection been made, and by default, a selection has not been made. So then we're gonna come to this branch and say, OK, does their player have the black magic fireball skill? And are they pressing down one of these particular keys or in this case, D pad or left thumb stick? Right. If that is true, then we're going to say, bringing in a selection made center. If that is true, that we're going to say yes, a selection has been made, and then we're going to take the output of that in plugged that into you do, do, do, do, do, do, do do plug that into where is there it is my outputs node. We're going to plug it into the fireball selected. So let me try to frame this all up on screen so you can see what we've got going on here. Okay, So I know this is looking rather complicated, but it's really not that bad. And we got a lot of copy and paste work ahead of us here. So before I do anything, I want to drag out a marquee selection and kind of highlight that this is our fireball selected group of knows, gonna left click and drag right around here. Tap the Seiki and say, a fireball selected. Okay, Now I'm gonna move my sequence. No down as well as this output. No, down is. We're kind of continuing to work here just so I can keep this all in view. And now all I really need to do is left, click and drag around my fireball selected group of notes. I'm gonna hit control C Then I'm going to control the once and twice and three times. And then I'm gonna rename these appropriately as they start working down. So my next one down that I'm gonna be checking here is Well, let's see, we got electro spark next on our que So it's not a fireball selected. I'm gonna double click here, call this electro spark, and then I'm gonna make sure I plug this then one out of the sequence note into here and then swap out the appropriate variable. So here, if this is my electro spark selected, I want to find out Has electoral spark. Doesn't player have the electoral sparks skill? So swap that out for the fireball. And of course, I don't want to be checking if these are the keys pressed down not for the electoral sparks . Aiken, delete those three out and then over on the left hand side, where I've got my electro spark input keys and I'm checking to see if those air down I'm gonna left click drag out a marquee selection than right click and copies. I will, Right. Click and sorry. Just hit control V to pay season over here a little bit easier to dio and make sure you plug all these into your or note as well then. Last but not least, you want to make sure that after we've said yes, a selection has been made, we're gonna plug this into our electro spark selected So again, evaluating here just to reiterate, we're going to see Hey, are all of these buttons not selected? Is that true? Or is that false? If that proves to be false, that something is being pressed down One of these keys we're going to then see which one has been pressed through this sequence owed. First, we're going to come through and find out, has a selection been made and no, by default, the selection has not been made. And then we're gonna come to this branch and find out, Okay, doesn't player have the fireball? And is it one of these keys pressed down? Now, if that is not true, nothing's gonna happen. And then we'll check in our next sequence here. If it is any of these keys being pressed down our electro Sparky's and you'll get to see this flow of execution when we actually try to make this work and I hope to show you that once we're finished here. But let's finish this off because I want to get this done within the time constraints. So moving along, let's come on down to the next section of nose here, bringing my sequence and my output node with I'm gonna rename this to be blood less selected blood lust selected. Hooking my sequence note into that branch checking here to see blood lust get B has be magic, blood less. We're going to see if our player has acquired that skill that dummy skilled because we're not actually going to hook up that ability. And then I'm gonna swap out these keys right here. Left, click and drag with our blood lust selected. Possible key selections Control. See there, Control V here. Lastly, let's hook up this to our bloodlust selected output note. Pause the video here if you need to. To make sure all this looks good and then last but not least, let's drag this on down to our last group of notes here, which is going to be our Arctic blast selection. Make sure that sequence note is plugged into that very first branch. We're going to check If our player has Arctic blast, we're gonna get that plug that in there, and we're going to swap out these guys right there with our possible Arctic blast selection keys. Let's copy that control. See if you need Teoh control V to paste those guys down and then whoops. Let's make sure that this is plugged into our Arctic blast. Selected as well Pause a video if you need here just to make sure all that is looking good . All right, now that should do it. That wasn't so bad. Wasn't just backing up here. I'm gonna move our sequence node Kind of back into in or of a more normalized position, if you will. As well is our I'll put node way over here. Yeah, that's a beast right there. But it's gonna get the job done for us. We're going to start making use of this in the next video. But before we wrap this up, let's do one mawr compile and save job. Well done, guys. That will do it all for this video. See you in the next one 116. Black Magic Menu - Script #5: Welcome back. Once again, everyone, we are continuing to make some progress with our Black Magic menu selections. Let's hop right to it. We are in our content Metro in Vania Widgets folder Open up W B P B Magic menu because that's where we're going to be doing our work again. The goal for all of this is to provide feedback to the user that a given magic is being a selected. So we're gonna hop on over to our graph tab. We left off working in our select magic macro for this one. We're gonna be working in art event graph. So if you don't have an event graph tab right here in the my blueprints panel, you should find a graph for event tab. You could double click on that. To open that up is well, currently, this is the only bit of script that we have in here, a reference to the player I am going to right click within this graph and we're gonna add an event tick now. Usually it's not a really good idea to place a lot of script after event tick because it can be ah, damage. You know, your performance but this is going to be pretty light, so I'm not really scared to use it here. Event IQ is going to be firing off every frame and after event IQ, I want to bring in my select magic macro from the mind my blueprints panel drag and drop that in your graph. And there we go every frame that this black magic menu is open. We're going to determine which magic we want to have selected. So next, Lee, over in your mind blueprint panel, you're gonna want to find where you've got all of these different variables we've got, like Arctic Blast Image. Mana cost name etcetera because we're gonna be dragging and dropping a lot of these in the graph specifically for right now, we're gonna be bringing in our fireball selected image. Bring that guy in. We're gonna get that and I'm gonna use them shortcuts here by holding down control. I've got fireball selected. I want electoral spark selected holding down control left clicking to get it together. Then I want blood lust selected holding down control, bringing that in. And then Arctic blast selected that guy right there holding down control left clicking to bring in a getter. What I want to do for all of these if no magic is selected Well, what I want to do is drag off of any one of these four and say we want to set the visibility of that particular piece of art. So if no magic is selected, we want to set the visibility of fireball, electoral spark, bloodlust and Arctic blast. Do we want them to be visible? Know if no magic is selected, we want them to be hidden. So by our fireball selected image, What I'm specifically referring to jumping back to our designer tab is due to do Fireball selected were talking about that yellow ring that right there. So we want to make sure that is hidden if no magic is being selected. Okay, I also want to bring in my new magic selected there it is my no magic selected image left, click and drag that in. We get that, I'm gonna drag off of this, bringing the net another set visibility node, and I want to make sure that this one is visible by that I am referring to new magic selected due to do that middle one right there. So for not pushing to the left or right or up or down, we're gonna have that middle portion selected. That yellow icon right there. Okay, that's all looking it well and good. Something else we want to make sure that we do is we want to make sure that we announce, elect un select all magic text effects. This is a function that we created earlier. And let me just double click on it to open it up. It's going to take in an array, and we're essentially going to make sure that our font is stylized in such a way that it does not look highlighted. OK, so jumping back to our graph tab here. The event graph. I am going to bring in our uninsulated all magic text effect over here. Make sure execution where is plugged into this. And now I need to say which text do we want to unhygienic? Well, if I drag backwards off of this, I can type in, make array that in a raise, like a list of things, and I'm gonna add a couple more pins. Year 123 and four. And the things that I want to unhygienic will include Designer Tab. You see all these textron? I have a hard time selecting these as well. Well, I might have an easier time over here. Let's see the do do name Fireball name. So it says, like fireball name electro sparked name etcetera. Now, for any of these, if you see me pulling in reference to them over in the graph tab and you don't see them over in the my blueprints panel like you're not seeing him over here, make sure that over in the designer tab, if you don't sanity those that for whatever widget you should be able to bring in as a variable that you've got this ease variable check box checked up here. For many of them, it is by default. So let me jump back to my graph tab. I want to say fireball name. I want to make sure that you are on highlighted electro spark name. You are on highlighted. This is just kind of heavy handed way of saying nothing is highlighted. Blood, less name and Arctic blast name. So that's how I want to present this black magic menu. If we have no magic selected also what I want to dio continuing our chain of execution here . I'm gonna bring in reference to our player drag and drop him in the graph, and then we gonna drag out of him and say, Be magic, Slotted, We're gonna set our be magic slotted to none. So this is basically telling our player Hey, you have no black magic Slotted, no fireball, no electro spark. Nothing is cued up for you to use. You can't use anything right now because you didn't choose anything. Ha ha! All rights. And next we're going, Teoh, bring in a do once. No, there is a short cut for that. Hold down the hokey and left click. There is a do once node, and I am going to plug this into the reset of a do one. Snowed, You're like, Well, wait a minute. What's gonna plug into here? Well, that is going to come up in a little bit. We're gonna be plugging some stuff into here, but just to keep following along with my notes here, upon completion of all of this, I am also going to play a sound two d and the sound that I am going to play is going to be VR underscored. Grab que again. This is an engine content sound so you can come under view. Options show engine content if you don't have access to that for the time being. All right, So now the question becomes, What do we want to do if some of these other things are selected, such as our fireball? I'm glad that you asked to help take a little bit of a shortcut here. I'm going. Teoh left, click and drag around. Our said visibility are to set visibility notes up here, control. See? And I'm gonna control V them down here. And actually, before I do any of this, I'm just gonna left click around all these nodes up here from our initial set. Visibility all the way to, like our do. Once known right up here going to tap the Seiki right around that and say that this is our no magic selected just to kind of make this easier to read. These two guys were gonna be making some more use of them in just a little bit. Okay? So if we are selecting our fireball, we're gonna plug into this initial set visibility node. And the first thing we want to do is check our fireball selected image. Bring that in. We're gonna get that. Make that our target on Lee. We don't want this one to be hidden. We want this one to be visible now. So by that were saying that we want over in our designer Tabua. If fireball is slotted right here, we do want that yellow highlight to exist right around the icon itself. OK, but then we also want to set something else to be invisible. Set this next set visibility, visibility to be hidden. And what do we want to be hidden here? Well, we want our no magic selected highlighter to be hidden. And by that I'm referring to jumping back to our designer tab, this middle circle. There's going to be no yellow circle here to show that nothing is highlighted. Okay, After this, I am going to bring in one of the functions that we made earlier a select magic text effect drag and drop that in Hook that up via the execution wires. And we want to set our text to highlight here to be the fireball name Fireball name. Where are you left. Click Drag that right on top of the text. A highlight. So that will make our fireball name over here in the designer tab. This text that currently says some magic, it's gonna make it. So it's got that cool sort of effect that we created earlier. Remember that material? And do you remember that function? If I double click on this function, which I just did, you can see that it's going to make it. So are outlined. Sizes seven. We're enlarging the font, and we're also going to be applying that outline material. So a lot of things gonna be happening when that function gets called. Okay, what else do we want to do here? Well, we want Teoh bring in a reference to our player. Once again, we're gonna get our player and offer this. I'm gonna type in be magic, slotted, get, be magic. Slotted would not get it. I want to set it Be magic, slotted. We're gonna set that. And now we're going to set this variable on our player to be what you might expect the fireball thus making it so our player can shoot out fireballs if they have enough manna. That's pretty cool. And then the output of this we're going to plug into the do once note here, we're going to play this sound one time saying, It's kind of just ah confirmed sound if you will, just letting you know that you have slotted in some magic. Okay, so with that, I'm gonna left, click and drag around This group of notes hit that Seiki and type in Fireball selected. Now the rest of this becomes a lot easier because these four nodes right here I can left click drag on a marquee selection hit Control C to copy Control V to pace once, twice and third time. And now all we need to do is swap out the appropriate variables and what not to make them work appropriately. So let's start with where we left off here, and I'll kind of bring these node down with me as I'm working just so you can get the hang of what we're building here. So when we are selecting our electro spark, let's plug this into here and change this to B electro spark selected instead of fireball selected, I don't want Fireball to be selected at least that to be shown. I want electro spark selected. That piece of art. I want that to show up that yellow ring This can stay. The no magic highlighted is going to be hidden. And our select magic text effect is not going to be the fireball name. It's going to be the electro spark name. And here we're going to set our be magic Slotted. We're gonna tell her player that now they have slotted in electric sparks that they can use that ability and make sure you plug this into the execution of the do once. No, not the reset. The reset on Lee comes when no magic is selected. Okay, let's keep on working on down. This is getting exciting. We're getting there, guys. Bloodlust selected when this is selected, will plug into here. Let's change the title of this to be blood lust selected Instead of our fireball selected that yellow ring for the fireball, it'll be our bloodless, selected piece of art. This can say the same instead of a fireball name. It's going to be our bloodlust name. And here we're going to say we don't have fire ball slotted. We've got blood lust slotted, and this will plug into the do once known as well to play that sound excellent. The last one dragged these down when Arctic Blast is the one our player is trying to select . Let's plug that into here. We will call this arc Dick Blast selected, not the fireball selected piece of art, but the Arctic Blast selected that yellow ring surrounding that piece of art honor. Black Magic menu. Not to the fireball name. That's not what we won't apply our text effect, too, but the Arctic blast name and we need to change our magic. Slotted. We need to tell her player that. Nope. Now they've got Arctic Blast Slotted Last won. At least plug this into the do once note execution. Where as well, let's just kind of tidy this up a little bit. Make this look a little bit in these Niedere like so, and I'll try to frame this all up in view so you can have a good gander at what we have built. Not too shabby. Let's go ahead and quickly compile and save and let's cross our fingers and give this a play. Now, before I bring on the black magic menu. I'm going to acquire some of our skills. Here are fireball and man, I really need to make that button show up on our notification there. The B button is missing from our learned black magic overlay. There. We will fix that up soon. So now we've got learned. Fireball, you can already see. Now that I've got the fireball learned, it shows up on the black Magic menu. Let me just acquire the electro spark ability as well. Okay, Now let's check out the magic bringing on my black magic menu. There we go. And I'm going to use the W A S and D keys to select my different magics. Pretty sweet. Now note that I did as I do, our text is enlarging and that material is playing, albeit a little fast. I could certainly use some adjusting. It doesn't look great, but it's an effect. And you can see that as I am selecting different things up in my quote unquote HUD area in the upper right, it is showing which magic I am currently trying to slot into that slot. So right now I've got nothing selected, right? And now notice that if I am selecting the fireball with my black magic menu on here. I'm leaving this menu with my d key held down. Look, Black Magic is now slotted in Shootout a fireball. Hold down the zero key. Let's changes to be electro spark. I'm holding down the a key as I release my zero key to exit out of the Black Magic menu. And President one use that ability Pretty sweet If I do say so myself. Guys, Really nice job on this one That will do it all for this video. We will see you in the next one. 117. Black Magic Menu - HUD Anim: Welcome back, everyone. In this video. Our goal is to create a starburst animation inside of R W B P hud to indicate to the user that a black magic selection has occurred. So we've got the functionality hooked up to select and slot in a black magic onto her hood . Now I just want to add a little bit of visual flair to make that more clear to the user. Let's come under our content. Metroid Vania Widgets folder. Find your W B P Hud and let's double click on that to open it up. And what I'm talking about here is way up in the upper right here, hiding behind some of our other widgets. We have this be magic starburst piece of art that looks something like this. And what we're gonna do is once the user has slotted in a black magic skill of their choosing, we're gonna play an animation here so that this kind of flares out from behind this piece of art to help indicate to the user that they have made a change. So let's come under our animations and let's create a brand new animation. Let's call this animation be magic slotted like so And then let's select this animation. So we have a brand new fresh timeline down here. Let's take our time line slider here and move it all the way back to the zero second mark. And the thing that I obviously want to animate here is going to be our be magic. Starburst will make sure you've got that selected. And then what we're gonna do is over in the details panel. We're gonna scroll down until we find our trans formed section are Rendered transformed section and we're gonna change over time. Here is, well, both the rotation and the scale a little bit. So let's deal with rotation first and then we'll deal with scale next. So let's take Are not the not the scale the translation of this rather sorry, Not the translation. The angle of this. What am I thinking? The angle of this? We're gonna add a key frame for this. You know, we can see it down on our timeline here. Let's let's expand our rotation. And our scale is well, so something to note here. Rotation angle, that's this angle right here. So at a time of zero, the value is going to be zero. Then we're gonna set in another timeline at the one second mark right about there, and I'm gonna click to add another key frame for this. And at the one second mark, I'm going to change the value. Our angle here to be 3 60 So we're essentially going to make this Starburst here this piece of our right here rotate in a circle. Ah, one time, 360 degrees. Okay, Next, let's move our timeline slider back to the zero second mark. You can actually see that rotating like that is a Scrub it back and forth, Move or timeline Slaughter back to the one second mark. Let's add some scale keys. So coming under my details panel, let's come under scale. I'm going to click the little plus button here to add some keys right down here at the zero second mark. And at the zero second mark, I want the X and y both to be one like they are now. I'm going to move our timelines letter now to the half a second mark here. I'm gonna set the X and Y to be four and four, respectively. So much larger. And then I am going to set another key for this at the one second mark. Let's create some more keys for this 21 and one. Now we currently can't see anything just yet. In fact, if I play this now, there's nothing calling for this animation to happen. But that's all they wanted to accomplish in this one was simply to make an animation for this. So without further ado, let's compile and save That'll do it all for this video. Guys, see you in the next one where we get this functional. 118. Black Magic Menu - HUD Anim Script: Welcome back, everyone. Well, in the last video, we went about creating a be magic slotted animation inside of R W B P. Hud. That's simply going to play this. Ah, Starburst spinning sort of animation right there. You can't really see it just yet, but don't worry about that. Will make sure that it shows up. The next part of this is making this actually play playing that animation. Where are we going to do this? That well, this is gonna be done coming back to our main level editor here. It's going to be done in our Metroid Vania Blueprints Framework folder where we got our PC Metroid Vania. Player controller. So in here, we have some script for the showing and hiding of our black magic menu. In all, this is done through an input action event that we created called Black Magic Menu. Now off of this released string right here, this whole section of Ware's Follow this along until we come to the very end of this. The last note in this change should be set input mode. Game on, Lee. We're gonna add some stuff to the right of it from here. What? We're gonna do is drag off, are set input mode, game on Lee and bring in a branch nude. And we need to give this a condition. The condition that we're going to be checking here is our W B P B magic menu. Let's drag and drop that in and get it and then we're going to drag out of here. And remember, we created a variable inside of our widget blueprint for a black magic menu called Selection Made. We're gonna get this and find out if a selection was made. If you recall and let me actually just open that up really quickly, you don't have to fall along with this step. I will just bring it up so you can see. So here's our be magic menu. Over in the graph tab. We created a variable called Selection Made, and we were utilizing this inside of our select magic macro to determine if a selection was made or not in this. There's a few spots in here where we're actually setting this to be on, like over here, true or off false to instruct our game if we have made a selection. So jumping back to RPC Metro Vania, That's gonna be our first evaluation year. We're gonna find out Hey, Black Magic menu was a selection made and if it was made, we're going to play sound to D And the sound that I want to play here is going to be ah, VR underscore Close underscore Q. And if I hover over this, it tells us that the path for this is found in our engine content. And again, if you don't see this, you can show your engine content by coming right 100 under here in view options showing the engine content. That's just going to be a little sound effect. It kind of helps sell the effect that, yes, you have made a selection. It's gonna kind of a company, that visual cue of the starburst, that we're going to see that animation playing. So after we have done this, we are going Teoh, right click. We're gonna get the hood. Let's get her, Hud, Let's drag off this in Cast to our Metroid Vania Hud. And then out of this, we can drag out of our as M V Hood and search for W B P hud and out of our W B P Hut. I want to drag off and find our be magic slotted animation. That's the one that we just created over in our WPP, HUD and also out of our W B P hut. I'm gonna drag off and say, Play animation, make sure you hook in your execution wires like So now this is the animation. We want a place. You gotta feed this into that function node, and that's looking pretty good. We only want to play this one time and this is looking pretty good. Let's actually add a little comment box around all this just to spruce this up. Left click Drag Tap that Seiki. And we will call this a show Starburst upon selection. Let me do something else here. I promoted all of our other sounds here in this graph to variable, just in case I want to fiddle with them all later on, it'll make it easier to access. I'm just going to right click on the sound right here. Let's promote that guy due to a variable, and I will call this SFX underscore. Oh, how about magic? Slotted? That seems like a decent name. Okay, now it's compile and save and let's try jumping into the game and seeing how this works. So I'm going to jump into play and I will bring on my black magic menu. Okay? And now I'm going to select either bloodlust or Arctic Blast, cause I've not actually ah, sought out collecting the fireball or Arctic blast or the fireball or electric shock electroshock skill. And as I select one of these and then release, you can see that little starburst effect in the upper right play. Let me do that one more time in case you missed it. Bringing on my black magic menu, holding down the alarm, holding down the S key to select Arctic Blast. And then I'm going to release the zero key to take off my menu. Now look in the upper right of my HUD. In that time, it did not play there. It played. This time it did not play. So there is a problem here. It's on Lee playing currently when I'm selecting my bloodlust. So let's evaluate that. So let's jump on over to our w B p A B magic menu. And if I go into my select magic macro, I can see that if I select a fireball, I'm changing the selection made to be true Electoral spark setting the selection made to be true blood lus setting the selection made to be true and ah ha Arctic blast The selection made is not being set to be true. So very important that you don't make any stupid mistakes like that. Let me go ahead and compile and save. Let's play one more time and let me actually go through the process of collecting my other skills. Here course that B button right there is still not showing up. Still got to fix that. Collecting the fireball? Yes. Collecting electro spark Yes. Now holding down the zero key Let's select Arctic Blast is I release the zero key Let's look in the upper right to see if that's Arbor shows It does looks. Try the elders right away It does and fireball it does sweet. So we've got a nice little hut animation playing when we select a certain black magic skill guys, that will do it all for this one. We will see you in the next one 119. Bug Fixes: Welcome back, everyone. Well, we have our black magic menu completed. I just wanted to take some time out now to fix up a few small bugs that have been irritating me for far too long. We're going to fix him up in this video. Let me just jump in and play and and show you a couple of the issues that I am noting issue number one, which I have been mentioning, is when we're overlapping this trigger volume. When we get to one of our skill diocese, we see that message. But we don't see the button that the B button that says be to interact. That has been irritating me. Also, I've noticed that our arrow keys are currently being bound like our A and D Keys are to move our character left and right. So if I am to move my right arrow key, I both interacted with it and interacted with that diets, which I don't want to do, and you'll notice it again here if I am facing left and I pushed the right arrow key. Watch what happens. My character faces to the right, and of course, they're interacting with that diets at the same time. So I want to fix up those two issues. Let's start off by coming into your content. Metro Vania Widgets folder. Open up your W A bp notify here. This is one that we worked on a long time ago and we've got our button interact this b button here and in our timeline that we created for this are intro animation were even saying that we want this to fade in overtime, which here in this viewer, we're seeing that happen. So what is the issue? Well, the issue is with this button interact selected. If we come over in our details panel and we find our section called Behavior, I currently have the visibility set to hidden. I want to change this to be visible because we're saying here at the zero second mark, it's already going to be invisible because we're setting our color and opacity. Are Alfa value here to be zero at the beginning, and over time we're going to be bringing our Alfa value to one, which makes it fully visible, so that should fix that problem. We should say that Jump in and play. And let's see if that now fixes that issue. There's RB button. Okay, that's good. Next issue a wanna fix up has to do with that directional issue that I was pointing out that are arrow keys on a keyboard are also moving our character to the left and right and fixes up. We can come under our settings project settings and over in the left hand side we've got our inputs And currently, if we come under our axis, mapping is not the action map ings with the axis map ing's our move, right? Access method mapping is also being bound to the left and right arrow keys and you can see that in the action map ings are interact. Action mapping is also being bound to the right arrow key. So we kind of have ah dual usage going on here. So the way we can fix this up is under the access mapping move, right? I'm just going to get rid of that and get rid of that. Let's do a quick sanity test by jumping in and playing. I'm using my right and left arrow keys. Nothing is happening. Let me interact with his diocese here by using my right arrow key which is the equivalent of the B button on my controller. And now that issue is fixed up. Aziz. Well, alright, guys, that'll do it all for this video. See? Win the next one. 120. White Magic Menu - Creation: welcome back. Once again, everyone. Well, in this series of videos, we're going to take advantage of the fact that we have a black magic menu built out. And what we're gonna do is we're gonna build out our white magic selection menu. Now, you may be saying, Why are we doing that yet? We still haven't hooked up functional white magic skills. Such is transforming into mist and using our lens of truth. But with our Black magic menu already created, I thought it would be easier to create this. First. Let me just show you what this is all going to look like when it is finished. So I'm currently in an older version of this project that I made in preparation for this course. Let me just jump in and play here. I'm going to gather up a few of my white magic skills here, the mist and the lens of truth. And eventually we're going to bind this to a given key. Uh, the left bumper as well is one of the control keys on the keyboard, and our white magic menu is going to look and function very much the same. Now the good news here is that we are going to be able to cheat by doing a lot of copying and pasting and swapping out some variables, that kind of thing. Just note the position of these various skills on this screen because we're going to know to that as we go forward in terms of lens of Truth is going to go where Fireball was on the Black Magic menu and Miss is going to live where Electro Spark was on the Black Magic menu , etcetera. Because we're gonna be doing a whole lot of switcheroo, is here. Let me jump out of here, exit out of this project and go into our curtain version of the project, and the first thing we're going to do is come under content. Metroid Vania and I just closed on my folders Awesome Metro Vania Widgets and where we've got our W BPB Magic menu. Let's go ahead and right click on this, and we are going to duplicate this. Let's call it W B P W magic for White Magic menu. That is simple enough. And with that, let's go ahead and double click on that to open it up. Gonna docket across the top here, Let me exit out of some tabs. And now all I want to do in this one is simply rename a whole bunch of which it's over in our hierarchy. Just to make things more clear, I'm just gonna zoom to fit to get this screen a little bit bigger, etcetera. Our menu name. Select that right there. And I am going to rename this to White Magic. Right now it's menu name Black Magic. So with that selected over in the details panel changes to be white magic so that eventually that is going to be titled White Magic. Then let's come under where we've got the be magic grid panel and we're going to rename this to hitting F two on it. W magic Grid panel again. This is all gonna be for clarity's sake. And then down below, we've got our electro spark overlay with a lot of electro sparked name things and then fireball overlay, bloodlust overlay and arctic blast overlay. We're gonna name these thusly all of our electro spark ones. I'm gonna hit F two on each of these is gonna be transformed to missed so hitting F two overall, these essentially replace the word electoral spark with Miss. And I think you get the point here. I'm just going to do this for one group, and then I will pause the video, show you what I have so that you can make sure that you have the same. Okay, so for this first group here, I renamed everything here from electoral sparked. Two missed again. That's gonna be for clarity's sake, moving forward with our whole fireball section. Let me just do the 1st 1 for each of these. And then a pause, the video, anything that's fireball is going to be called lens. Uh, well, actually, let's just call it lends. Instead of lens of truth, that'll be shorter. Right? So it changed the word fireball here with the word lens for bloodlust. We're going to hit F two on that. We're going to change the name of this to be shield so down below changed the name of bloodlust to shield for all of these. And then for Arctic blast. I'm gonna hit F two on this. All the Arctic blasts are going to be renamed time slow. Okay, so I'm gonna pause the video here renamed these thusly and then we'll be back in just a moment, okay? And we are back. Now, if you look over in our hierarchy, just make sure that you've got this first grouping all with the word mist in front. Second grouping with lens third grouping third overlay with shield and the fourth grouping here, all with time slow. And if you'll note over in the graph tab, if I come under the my blueprint panel and come under variables, uh, everything over here that was once fireball image Fireball mana cost fireball Name is now lens and you can see the other variable names have been renamed as well over here, so that's good to know something else is going to save us some time for the next video is you'll notice all of our function names here to still have all of the black magic names on them. So let's go ahead and swap those out as well. Again, the process is going to be anything with electoral spark hitting F two on that, we're going to swap out with mist, and I think we should be able to do this on camera. So electro spark, Miss Electoral Spark missed bloodlust was swapped out with shield. So set bloodlust image that's gonna be shield. And, you know, if I just copy the words shield right here by highlighting it control, See, it'll make this a little bit faster if two on this, let's highlight blood less control. The to get shielding their have to where it says blood less control V and where it says, Fireball, we're going to rename that to be lens so f to replace the word fireball, those two l's with the capital. I make it kind of hard to make sure you get that accurate. So again, we're just renaming some functions here just to make it more clear going forward. And then where it says Arctic Blast, We're gonna rename those to be time slow Arctic Blast time slow and I'll do the copy paste Here is Well, let's highlight that control. See, to copy kidding f two on that to rename it. So even though this is a little time consuming, it's going to save us time by doing so much switcheroo work instead of recreating all this from scratch and you could see over in my event graph right now, I've got things labelled is like Fireball. Selected Electoral Sparks Elected Again It's all black magic named Let's Just Rename These comment boxes you can see my fireball selected now has lens selected as variable names. So let's just rename our combat comment boxes here to lends selected lens of truth. Electric Spark was all renamed to missed, so let's rename That Missed Bloodlust was all renamed to shield. An Arctic blast was all renamed two time slow. Okay, one more thing to rename, and hopefully we didn't miss anything here. Back in our designer tab, we've got this animation called Be Magic Menu Intro. Let's just simply highlight this hit up to on that and call it W Magic menu intro. All right, I think I think fingers crossed, we got everything. Let's go ahead and save here, guys, that is going to do it all for this one. We'll see you in the next one 121. White Magic Menu - Bindings: Welcome back. Once again, everyone in this video, our goal is to modify the bindings for our specific magic selections. Here inside of W B p W magic menu. If you remember correctly, we made a duplicate in the last video of R W B P. Black Magic menu for our White Magic menu is gonna save us some time. But we do need to make some more modifications inside of here. So go ahead and double click on it to open it up. We're gonna be working on over in the graph tab, and we renamed all of these functions in the last video. Now what we need to do is we need to dig into each of them in order to talk to the specific variables. Let's start off with our missed image over here in the my blueprint panel. Double click on that and you'll bring in your set missed image function tab and you can see that this is currently all bound to the electoral spark attributes and the electro spark Boolean right here. We obviously want to swap this out with Miss. So let's dry out our player and type in mist attributes. We're gonna get that Swap this out and then here, we're going to be asking, Has missed, even get, has missed. And that is going to plug into our select note. So you're ready Getting a sense of what we're all going to be doing in this video? Um, if you think you got the rest of this on your own, you can pretty much take it from here. But I'm still gonna walk you through it in case you're not feeling comfortable. So that was the mist image. I'm gonna go to missed name next by double clicking on this here, too. We just got to swap out the appropriate variables has missed. This one is going to be the mist attributes, and I'll try to get through this as fast as I can. But there's no getting around that some of the stuff is just a little tedious. And remember, we're already renamed this one. So by default now, this is correct, Miss name. Okay, let's go to our next one down set. Miss Mana has missed missed attributes like so And here too, Miss Mana Cost is already slotted in here. So this one is good to go as Well, let me just double check my notes here just to make sure we have not missed anything. Let me go back to the Miss name here. Yeah, that did look right. Okay, let's go on to the next grouping, which was going to be the little actually, since the next one down we got is shield. My nose has it in a slightly different order, but I can play along. Let me just get to the proper spots in my notes shield was the equivalent to blood lust. So with my shield image here and actually didn't have to look that up my notes, I can see what to do here. Let's drag out of here And typing has shield. It's has W Magic shield. Did we really name it? W Magic Shield? Yes, we did. And she'll hear shield attributes. Next one down is a shield name. Double click on that has shield shield attributes. We are storing quite a lot of variables inside of our BP player, are we not? And she'll name is already there. That's good. So let's go on to shield Mana shield attributes here is well, and sometimes it's good to have some brainless activity like this just to kind of break things up. This could be rather mentally taxing when you're working on this enough. Okay, Shield. Mana looks good to go. Let's go down to our lens image. Currently, it has some fireball variable slotted in here. Let's change this out for Has lens really easy to make careless mistakes? When you are trying to whip through this stuff as fast as possible, you could have a missing wire. Maybe you accidentally search for the wrong thing you type in the wrong. The wrong thing that could happen is well, set lens image. Let's go down to lens name. Ah has lens lends attributes, and sometimes you'll excellent dentally bring in a center instead of a getter just because your brain farting All right, that's lens name. Let's go to Lens manner has lens, has lens and feel free to bail on this video. What's lens attributes to the recovery? Losing concentration? Get lens attributes. Feel free to Bill on this video. If you think you got the rest of these in total, we're just changing the variables for 12 of these functions. Over here lends mana cost. That's good to g o. Okay. Time slow image. That's the last grouping we got to do here. So has time slow? Let me copy. That is well, right there. Maybe I can pace that. And the others to cut down some time. Time slow attributes. Okay, that's our time. Slow. Let's go to next one. Downtime. Slow image time. So name. I'm pacing this from before time Slow, good old copy and paste How you save us so much time, time slow attributes And last but not least, we got set time slow, man, I'm gonna double click on that function. Let's swap these out to talk to the appropriate variables. Referenced the appropriate variable. That should say time. Slow attributes extract information from the appropriate variables. And that should just about do it. I believe we've got all 12 swapped out here. Let me just check my notes to make sure that I'm not missing anything here. Let's quickly compile and save. And if I jump back over to my designer tab and let's see, just gonna move my animation timeline slider over to the right so that we can see what this menu is gonna look like. So not now. if I was selected to select something like this 99 down here, which is gonna be our lens mana cost. We can see that this is now bound to a function called set lens mana. If I go to that function by clicking their it should show the appropriate variables that we just swapped out. All right? Hopefully we did not miss anything. There may be worth your time to go back in double Check that you didn't make any screw ups , but that will do it all for this video. Guys. See you in the next one. 122. White Magic Menu - Script #1: welcome everyone in this video. Our goal is to create some script inside of our player controller to make our white magic menu Come on. And off the screen at will, we're gonna be starting off in our project settings here. So in your toolbar area, find your settings button and in your settings, drop down, click on project settings and you may have remembered this step for bringing on and off our black magic menu. But over here on the left hand side, find your input category. And just as we did with creating a black magic menu event action mapping, we're going to create a white magic menu Action mapping here. So click this plus button again. Note that this is going to be an action mapping, not an access mapping. Click this plus button. We will name this new mapping white magic menu, and I'm going to bind this, too. I'm gonna go with the right control key on the keyboard and the reason I'm going with right control keys because I have one of those longer keyboards here. So I've got my up down left, right, arrows, kind on the right hand side of my keyboard and the right most control key is directly adjacent to that. So that's gonna kind of serve as my left shoulder button, which is the other key. I want to buy into this. I'm gonna click right here, this plus button to add an action mapping for this group. And I also want to bind this to the left shoulder button on a game pad controller. With that done, we could just close out of our project settings. There's no save button or anything here and next. I am going to jump into our player Controller Metroid. Vania Asset, that is in this directory right here. Content Metro Vania Blueprints. Framework. Let's double click on this guy to open it up, and we're gonna be doing some work over here in the event graph find wherever you have event, begin play. Currently, we're doing Event begin play, and then we're creating a reference to our black magic menu. We want to do the same with our white magic menu. So away we can do this and keep this nice and neat and organized is off of event Begin play . Let's hold down the s key and left click to bring in a sequence node. I'm going to wind our event through here and now off of one event. Begin play. I can do this and then also do this off of the then a one output. I'm gonna create another widget. The widget that I'm going to create down here is going to be R W B P White Magic menu right there. And then I'm going to right click on our return value here, right click. And we're gonna promote this to a variable. And I will call this W b P underscore W Magic menu. And just to keep things nice and organized, I'm gonna drag this up in my list. Oh, variables and drop it right about there. And then I'm gonna left click and drag around these two nodes. Tap that Seiki in type W magic menu reference. So now we are storing our white magic menu inside of a variable, and we're gonna need that foursome steps up coming here. Okay, so that is out of the way. Let's come under where we are showing in hiding are Black Magic menu. You may remember this monster script affection, not that bad that we created earlier Well, we're going to do something very similar for creating rather, I should say, showing our white magic menu. So the good news here is we can copy a whole lot of nodes. Um, there is some stuff over here for showing the Starburst upon selection. We're not gonna worry about that just yet. I'm talking about this main block of nodes right here. Let's try to frame it up. There we go. So let's left, click and drag around all these nodes. Note that I am skipping that event note at the very beginning. So select all of these from our getting of our HUD all the way over to our setting, the input modes. So all those are selected. I'm gonna hit control C to copy that. I'm gonna come down in my event graph a little bit, find some space right in here, and I'm gonna hit control V. And I am going to extend out this comment box right here because we're gonna need a little bit more space inside here, and then I'm gonna drag these on over to the rights. Like so. Okay, so next I'm gonna change the name of our comment box. here from show hide, black magic, many to White Magic menu. And we need an event to kick this all off while we just created one in our project setting . So let's right click here and type in White Magic menu. There is our action event and the reason I created this bit of space between our event note here in the rest of our script is we need to do a special check at the very front of this. But before we do that and before I forget, I wanted to make note here that with this input action White Magic menu note in here, you need to select this node and over in the details panel. We've got this execute when pause that is currently unchecked. We need to make sure that this is checked. And the reason again is because when we press this button while the game is running, we are going to be pausing the game. And the only way that we can have this release event fire off and be detected is if we have this set to be executing when pause, a very important step there. Okay, so with all this in here, What is the thing that we need to do a check for? Well, I need to Firstly, right, click and bring in a get player character nude off of this. Let's drag out and see if our BP player Let's do our cast, your BP player so off of pressing. We're going to cast to Rvp Player like so. And the reason we're casting two r b p Player is because inside of our BP player, if I drag off here, we can find a variable called w magic Ready? We're going to get B W magic ready? That's Boolean W magic ready. And then we're gonna drag off of here and plug this into a branch node. Make sure we got our execution wires hooked up like so. So why are we doing this? Why are we doing a check for this before we can then even do the rest of this script over here? The reason being is because, unlike our black magic skills are, white magic skills are gonna have some cool down associated with them. So we're gonna make it so that the only time that you can bring on your white magic menu is if we aren't already using some white magic. It is basically being unused and we can swap out to a different white magic. So once we are finished turning into mist, for example and are missed has expired return back into human form. This is then going to be set back to Yes, you can use a white magic again, and that is the only time we want to be able to show or hide this white magic menu. Okay, so if this is true, that are white magic menu is ready to be brought on meaning were not transformed into mist or so forth. If that's true, we're going to bring in another sequence, note and off of this, then zero pin. We're going to then hook this into the rest of our script. Now. Currently, it's meant to add to view Port RB Magic menu, but we're going to swap some of these variables out in just a little bit. What are we gonna do off of this, then? One pin. Well, that remains to be seen. We'll get to that in just a moment. But before we get any further with this off of this false branch, if our white magic is not ready. I'm gonna drag off here and type in play Sound to D. I kind of want to have a sound play if that turns to be false So the sound I want a slot in here is going to be VR underscore. Negative. This one right here, VR negative Q and again note that this is in our engine content and I've showed you multiple times how to get there. If you have a view options and show engine content, you too can make use of this sound. So I'm gonna plug that into there, and then I'm going to right click on this pin, promote this to a variable, and I will call this SFX Underscore action. Dis allowed action disallow. That sounds rather heavy handed. I am going to bring on some of the other options here by clicking this little drop down. I'm gonna set theme volume multiplier here to the 0.3 a little bit quieter than default. And that is good to go there. Okay, so I could probably bring these a little bit closer now the rest of these nodes before we go on to what happens when we release are White Magic menu Button. Let's swap out some of our variables here in this chain because remember, we copy these all from our black magic menu or from our Black Magic script right up above. So here we're saying we want to hide R W B P Hut and show our W B P Black Magic menu. Well, that's not really the case anymore. We want to bring on our W B P W magic menu, so we're gonna get that. And now it's simply kind of swapping out our wires here. So I want to add that to the view port. We can nix that wire holding down Ault and left clicking. Well, actually, just let me do control Z here to bring those all back on because it deleted them all. And I kind of want you to see where all these wires are going to and from. So I'm gonna plug this into our play animation, and then I'm gonna drag out of my W magic menu. And instead of the B Magic menu intro gonna drag out of here and look for W magic. In TRO, there is my w Magic intro animation Let's plug that into the in animation here. And lastly, we need to make sure that we take our w magic menu in Plug this into the removed from parent. All the script down here is going to be when we release the button is gonna eventually plug into here and continue forth. Okay? And we don't need this be magic menu intro animation so we can delete that guy out. Okay, let's scroll over to the right a little bit. And here we've got our W b p B magic menu. Let's bring in W B P W a Magic men. You get that? And let's make sure that we make that our widget to focus on right there instead of RB magic menu. Okay, so that is looking pretty good. Now, let's kind of zoom out here, scroll we all the way on back, and we need to work off of the release button of our input action White magic menu. So what I want to do is I'm gonna hold down the G key and left click, and I'm gonna bring in a gate note and I'll explain how this works. You haven't used one of these in a little bit. Ah. When we release our button here, we're gonna plug this into our gates. A gate is kind of self explanatory. It like you know what a gate is? The gate is a barrier of sorts. You walk up to gates, it could be locked. It could be open. Can you proceed? Well, how do we know if it is open or closed? Well, we can plug things in here to determine if this thing is open or close by default. Were saying that this gate, this bit of script beyond this barrier right here is going to be closed. Meaning that even if we release this key right now, it would be considered close. And this would not fire off and thusly execute the script beyond what do we want to have open this gate? Well, when I press the White Magic menu button when I press it, we're going to be doing this check to see if the White Magic is is ready. And then we got a sequence here in off of my then one output. I am going to then plug us into the opening of our gate to say yes. Our gate is now open and capable of being traversed upon or beyond, I should say so that the rest of the script can fire off when we release the button. Let me just bring in a reroute noted here kind of reposition this a little bit. Okay, So as soon as we press a button, we're going to send a signal right here from our sequence known that opens our gate. After we exit our gate, I'm going to bring in a sequence node and out of our then zero pin, I'm gonna plug that into our adding of our HUD back to our view port. And we're going to continue forth, like so, playing some sounds on pausing the game, etcetera. Now, the reason I added a sequence node right here is because off of our then one pin right here , I'm gonna plug this into our closing of the gate. Let me just bring in a couple of reroute notes here by double clicking, seeking sort of see that flow, and that will make it so that we have closed our gate once again. And it can Onley be traversed upon again once we press that our action key here and open it up once again. Okay, so I think that should just about do it. Your let's just kind of take a quick gander to make sure everything is right here. Let's compile Firstly, to make sure everything in our script looks good to go. Let's save. I'm gonna jump in and play here, okay? I'm gonna hit my right. Control Key. There is my white magic menu released. Let me try it on my control pad as well. The left shoulder button looks pretty good. There is. Well, now I just exited out here and I have a little air. Let's see what the error could be. All right. It looks like this is an air you probably did not encounter because I did something quote unquote special. While I was exiting out of my game. When I had my w magic menu up, I was actually pressing on the arrow keys. I had the right arrow key held down when I then escaped. And this is how I got that error. I bet if I jump back to you my pc Metroid Vania here. And I went over to where I'm doing this hiding the acquired. Let me see that message log There exists none. Okay. In the roof, parent. Okay, if I learned skill right there. If I jumped back here into my PC Metro Vania, Right where I'm hiding my skill widget blueprint. And I'm doing all of this up. If I drag off of here and type in is valid the question mark version. Let me just kind of move this all over to the right here a little bit, and I sneak this in up there. That should fix that issue again. You probably are not seeing this issue because I did a very specific ah thing with my keys , their order to get that issue to arise this message issue. But if you are getting this sort of an access none trying to read WPP learned skill sneak in and is valid. Note into this section of your script here in PC metro opinion that should clean that up. Something else I wanted to point out here when I click play. Okay, I'm gonna hold down my buttons. You bring on my white magic menu. If I use my w A s and D keys. Look at my hunt area in the upper right hand corner. It is not showing the appropriate icon. Don't worry about that. For now, that is a known issue that will get fixed up in a future video here. Anyways, guys, that will do it all for this video. Still more work to be done, but we will see you in the next one. 123. White Magic Menu - Script #2: Welcome back, everyone In this video, our goal is to modify a macro to indicate which white magic we are selecting All of our work here is going to take place here inside of this content Metro in Vania Widgets Directory, where we have our W B P White Magic menu double click this guy to open it up. Remember when we created this asset, we created it by duplicating are W B P B magic menu and a lot of things came along for the ride. Now we just need to swap out a few things here inside of our w b P White Magic menu. In order for it to work for this version of the menu, we're gonna be working over in our graph tab because that is where our macro exists. Over in the my blueprint panel, scroll on down until you find there's mine under the functions areas way down in the variable section where we've got this select magic macros. I've got a lot of tabs across the top here. If I double click on my select magic matter Crow, I will open up what we currently have. And as you will see all of this stuff is related to our black magic menu. So let's just do a little bit of fixing up here to change this to B for our White magic menu and everything will be good to go. Well, firstly, foursome clarity's sake. I'm going to change the name of some of these common boxes, so we're not getting confused, so anything that has fireball right over here, we're gonna change this to B Lens of truth, Then kind of moving on down the line right here are electro spark is going to be renamed Missed. That's gonna be determined with the A button, the D pad left, or the left thumb stick left where we had our bloodlust. We're going to change that to be our shield. And then where we had this Arctic blast, we're gonna change that to be our time slow. Okay, so that really affected nothing here in our macro. That's just for clarity's sake. Next thing I want to change here is where we have we've got our input known there, and we've got our output node here. If we look at all of our outputs are all labeled wrongly. That's not going to be confusing sarcasm, So let's just change that. So where it says Fireball selected? Let's change that to be lens of truth selected where it says electro spark, Let's change that to be a mist where it says bloodlust selected. Let's change that to be shield and where it says Arctic Blast selected. Let's change that to be time slow. That's a lot more clear and zooming back. We're then going to go through each of these sections to relabel things appropriately. We're not just going to relabel the comment box, which we are. We're also going to change out ah, variable inside of here, which is very important. So where it says fireball selected, Let's go ahead and change that to be lends of truth selected. Let me just flip my page of notes here to make sure I'm not missing anything, and then right down here, where we are referencing our player, we're gonna drag out of here and do a search for lens of truth. True, with there we go get has w magic lends of truth. That is the thing that we want to see if our player has before they are allowed to select that is their selected white magic. Okay, holding down the right mouse button. I'm going to come under Electro spark selected. We're gonna change this to be missed, selected and then right here. We just need to change out this variable. Does er player has missed? Do they have missed? That's the thing that we're checking again. Inside of our BP player is where we're storing all of these variables. Does our player have the w magic? Missed skill? That's important to know before there are allowed to select it where it says bloodlust selected. Let's change the name of this common box by double clicking on it. This is going to be shield. And then out of our player, we're going to find out has shield plug that into lead out bloodlust in last but not least , Come on downward to where it says Arctic blast selected. And this will simply be time slow and out of our player. We're going to find if they has. If it has the time slow. I'm not sure that's correct. English there. Okay, delete out Arctic blast plug in the time slow and I believe we have everything with that. Let's go ahead in compile and save no error. So make sure you have made all of those modifications for clarity's sake and for functionality sake. Anyways, that will do it all for this video. See you in the next one. 124. White Magic Menu - Script #3: Welcome back, everyone. In this video, we are going to be editing some script inside of R W B P White Magic menu to provide proper feedback to the user. Regarding that, white magic is being selected. So find your way on over to this directory. Double click on W B P W A magic menu. This video is going to be pretty simple. Find your way on over to the graph tab, not the designer tab. And we want to be on our event graph. I know we've got a 1,000,000 tabs open along the top here from all of our various functions and our macro. If you don't see your event graph tab along the left hand side with your my blueprint panel , you can double click on your event graph right here. That'll bring you over to the tab. And here we have all this should kind of be renamed from the last video we just did. So what we're doing here is off of the event Tick. Now all of our select magic output are updated per the last video. Most of the stuff in here is all correct. However, if you follow any one of these flows of execution to the end, you will note that we are setting what magic is slotted into the be magic. Remember when I was toddling which white Magic was selected and it was showing the wrong sort of image? Well, this may have had something to do with him, so let's go ahead and fix all of these. Let's start off with our no magic selected following that all the way to the top. Everything here is correct for are no magic selected except for this last center so we can delete that out and out of our player. We wanna bring in W slotted get W magic slotted rather set w magic slotted. Make sure your execution wires are plugged in like so. I'm gonna bring these do once nodes and all this kind of stuff up here like we did before. Out of no magic being selected, we're gonna set our white magic slotted to be none. And the output of this is going to be set into the reset of the do once Note. Okay, let's bring these on down to our next category here. This is where we were going to be slotting in our lens of truth. So let me actually, I'm going to copy this node right here instead of searching for it all the time. So w Magic slotted. I'm gonna hit control c gonna hit control V down here and now I'm just going Teoh, plug these all in appropriately get rid of be magic Slotted here. I want to tell our script that the lens of truth is one that is slotted in. Remember this variable inside of our BP player? Just a hammer home. The point here, let's go into our character, BP player. It's in our player info. We created this w magic slotted variable. And this is any enumeration that we created way earlier in the course. And right now it's default. Value is said to none. So this in our W B P magic menu is where we're actually setting it to be one of our different white magic skills. Okay, so bringing this on down is well, we're gonna hit control v again because I still got my w magic. Slotted, copied, make sure all these air getting plugged into the do once node right there. And instead of electoral spark here, I want to set our magic slotted to be the mist. Miss Name. This is our missed section. Okay, then we're gonna come down to the shield section, hit control V to paste W Magic slotted in here. And let's just make sure that here we slot this to our shield and this plugs into our do One snowed then last but not least, zooming out a little bit. We got our time slow being selected, So I'm gonna hit control v to paste. Whoops. You know what? I hit their control. C control V to paste another one of our white magic. Slotted. Let's set this to be time slow and make sure that this gets plugged into our do Once Noda's well, that is some of the benefits of being able to reuse an existing widget blueprint. All we had to do with swap out a few variables there and we were good to go. Let's compile and save. And how about we give us a quick place, showy gunplay? Bring on the menu there? Of course. Yes. We can't actually see really any difference other than we are showing the appropriate icon in the, uh, the HUD area. We actually need to acquire some of these other skills. Let's acquire that lends of truth. Let's acquire our miss. And there we see our various and icons and we can set any of those into our HUD sweets. Of course, we need to make our missed in our lens of truth functional. Yet we're not going to make this shield or time slow functional because this is already a massive course. But that will come later. All right, guys, that will do it all for this video. We will see you win the next one. 125. White Magic Menu - HUD Anim: Welcome back, everyone. I am going to jump in and play quickly to show you what we will work on creating in this video. So here I am hitting play. And as you know, now we can bring on the Black Magic menu as well as the white Magic menu. So watch when I bring on the Black Magic menu. There it is. Let me select the blood less skill by holding the W key right now, you can see it in my heart up there. I'm gonna release my right shoulder button and watching the upper right of the HUD. You see that little starburst kind of flare out now that exists for our black magic skill when we set a new one. However, if I hold down my left shoulder button to bring on my white Met magic menu, I'm going to hold the W key. Teoh, show that I am selecting Shield. I will release the button to hide this menu. But note up in the HUD, you're not going to see that starburst flare out from behind our shield up there to indicate that we have selected the shields. Nothing, not a That is what we are going to work on creating in this video a starburst animation inside of R W B P. Hud. So find your way on over to this widget blueprint. It is in content. Metro Vania Widgets double click on it to open it up and you can see we've gotten animation for RB Magic slotted. However, we do not have one created for our w magic slotted. So let's change that now. We're gonna create a brand new animation. We will call this W Magic Slotted getting a lot of work in for widget blueprints and creating animations in this course, which I think is kind of fun. Let's go ahead and select R W magic slided animation. There is a blank timeline here and over in our hierarchy. Over here. We want to find R w magic Starburst image. It's located right about there. You can see that image right there over in the details panel. And the first thing that we're going to change over time is going to be our rotational angles. I'm coming. I'm coming under the render transform section here. We've got our angle parameter. I'm gonna click right here to add a key for this property down to our timeline. Let's expand out our transform here. Let's expand out our rotation settings. There is our angle. Currently at zero degrees at the zero second mark. Let's move our timeline slaughter all the way to the second mark. Let's add another key for the angle. And let's set our setting here at the one second mark to be 3 60 So one whole turn of that starburst image that's gonna look pretty good. The next thing that we're going to want to set is going to be some of these scale settings here. So let me take my timeline slider. Move it all the way back to the zero second mark. Let's come under our scale settings right here. Let's add some keys for the X and the wise to click plus button right here. So now we've set some X and Y keys of scale one at time. Zero. Let's move to the half a second mark. Let's add some or scale keys and let's set our skill in the X two before and in the wide to be Fouras. Well, so four in the X and the Y. Then let's move our timeline Slatter all the way to the one second mark. Add some or scale keys and said the scale back to one and one and that should do it. Guys, I know if I move this back and forth, you can sort of see it spinning. But you really can't see much there because that's a pretty faint image. By the way, you can't compile and save just to make sure your work is gonna be good to go. Guys that will do it all for this video in the next video will actually create the script to play that animation. We'll see you there. 126. White Magic Menu - HUD Anim Script: Welcome back, everyone. In this video, our goal is to call our newly created hut animation to play whenever a white magic selection has occurred. This should be a quick video. Let's jump right to it. Here in our content. Metroid Vania Blueprints Frameworks Folder Find your PC Metroid Vania Player Controller Blueprint Double click on it to open it up. In here we have our showing and hiding of our Black Magic menu and our white Magic menu. And right now the current difference is when we're showing in hiding are Black Magic menu. We've got this block a script over on the left hand side that will show the starburst upon selection. That's a little starburst in the hood. What I want to do here is left, click and drag and select this bit of script off of are showing and hiding of our black magic menu. The show Starburst. Upon selection, let's hit control C and then down here with are showing and hiding of the white Magic menu down in the lower right Right about here. We're gonna hit control V. And now that I hold high school will end rather off of my set input mode game Onley note. I'm gonna plug this into our branch node, and almost everything is good to go except where we need to swap out a few variables again . Down here, we're dealing with our white magic menu, and right now we're saying, Hey, Black Magic menu. We want to find out if this selection is made. Well, we don't care about the Black Magic menu down here. We care about the White magic menu, so let's bring in R W B P White Magic menu. Let's get that and then off of this, we're going to drag off and find out if ah selection was made. Gets selection made from inside of R W B P R W B P W magic menu. Now we can get rid of these two guys right here. I'm just gonna delete those out, and that is the check that we're going to be making at this point Now. If a selection has been made inside of our White magic menu, we do want to play a sound. Then we're gonna cast to R M v hud, and we're going to grab our W b P hud and we want to play an animation, but we don't want to play the be magic slotted animation we want to drag out and get the W magic slotted animation and the plug that into the in animation. Now, if you were not able to find this w magic slotted animation when you dragged out of WPP HUD , make sure that in w b p hide that you have compiled and saved and now here, inside of our PC Metroid Vania, I'm going to quickly compile and saved to ensure that we are air free. Let's give this a quick test. Now, by jumping in and playing, I'm gonna hold down the control key on my keyboard to bring on my white magic menu. Let's select shield. And now when I release my button too, get rid of the White Magic menu. You should see a little starburst appear behind our shield in the HUD. Let's check it out. And there it was. Try one more time. Time slow. There it was again. Job Well done, guys. We now have functional white in black magic menus. That'll do it all for this video. Guys. See you in the next one 127. Timer Widget - Creation: welcome everyone. Well, we have our White Magic selection menu completed, and you may assume that now is the time for us to go about creating the functionality for our white magic skills. I'm talking about transforming it to missed. I'm talking about our lens of truth skill that is going to allow us to see through some walls and to jump onto some invisible platforms, etcetera. Well, we're not quite there yet. In this series of videos, we are going to work on creating a widget that weaken display above our character whenever they've activated their white magic skill. Now, this widget is going to consist of a meter as well as text. And it's going to represent how long this white magic skill will stay active before it auto deactivates. I'm currently in a previous version of this project that I completed before making this course. I'm just going to jump in and play and show you what we are going to be building. Okay, So when I press my activate white magic skill here, you're going to see a meter appear above my character's head. And now I've activated by lens of truth ability and notice that once the meter depletes it , auto de activates. So that's what we're going to be aiming to create over the next few videos. Okay, so we could just close out of this project for the time being an open up, our current version of the project we're working in. And the first thing we're going to do here is come under our Metroid Vania Widgets folder in inside of Here. We're going to create a new widget blueprint by right clicking. Come on, coming under the user interface option and selecting widget blueprint. And we will call this W b p underscore w a magic underscore a timer balance double click on it to open it up. And we're just going to add a couple of widgets here over in the left hand side. The first widget that we're going to add is a progress bar. That was a meter that you saw over our character's head. Let me just zoom to fit right here. Let's add a progress bar on top of our canvas panel. I'm going to select it, hit F two and call this W Magic Underscore timer. And let's set some dif DEA Um, some of my trying to say here said some details for right away, almost a default details, defaults. Kind of the same thing. Um, let's go with an anchor of this middle bar. This horizontal middle bar right here should do us some good. And with that in place, I'm going to come up and set are Offset left to be 100. The position why is going to be zero. The offset right will be 100 the size why we're gonna set to be 20 and scrolling on down a little bit our style. Here. We want to slot in an image here for our style. We're going to set this to be our T Ink Black Tea Inc Black. That's going to be the background of our meter. Essentially now it's kind of squished together, and I know it looks rather elongated now, but when it's above our character's head, it's gonna look pretty nice and then scrolling down a little bit in here. Let's set the tent for this. Actually, let's go. Background Image tent 111 The a value. Let's go 2.75 to make that a little bit see through. Not much just a little bit. Then if we scroll on down a little bit under our fill image, this is going to be the portion of the meter that we see deplete. And for this, I'm going to slot in holding down left click Releasing left, click t Underscore Inc underscore Pink. And for this, we can leave the tent at a full A value of one as well draws box Dropbox. Okay, that's looking all fine and dandy. Next widget that we are going to add to this is going to be scrolling down into our palate . Let me just peels back a text widget, not a text box, but a text widget. Lets drag and drop this on top of our canvas panel. I'm going to select it hit F two right away to rename it and we'll just call this w magic Underscore name, then over in the details panel. I'm gonna set the anchor for this. The anchor is going to be this middle box right here. Smack dab right in the middle. And with that anchor set, I'm gonna set the position X to be a zero. The position why is going to be negative? 20 relative to that anchor point. Let me just zoom on in a little bit. Negative. 20. The alignment. We will set to be 0.5 in the X and 0.5 in the why, and we will set it to be sized to the content. So depending on the size of our contents here, it will size this boxer appropriately. Um, the text for this doesn't really matter, because we're eventually going to buying to this. The appearance, though, However, let's adjust some of that. We are going to want to go for a straight yellow here. So under color and opacity are one G won the B Let's set that to zero so that we get this yellow text, the font family. We will set this to be our Gothic letters. And I'm gonna set thes size here to be 15. So it's gonna look pretty tiny right here. I know that kind of click off of this. This isn't exactly what it looks like when it appears above our characters. Headbutt ho! Just you wait. All right, guys, with that all done, let's zoom to fit here and kind of see what this is gonna look like. Ah one more thing. I want to make sure that we do here with our W magic timer. Let's go ahead and select that one more time. I believe I may have for gotten one thing with that. Let's set our percent here to one just so you can see essentially what this is going to look like. I know you see some blue coloring here, but trust me, it will be pink in the long run. But that is to come later. All right? And we do want this to Philip. Left to right. Note. That is. Well, all right. One more compile and save guys that will do it all for this video. More work to be done. See you in the next one. 128. Timer Widget - Bindings: Welcome back. Once again, everyone. In the last video, we created a timer widget blueprint in this video, our goal is to bind our progress bar within that's timer with to the allotted active time for each white magic skill, and then bind the text of the appropriate white magic name. Now, what am I talking about, exactly? Well, I have my BP player open right up here along the top now inside of our BP player were obviously storing a lot of variables. And one of these variables that we have common amongst our various white magic skills is an active time percentage. What we're gonna do is we're going to feed this variable on over into our W magic timer to drive how full this meter should be Now note. I know we haven't actually done anything with these variables yet, outside of just creating them. If I right clicked on this variable inside of our BP player and did find references, there are no results found. That's because we have not yet created the functionality for our miss in our lens of truth . But know that over time we will. That is upcoming. After we create this timer. However, in this video, we're going to be doing some work inside of R W B P W magic timer. So, in case you haven't already done, so come to this directory and double click on your W B p w magic timer to open it up. Okay, So make sure you've got your progress bar selected over here in the hierarchy. Your W magic timer over in the details panel. Find your way on down to the progress section and we left off in the last video. I set our percentage here to be one. Make sure your Barfield type is left to right is well and all that dark blue is kind of hard to see against the black, But don't worry about that. That'll get fixed up later. Right here. We want to create a binding go to binding, create binding, and that'll jump us over to the graph tab. Let's rename this function right away. Going to select it. Hit F two. Let's call this yet. W magic, active time percent. That seems like a fine name. Create a little space between these two. Going to right click right below it. We're going to get the player character. Out of that, we're going to drag out and cast two R B P player hooking in our execution wear like so and now out of our BP player, we can extract our various active time percent variables. So pulling out one time I'm gonna look for lens active time. We're gonna get the lens active Time percentage. I'm also going to drag out again and look for missed active time percentage. That's get her as well, dragging out again shield active time percentage. Now, I actually did not create one here for shield. And you know what? We don't really need to sense. We're not actually going to be creating the functionality for our shield or our time. So So, Actually, let's go ahead and skip that. Even though I was intending on doing so, it's kind of an unnecessary step, But just note that if you eventually seek out to try to add a shield any time, slow ability that's gonna function similarly to these two guys, you're gonna want to do that. OK, one more thing I do want to pull out of our BP player, though, is whoopsie. R w magic slotted. Get our W magic Slotted. This is gonna find out which magic do we currently have slotted in our hut. Remember, our hut has those two slots in the upper writes one indicating what white magic skill we have slotted and available to use in one foreign available black magic skill to to use. Okay, so let's drag out of R W magic slotted and bring in a select node. And what we want to do then, is plug in our lens active time into the lens of truth, the mist active time into the mist. Let's hook in our execution where, like this in the return value from here, can be returned to be set into the return value of the return node if that's not a mouthful . So what is this since essentially doing? We are saying that Hey, what is are currently slotted white magic and then what we're going to do is read in which ever white magic we have slotted what is their active time percentage variable being set, too. And that is going to drive how full that meter is. Now if I jump back to my BP player here are missed active time percentage currently has a default value of one. And if you look over our w b p magic timer jumping out of here and going over to the designer tab, this meter shows as full. It's currently that that blue color right there, it shows as full when our percent here is a value of 1.0 Now. Eventually, over time, we're going to decreases so that it goes down to zero. So just note that when this percent is a zero, the meter is going to show as empty. So that is how we are going to drive this via a variable. Okay, so we got that one out of the way. We need to create one more binding here. So let's select our text widget right here, over in the details panel. Let's scroll on up until we find where it says text block and let's click right to the right of it to create a binding that's going to jump us on over to our graph tab. Let's select the function over here in the my blueprint panel hit F two. We'll call this get W magic name, create a little space between the two of these and these next steps will be familiar, right? Click, get player character drag out from it, and we will seek out our BP player will cast two R b P player and the reason we're going to cast two R b P player. Make sure that it is RB People Air is because we want to extract some information from it, namely our lens attributes. Let's get our lens attributes. Let's also drag out and get our missed attributes. Get missed attributes Now We could drag off eventually and hook up things like shield attributes, and we did create shield attributes and times will attributes for. So just for the shingles times slow attributes will hook these up. A swell get times will attributes. And lastly, we also need to drag out of our BP player and find out what is the white magic slotted currently by our player. Let's get that then out of our white magic slotted, let's drag out and bring in a select node, okay? And we can plug in. What we want to do is plug in the name contained within each of these structures. So going back to my BP player here just to hammer home this point R b p player here. We've got say, Mr Attributes, Our Miss Attributes is a structure type variable that we created, and one of the things one of the pieces of data it contains is our name right here. Missed. That's what we're looking to get. So jumping back, George W B P W Magic Timer Let's drag out of our lens attributes and just type break. This is going to break open our structure. And I'm just gonna hit control C control. See on this and then control the once twice and three times to bring all of these guys in. Make sure that you plug these all in elects so and then out of each of these, you can plug in the appropriate name. So our lens attributes let's find out what the name is. Plug it into lens and you can see that it converts it all over to the proper text data type . Missed shield time slow. The return value of this can be plugged into here and hook in our execution. Why're like so? So this is basically a function that is going to find out what is the current white magic selection slotted in our HUD. And then it is going to figure out which name to display above our meter, depending on which white magic we are intending on using. All right with that. All done. Let's go ahead and compile in save. We are not quite finished yet, but that will do it all for this video. We will see you in the next one. 129. Timer Widget - Component: Welcome back, everyone. Last video here for our timer widget. Our goal in this one is to add a widget component onto our BP player that we can show or hide to indicate to the user how long their white magic skill will stay. In effect. We're gonna be doing work inside of our BP player here, So if you don't already have him open, come under your content. Metro and Vania Blueprints, characters folder and double click and your BP player to open her up. This one is going to be pretty simple. Over in the left hand side where you've got your list of components, we're gonna add a brand new component. I'm actually gonna jump over to my view port tab as well, just to get off the event graph. That's not our focus here. The ad component that we want Teoh ad is called widgets. It's this widget one right here. So, like that, I'm gonna rename this to be widget underscore W magic timer. And with that selected over in the details panel, as you may have expected, I've got some details I want to set for this. The location I'm going to set this too is a Z location of 100 you can see that already moves its transform right up above our character down below, where we've got this user interface section. I'm gonna set the space to be screen space. So that way, this meters always going to be facing the screen instead of being positioned in the world, which could be facing away from the way we want our user to see it. So screen space is going to have it facing the player like we wanted to facing the user. I should say the widget class right here. Let's select this. We're going to find the widget timer that we just created. The draw size here will leave as 500 by 500 down below. We have a rendering section right here. We've got this visible check box. Now we're going to eventually have this ticked off. But I do want to see it just for the time being, so that we can see if we actually see something when we're in the game. So let's go ahead, compile and say this. Let's jump in and play and you can see just a black meter right now. And the reason we see a black meter right now is because over in R W B p magic timer, remember, we've got this Progress bar is bound to this function right here. This percent is bound to this function. Get w magic, active time percent. And we're saying that if the W a magic slotted is set to lens, it will be Well, I know this variable set to one and are missed is set to one as well. But if we don't have any white magic slotted, this is going to be zero. So we're going to cheat a little bit and jumping into our BP player. I'm gonna find r w Magic slotted right here. In fact, let me check this on. So that way we can change this inside of our level editor if we want to. And I'm gonna change our w magic slotted to be Let's go missed and now again are missed. Active time currently defaults to one. So let's compile and save this and give this a play once again. And now we see a blue coloring instead of our desired pink coloring. Okay, we can go ahead and fix us. I know I said that ink pink before and that was my bad. So let's go ahead and change this to be you come under our fill color and opacity right here on our set this back to its default. I had some setting set in there. That's why I was seeing blue. I was like, Why am I seeing blue? That was why So if I said my progress appearance back here to be all defaulted, I don't know where those setting weird settings came from that were blue. Now I am seeing the pink that I am expecting. Let's give this a compile and save and try this one more time. Play. There is my pink meter and now what I couldn't can do is let's play with our variable inside of our players. So it's this Miss Active time percentage. That's the one that is driving. How much of that pink meter that we see. So let's so like this and make it so that we can edit this once our character is present in the level compile and safe again. My w magic slotted. I am hard coating here to be missed. Let's click play now if I knew. Shift in F one that's gonna give me control of my mouth so I can jump on out of here. Let me just minimize this really quick jump over to my level editor and there is my spawned in BP player. My world outline. I'm just going to select it. I'm gonna try to kind of bring in both of these at once. Okay. Like so let me bring in My viewer is well, like so I'm just going to try Teoh have both of these on screen at one time. Okay, So with the players selected over in my details panel, I've got my white magic slotted set to miss. Currently, there is my missed active time percentage currently at one. And as I reduce this look over in my play panel over in the right And if I can squeeze this a little bit more, see how I'm changing that miss active time percentage and you're seeing that meter fluctuate up in down. That is working as intended. Slummy exit out of here. Let's full screen our editor here and let me set some stuff back to default. Gonna go back into my be people air the Miss active time percentage. You know what? We will leave that. The one thing I do want to change, though before I forget is I'm going to select my widget W magic timer right here and over in the details panel under the rendering section I currently have. This is visible. I'm gonna set it to be invisible for the time being. Now we will toggle this on and off in the coming videos when we hook up our missed and our lens of truth skills. But that will come later on. So, guys, let's give us one last compile and save that will do it all for this video. We will see you in the next one. 130. Lens - Secret Wall: welcome everyone. In this series of videos, we are going to be working on putting together our lens of truth, White magic skill. If you don't recall what this is meant to do, let me just jump into an older version of this project that I made in preparation for this course. Gonna click play here. And when I activates my finished lens of truth Magic, you're going to notice two things. One over on the left hand side. Here we have this secret wall that has suddenly been revealed to us, and over here on the right hand side is a secret platform. Those are the things that we need to add before we even think about hooking up the functionality for all this that is creating a secret wall mesh and a platform mesh to be revealed when we use our lens of truth skills. So ignore this warning here. This is actually totally unrelated. What we're gonna be working on in this video specifically is to create an actor to make that see through secret wall, that is all. None of the functionality just creating the actor. So let me just minimize of this version of the project. Let me go to our version of the project are work in progress Here. Come under this directory content Metro Vania Blueprints actors and find your BP interactive object base with that guy located. Let's right. Click on it And we're going to create a child blueprint class from this and we will call it BP. Underscore Secret? No. And I want to open this up right away, so I'm gonna double click on it. And what you see here, if you got your view Port tab selected, it's simply that Interact Collider box that was inherited from our BP interactive object base. That's all well and good. It's actually not really needed, but we are simply going to add one component to this blueprints. Click the add component button. Let's add a static mesh. And I'm simply going to name this mesh and I will slot in a mesh over here in the details panel. This is going to be a cube, and not just any Q but a specific cube that I have in mind. I like this guy right here. The engine basic shapes cube that is approximately sized 100 by 100 by 100. If you don't see this one, you can make sure your view options show engine content is checked on. And when it is, you should have this cube available to you. So let's select that and bring it in. And I am going to change the material right away. Here to be clay. Let's see, Do I want clay? New or clay? Old? My notes will tell. I want clay old. Of course, you can put whatever floats your boat, and that is looking pretty fancy. If I do say so myself. With that also selected the mesh I am talking about. Let's come under the collision settings and I want to make sure that our collision presets are not set to block all dynamic but rather overlap Onley upon Okay, that will make it so that our pond can simply overlap that and just pass right on through it. All right with that, we will simply saved. Is that Well, I suppose you could compile and say, because that is the process that I like to follow. That is literally all we need to do in this one. Guys more work to be done before we actually go about hooking up all the script to show and hide that that special material that's making that's gonna make it look see through. But that'll do it off of this one, guys. See you in the next one. 131. Lens - Secret Platform: Welcome back, everybody. In this video, we are going to be working on making a secret platform that will be revealed to us when our lens of truth skill is activated. Here I am, in the older completed version of this project. Let me just click, play here and demonstrate exactly how this is gonna function. So you will note that I jump on this platform and when I activate my lens of truth skill lo and behold, here is my secret platform that I could jump on and collide with. However, when this ability runs out and I try to jump on where that invisible platform was, I can no longer collide with it. So we're gonna be working on building out that actor. Let's jump on out of this version of the project and go into the project that we're working on together here. Here we are in this directory content Metro Vania Blueprints, Actors. Let's find our BP secret wall, right Click on it. Let's go ahead and duplicate this and we'll call this BP secret platform now. Really, there's no reason I needed to duplicate this whatsoever. I have simply could have created a blueprint class and created it from the actor class. Why I am duplicating this, I guess. Just for convenience sake, I'm gonna double click on this guy to open it up. Let's go over to my view port tab. Now, First things first because we did duplicate this. And because there was this inheritance that took place from the BP interactive object base . We've got this Interact collider here that is currently on the inside of this mesh that I don't want to have us collide with what so ever. So what I'm gonna do is I'm gonna come under the collision settings and where it says collision presets. I'm gonna set this to be new collision. Don't want to collide with that. What so ever? Next select your mesh. We're gonna change out our mess. You're a little bit We could have. We could simply squishes down and call it a platform. But I want to bring in something a little bit fanciers. So with that selected on your static mesh section here, let's do a search for fire. Underscore cliffs, underscore Cliff Wall. And we got a whole bunch of options here. I'm looking for this one cliff wall of 03 c and it's gonna be giant enormous. There it is. So let me just set a few things from here. Let me set my scale. Let me unlock my scale first and said the X to be point to the white To be point to the Z to be 0.0.1, that's gonna make it significantly smaller. Let me tap the F key to focus up on it. The location of this I have set to be negative. 100. Why do I have it set to be negative 100 just to center it up a little bit more just to center it up a little bit more on just to senator it up a little bit more. Based on when we places in our level, you can see there is our default seen route, that little white ball down there. So that's why I set my location for this mesh to be where I did okay with that. The material as brick, clay old. I guess that will be fine. That's a fine looking platform, right? I I like to think so. All right. So, by default, we want no collision on this mesh as well So let's come under our collision settings with our mesh selected and are collision preset currently set to overlap on Leap On. Let's set no collision for this as well. So nothing will collide with this until we turn on our lens of truth. That functionality to come later. For now, go ahead and compile and save and we'll call this video wrap guys, that will do it all for this one. See you in the next one. 132. Lens - Materials: welcome back. Once again, everyone in this video, our goal is to create some materials who apply to our BP Secret wall and BP Secret platform . Whenever the user activates their lens of truth skill. Here I am back in my older version of the project. Let me just go ahead and activate my lens of truth ability. You'll notice that when I use it, our secret wall over here is gonna turn the shade of see through purple. My secret platform is the shade of see through yellow. Those are the materials that we're gonna be working on creating. So let me just hop on out of here. Reduce this version of the project. Here we are in our version of the project and we're going to navigate down to our Metroid Vania Materials folder And let's right click create a brand new material from the right click menu. We'll call this 1st 1 m underscore lens of truth underscore Wal. And with that created, let's double click on it to open it up. This is going to be a relatively simple material. Now you can get pretty crazy, creating all kinds of complex materials. This one is going to be way, way, way simpler than that. Let's start off with this. Master material notes selected over in the details panel. We want to change our blend mode here from opaque to translucent. And when we do it is going Teoh, make this opacity inputs suddenly activated. Meaning we can plug something into it. And so we can make this material see through. Okay, so with that done, we're gonna add a few notes here. The first note I'm going to add is going to be known as a constant three note. You can find that by either right clicking and looking for a constant constant three vector . Rather, that's one way to find it. Or if you hold down the three key and left click, you can get one that way as well. So what this selected? I'm gonna come under the details panel, and I'm gonna set this to be a B value of one. So essentially want a blue color here and I'll leave are in g r r and G alone. Next, I'm going to add a texture sample node. We can get one of those by holding down the T key T as in Tom left clicking there is a texture sample note with that selected over in the details panel, I am going to slot in our What was that Clay, Old clay brick Clay, Old brick clay old. The diffuse version. Not the not the normal Matt version there. Blick Brick Clay, old D That's the version I'm looking for. And what we're gonna do is we're gonna add these two together so you can drag off of our output pin up here, type in ad bringing add node, and then out of our texture sample. We're going to drag out of this top most pin. And if I click right here shows that result kind of this purplish brick, if you will next, I'm going to drag out of this and simply type in multiply and I'm gonna multiply this with this selected by a constant be value. That's his be value right here. Value of two. Just to kind of punch this up a little bit, so that when we now plug this into the mix of color, it's just going to kind of pop out a little bit. And to see the difference as to what that multiply note could do. You know, you can play around with this number. Said it to 20. You know, you see something more like that, which is a little bit too strong. I think two is a pretty good value, and now it's still not see through it all yet. So we need to plug something into the opacity here. And if I hold down the one key and left click, you'll bring in a constant one note. And I just did something. Did something crazy here in our multiply note. Let me just reset this and let me go back to two here, okay? And what I just added down here was a constant one. Notes If I right click and type in Constant is actually just known as a constant node, you can get it that way or by holding down the one key and left clicking. What this allows you to do is simply enter in a value over in the details panel, and I'm going to set a value to be 0.5 0.5 is going to be my opacity value. So that means it is going to be 50% transparent. You can see kind of this image beyond. Now, if I scroll around a little preview window here, that's looking pretty good. All right, let's go ahead and save that. That's going to do it for our secret wall there. Now, for a secret platform, I could use this same material, although that is a little confusing because we're going to be able to pass through our secret wall. Where we can land on that is collide with our secret platforms. So I just want to give a little bit of a visual difference there. So what I'm gonna do is I'm gonna come back to my content browser, right click on our M. Linds of Truth. Let's duplicate this and we'll call this lens of truth platform, not plant from platform. Let's double click on it to open this material up. And really, the only change that I care to make here is with the color here. So instead of this bluish color, I'm going to set the are the red to be one, the G two, B one and RB Valley is gonna be zeroes that's gonna give this yellow color, and you can now see what this looks like. Let's go ahead and save that as well. And guys, that is going to do it all for this video. We now have a couple of lens of truth materials that we are going to apply to our platform and our secret wall, respectively. When we activate our lens of truth, that'll do it off for this one. Guys, see you in the next one. 133. Lens - Sound FX: Welcome back guys and girls in this video. Our goal is to import a sound file and then associate that sound file with a new audio component will be adding to our BP player. What are we looking to adhere? Well, we're going to be looking to add this sound when I click to activates my lens of true skill . There's going to kind of be this eerie sound that plays while our ability here is active. That's the sound we're gonna be looking to import. So let me just exit out of this older version of the project. Let's go to our version of the project. Let's go to our content browser and specifically, we want to go into our Metro in Vania Audio folder and attached to this lesson. You should find a file that you can download. It is a sound effect for us. It is going to be called this w magic lens active. Now, when you download it, this sound file will likely be included in your downloads folder unless you are directing it to be downloaded elsewhere. Mine is located in this directory because I prepared this all for this course and all we need to do is left click drag and drop it into the content browser to bring it on into the engine. There it is our w magic Lens active sound. Let's exit out of here then and let's go ahead and right click. I am going to save that right away. And next I want to jump into our BP players to come under your characters folder here. That directory. Let's double click on our BP player. And over in our list of components, we're gonna be adding another component. Click the add component button. We're going to be adding an audio component right here at the very top of our common section, and we're gonna be calling this S F X underscore W Magic under scorer Lens Active? Yes, indeed. And then, with that one selected over in the details panel, we're going to associate that sound that we just added here in our content browser. We're talking this w magic lens active. Now note that I've got it selected right here in the content browser. So with its selected like that going into our BP player with its selected, I can now click this arrow right here to use the selected acid from the content browser. Of course, you can also click this drop down and find it through the drop down menu as well. One thing I do want to do with this is I wanna up the sound a little bit. The volume of this. So let's crank up our volume Multiplayer here to two point. Oh, this is a little too quiet for me. And then I'm gonna scroll on down a little bit until we find this property right here for auto activate. We do not want this sound to be auto activated. Rather, we want a toggle it on and off with with some script. So let's make sure that it is off for now. Then simply compile and save and guys, That is all we wanted to accomplish in this one. We will see you in the next video 134. Lens - Player Functions: All right. Welcome back, everyone. In this video, our goal is to create a lens on and a lens off function inside of our BP player. Now, you may have noticed when we activated our white magic lens of truth skill in some of the previous videos there. What are some of the things that we saw change? Well, when we turned it on, we saw the meter appear. We saw the materials for our secret wall and our secret platform change. We will. We even made our secret platform show and hide and even made it so that the collision toggled on and off. So we're going to be creating a couple of functions here to turn on and off those various effects. So with that, all out of the way, come under your content. Metro in Vania Blueprints, characters folder double click on your BP player because this is where we're going to be creating our functions inside of our BP player. Over in the my blueprints panel, find your Function section function section and let's create a new function and I will call this lens f X underscore on. Okay, a lot of things we're gonna do when we call this function, the first thing I want to do is down in our variable section. Come under your white magic lens of truth we want to grab RB is using lens boolean variable that we created many moons ago. We're gonna drag it into our graph. Drop it. We're going to set this. And here we are going to say that, Yes, we are using the lens of truth. Then we're gonna drag off of this and we're going to you play a sound, play a sound to D And the one that I want to play here is clicking his drop down. It's called Reject from Player Que And I'm gonna click this little drop down arrow here to bring on some of my advanced options because I wanna up the volume multiplier here to be three. Okay, then, after this, I want to grab my w my widget w magic timer. Let's drag and drop this component into a graph, and then we want to drag off of this and we want to set the visibility of our timer widget . Remember, we're hiding it right now, and here we want to set the visibility to be on some very important that you check that box right there. That's gonna indicate that you should be turning it on. All right, Next, we're going to take our SFX White Magic Lens active sound. I'm gonna drag and drop this component in here. Drag off of it, and we're going to say activates. Remember this sound effect? This sound component, I should say waas de activated. Coming under our details panel. It is not set to be auto activated. So in this function is where we're going to say, Hey, play that sound, okay? Scooch ing on over to the right a little bit. Let me just maximize my screen real estate a little bit. After this, we're gonna bring in a sequence Note Quick. Way to do that. Hold down the s key and left click. There is a sequence node, and I'm doing this more for cleanliness sake. Here. I'm gonna have something branch off of here as well is here. Let's work off of the then zero branch 1st 1st thing I'm going to do is drag off in type in , get all actors of class right here under the utility section, get all actors of class general actors of what class? Well, I want to grab all actors of my wall, my BP Secret wall, and this is going to spit out an array of actors so that if we have multiples of them placed into the level, it'll get him all and out of my out actors we're gonna drag out and type in for each We're gonna bring enough for each loop. So for each of our secret walls, we want to do something. Well, what do we want to do for each one of these? We're gonna grab out of our array element, meaning for each one of these, we're gonna get our mesh, get the mesh, and then we're going to drag off of this, and we're going to set the material so the loop body plugs into the material here. And what do we want to set our material here? Well, we created our m underscore lens of the lens of truth wall m lens of truth wall. So this is what is going to change the material of the wall that have that kind of purple see through Look. Okay, so that's pretty good. Next, let's work off of the then one branch we're gonna drag off of here. We're gonna get all actors of class right here in the utility section. Guettel Actors a class here. We want Teoh. Find our platform. Our BP Secret platform. So appear was the wall down here? We're dealing with our platform. Let's drag off of it and bring in a four each loop. Make sure you plug in that execution winner for each of these were going to drag off the array element and get mesh. There it is or get mesh. And we're gonna drag off of this a few times because there's much that we want to alter about this when we turn on our lens of truth. First thing we're gonna do this drag off of this in type in, set visibility for platform. It's going to be hidden by default. So we're going to turn our visibility on and just a double check. Here, let me go back to my actors Secret platform V port, currently my Mecir coming under here. Currently, I do have it said to visible by default, so I should check this to, uh I should say, rather uncheck it so that We're not seeing that by default. So go into your secret platform. Select your mesh in the details panel. Let's uncheck the visit Bill. The visible check box here to make sure that it is hidden by default. Okay, let me jump back to my be people air because here in our lens on function were saying, Hey, all secret platforms, we're gonna get your mesh. And now we're gonna make it visible. Okay? That's not the only thing we're gonna do off of our Mecir. Let's drag off of our mesh again and we're going to set a material. I'm going Teoh hook in my execution wires. Like so, our material for this one is going to be our lens of truth. And I spell truth. Wrong lens of truth platform that yellowish one. Then I'm gonna drag off of my mesh again, and I want to set a collision enable there's a function for set collision enabled. Make sure the execution wire is flowing into that as well. Let's bring our mission down a little bit. And here I'm just at the collision type to be collision enabled Queary end physics. So that will make it so that we can actually land on that platform. Remember here in our BP secret platform with our mesh selected, I come under the collision section. Currently, by default. The collision is said to have no collision here in our BP player in our lens on function. This is where we're actually enabling it. Okay. And then let's drag off our mesh one more time and typing sets collision. And I'm looking for response to Shen l. That's Channel and I will hook in our execution wears like so And I am going to change the channel to be world dynamic. And the new response here is going to be block. What is this going to do? Well, right above over saying hey, enable collision down below here. We're saying we want our response here to now be block so that it is going to make it so that it can block things or character doesn't just pass right through it. All right, so that is going to be our lends on effects. With that done, let's compile here to see if we made any mistakes, doesn't look that way, and then save. And now we're ready to move on to the lens off effects. So let's create a new function for that. Come under my blueprints function, click the plus button to add a new function lens F X underscore off and we're going to start this off by setting. RB is using lens. Let me hold down the altar key and left click drag one of these in. And when you hold down the bulky and left click that brings in a center right away, we're gonna set this to fall. So when our lens effects is off, we want to say, Hey, we are no longer using the lens. Let's drag off of this type in play sound to D And the sound that we want to slot in here is going to be eject. Mm. Excuse me. Eject from player que. There we go. Then we're going to bring in our widget again. Are w Magic timer widget. We're gonna grab off this. They set visibility. And when we're turning off this effect, we want the visibility to be checked off. So make sure that that is unchecked. Then we're going to get our sf X white magic lens active component. We're gonna grab that drag off of that. And here we're going to type in, fade out. There's an audio function for fading outs that's gonna fade out that sound effect that is playing. Let's set the fade out. Duration to be one second, shall we? And the fate volume level zero is what we want. Then let's bring in a sequence node s key and left click to quickly grab a sequence node. And just like we did before, we're gonna build a little little bit off Thea, then zero branch and then off of the event one branch, these then zero branches going to deal with our secret wall. So let's right, click. Let's get all actors of class. Get all actors a class click this drop down. We are referring to our secret wall secret wallop. Here, let's drag out of the out actors that's gonna get all secret walls for each. We want the for each loop. Make sure you hook in the execution wire and then, for each of these, we're gonna drag out of our ray elements. You know, get our mesh. Once again, I suppose that could have copied and pasted a lot of this from our lens on function that we created. But that's okay. We get toe redo this again, see how this is all flowing together and let's set the material Practice makes perfect. And the material we want to change this back to is the original, which is our brick underscore. Clay underscore Old All right, so that's looking good. Let's now work under the then one output pin. Let's get all actors of class, get actors, actors of class. There it is. Get all actors the class here. We're gonna be dealing with our platform. Get all secret platforms, drag out of the out actors and bring in another four each loop. Let's drag off the array element and get our mesh. And much like we did before, we're going to drag off of our mesh. We're going to set the visibility. And whereas before we were toggle ing it on here, we want this unchecked. We wanted to not be visible. Let's drag off our mesh one more time. Let's set material. Let's set our material back to our brick clay. Well, actually, we don't even need to set of material for this because we are setting it hidden. So this is this is technically, not something you need to do if it's visible, you don't even need to see the original material on it, so it doesn't really matter. In fact, I think I'll even skip that step right there. But let's drag off of our mesh and let's do sets collision enabled, and here we are going to leave it as new collision. We do not want to collide with it. If we can't see it, let's compile and save, and I'll try to frame this all up so you can see exactly what we have for our lens off function right here. Here is the first part of the lens off function that's eject from player that is in the engine Sounds, by the way, of course, slot in with everyone sliding over to the rights. Here is the right most part of our lens F X off and then our lens FX on looks kind of like this. That's the first part. And then the second part make sure you got all the appropriate box is checked in terms of like the visibility and whatnot I'll scroll down. This one's a little bit tough to see and right there, okay, I'm going to say this one more time Now. We can't actually check this out yet because we're not actually calling these functions yet that we will get going soon enough. But that will do it all for this video. Guys, we will see you in the next one. 135. Lens - HUD Animation: Welcome back, everyone. In this video, our goal is to create an animation for our white magic Ready text That is this ready text right here that we're gonna need for upcoming scripts because we're gonna make the ready text. And this button, Actually, we're gonna make it vanish when our white magic is activated, and then we're gonna have it animate back on after a cool down period has passed. We don't want this to be showing ready when it is actively being used. So we're gonna be working in r W B P hut here. So if you haven't already done so, come into this directory and have your W b p hut open. And with that open, we're gonna come out under our animation section in the lower left, we're gonna click this green button to add a new animation, and we're going to call this W magic. Ready? A lot of animation work here inside of our widget blueprints. You guys are gonna be pros at this by the time we're done. So hitting. Enter on that. Let me move my timeline slaughter all the way to the zero second mark. We've got our w magic ready animations selected. What do we want to change over time here? Well, the first thing I want to change is with our w magic button. That is essentially that. That trigger button this l'd trigger button right here. We want to change this scale of that over time. So let's scroll on down in the details panel with that selected until we get to a render transform section. And let's click right here to add some skill keys now down below. In our timeline, it says the W magic button can be modified overtime. Let's click here to expand out, are transformed in scale parameters. And there we see some scale keys at the zeros. Second mark at the zero second mark. We want the scale to be zero in the x n of the why. I'm then going to move my timelines lighter over to the 0.1 2nd mark. Now, this is rather squished on my timeline. Let me just hold down control in mouse wheel up to kind of stretch out our timeline, and then I'm gonna right click so I can move this to the right and left like that just to give us a little bit more space here with it Said to the 10th of a second mark. I'm gonna add some more skill keys, and I want the vow or the scale here to be 1.5 in the X in in the wife. Then I am going Teoh, drag out my timeline. Slatter Here to the 0.2 2nd mark. We're gonna add some more skill keys. And here the value is going to be one in the X and one in the Why, Okay, I'm going to do similarly for our text is well are ready. Text. I'm gonna move on a timeline. Slider Back over to the zero second mark. I'm just gonna collapse r w magic button track for the time being. So I've got a little bit of space down here. Let's go ahead and select my w magic tax. The one that says ready. It's going to stay ready. And in the details panel, let's find our scale settings once again gonna click right here to add some keys for it. They're now it appears in our timeline R w magic text transform scale There have clicked to expand those at zero second mark. I want this to be a 00 at the 10th of a second mark. Gonna add some more keys for it by clicking that plus button setting the X to 1.5 and the wide to be 1.5. And then at the 0.2 2nd mark, let's add some more skill keys. X will be one, and why will be one as well? So if I set this timeline back to the front here by clicking right down here, I can play this and you can see how it is going to pop it on out like that. Now I know are l trigger button. There is just kind of disappearing at the end. Don't worry too heavily about that. We will make sure that that is. Well, we should worry about that, because that is, actually I tried setting it for our w magic button here. Scale to be one and one. Apparently, that did not take. So we do need to worry about that my bad. But there was something else we had going on there. But anyways, note that with both of these tracks exposed here at the zero second mark, I got the scale set to be zero and zero at the 10th of a second mark. We got upset to be 1.5 and 1.5 and then at the 2/10 of a second mark, they're all set to be one. So that is how our animation is going to look when our white magic skill is ready to be used again. Alright, guys, let's save that. That will do it all for this video. See? Win the next one. 136. Lens - Script #1: Welcome back, everyone. Well, over the course of the next few videos here, we can go about scripting the functionality for our lens of truth. We're gonna break this out or at least six videos here so that we can break it up into doable chunks. Ah, goal in this very first chunk is to create the initial part of our lens activated script. Now, we'll start by checking if we have enough manna to actually use this magical skill. This is all gonna take place inside of our BP player here. So come to this directory, double click on your BP player to open her up. And because we are dealing with white magic now, I am going to create a whole new graph for this. We've got separate graphs for our move Set are black Magic. Let's create a brand new graph over the my blueprint panel plus new graph. And I'm simply going to call this white Magic. The only reason we're doing this to help us organize all of our scripts. Okay, so now we're on our White Magic tab. I'm going to right click in. The first thing I'm going to do is create a custom events. We're gonna add a custom event, and our custom event will be used Lands of truth. Now, eventually, we are going to create a call for this custom event. But we're not worried about that just yet. So when we dio usar lens of truth, the first thing we're going to do is come under our variable section year white magic, lens of truth. We're gonna find out. Are we already using the lens of truth? So let's get this drag off of this. Bring in a branch node. And if we are not using the lens when we call for this custom event to happen, the first thing we're going to do is check if we have enough. Manito actually use the magic. So we've got this function here in the my blueprints panel. We created this Ah, long time ago, I could drag this into the graph, or I could right click and type in check if you can search for it by name too. So there we go. So if we are not already using our lens, we're gonna check. Hey, do we have enough manner to use this magic now? The magic attributes I gotta plug something into here I need to find under my lens of truth variables the lens attributes. Let's drag and drop that onto here. And just as a quick reminder here, So what this function does if I double click on it, it will open this up and it will show me that were just checking to see if we've got enough Managed to actually use the magic. That's essentially what's happening inside of this variable or not, this variable dysfunction rather. Okay, so if we do have enough manatee use and that's what it's going to evaluate, we're gonna drag off of this and we're gonna type in and we're looking for in and bullying here. Not only want do we want to check that we want to check if something else is to her False. We're gonna bring in our lens cool down time percentage drug that in. We're gonna get that and we're gonna drag off of this and see if it is equal to. And I'm just typing in an equal sign. We're looking for this equal to float. If our lens cool down, time is equal to zero. Basically, have we cool down our wait time between White magic uses here. So if both of these things are true, let's bring in another branch here. Shall we branch? Some of these red wires are hard to see with that black background right there. So if that is true, what we're gonna do offer the true branch is we are going to update manna. And here's its function that we created earlier. We're gonna update our mana, and we need to plug in our magic attributes here. Let's plug in our lens attributes. And again, if you want to see with this custom function does you can double click on it. It shows how it's updating the amount of mana that we actually have. Let's close out this function And if this is false, if either these false so we don't have enough man or our lens cool down time percentage is not equal to zero. I'm gonna drag off in type in play a sound to D and the sound that I want to play here is due to do to do To do it is an insufficient man a sound and I don't see it right away. But if I click my inherited variables. Well, where is that? Let me do a search for it. I thought I had it in here in sufficient. Ah, it's under my magic general category. That's where I'm looking for this. So let me come under my variables. My magic general category Way down here. We had this SFX insufficient man of variable that we created a long time ago. Here are the details for this variable. It is a sound base variable. We have the VR negative que slotted in as that sound effect, I'm gonna plug this into our place sound two d and then I'm gonna click this little drop down here, and I'm going to set the volume multiplier here to be a little bit more subtle. So 20.5 just kind of letting our user know that Hey, sorry. You don't actually have enough manna to Cassis, huh? All right, so that's currently what we have put together for this bit of script. I will frame it all up here for you. Let's quickly compiled to see if we got in years. We do not. Let's go ahead and save. And obviously mawr work to be done here. But guys that will do it all for this video we will see win the next one 137. Lens - Script #2: Welcome back, everyone in this video, our goal is to create a means of messaging. Are hud that are slotted White magic here is no longer ready in that it's actually being used. So we're gonna be working in a couple of blueprints. Here. You see me inside of my W b p. Hud up here. Also our BP player. If you don't remember how to get to these assets how to get to our W b. P. Huddy is this directory right here? Double click on it to open it up and to get to our BP player. That is this directory. Double click on the BP player to open it up. We're going to start off inside of R B P Player, and we're going to add something inside of our BP player known as an event dispatcher in Over in the my blueprint panel Way at the bottom. We've got something called event dispatchers. Um, I heard event dispatchers described by a Zachary parish and unrealistic kind of like Twitter. Basically, what it allows you to do is communicate between blueprints. There is a tweeter, so to speak in this case are BP Player is going to be able to send out a tweet. And any listeners that is subscribers to a Twitter account can pick up on that message and then do something. So here, inside of our BP player, we're gonna add an event dispatcher by clicking this plus event dispatcher, we're gonna call this toggle W magic ready message. So this is kind of like saying, Hey, we just established a Twitter account. Okay, Next, what I want to do is here inside of our white magic tab. Where, where, Where we were creating this script in the previous video. We're going to come off of where we are updating our mana, and we're gonna continue on here a little bit. We're going to add a sequence node by holding down the S key and left clicking after we update the manna in this whole chain. When we are trying to use our lens of truth, which this is still remaining. Ah, hook up to initiate that, By the way, we're gonna update the manna, and we got a sequence note here, and I'm gonna add a couple more pins on this because eventually we're gonna be doing multiple things off of the then zero pin. I want to bring in our w magic. Ready? Let's drag off this and type in W magic ready. We've got this Boolean variable. It's in our player info category over here. B w magic Ready. So that's another way we can find it. I want to set this and we're gonna set this to false because it is no longer ready. It is being used at this point. Then after this, I want to bring in our event dispatcher here that we just created this toggle w magic ready message. We're gonna drag it into our graph like this, and it's going to give us a little sub menu here. What do we want to do? Well, we want to call this. We're gonna call this. So think of this as our BP player just established a Twitter account right here and now they are sending out a tweet to anyone who is going to be subscribing to their their Twitter feed here. Okay, so after this, we're then going to find that function that we just created our lens fx on drag that into the graph and we're going Teoh, play our lens f x on function. Okay, so this right here, I'll just left click and drag tap to see key and call this lens of truth on. Okay. And so with that done, let's compile in save. And now we're ready to move on due to our w b p. Hud. So again, here in R B P Player, we established our Twitter account, so to speak. And here we're sending out a tweet. Okay? Now we want our W b p hud to be to be able to listen out and receive that message. So jump on over to our WPP. Hud, let's jump on over to our graph tab. Currently, I got over to this function. We want to get over to the event graph portion of our tab. Okay, so we've got this event constructed going on here. We got a few things going off of our event. Construct a reference to the player playing some hut animations. I wanna build off of this sequence. Note here. This then to pin. So I'm just gonna bring these on down a little bit, just for ease of access. And what I want to do is I want to drag in a reference to my player. So under the variable section appears where we created a reference to our players stored it in a variable under our variable section. We confined our player. I'm gonna drag him into the graph right here. Get the player and I have our player. I'm gonna drag out, aware and type in a sign w actually a Scientology goal. Here is our sign toggle W Magic Ready message. This is the event dispatcher that we just created inside of our BP player. So when I click on this, it's gonna bring in two nodes. It's gonna bring in a bind note and a custom event note, and it gives us this name right off the bat, which I'm gonna be fine with and what this is going to allow us to do off of event construct. If we wire this in here, what we have just done here is we have said we have basically made it so that are W B. P. Hut is now subscribed to this Twitter account. Our players set up that Twitter account that we called toggle w magic ready message. And upon this wbb hut getting constructed, it's going to listen out for any tweets that come from that event dispatcher that is getting called currently right here in our BP player. So when this gets called over in R B, P player, R W B P Hut is going to pick up on that and then it will fire out of here to do some script . So what do we want to have happen? Well, after we drag off here, I'm gonna bring in a flip flop node and a flip flop note. If you don't know how it works the first time this event gets called, it'll go on a than the second time it gets called. It'll fire out of B than A than B with every subsequent calling of this message here and out of the a message are the A. P. And I should say I'm gonna drive, got aware and typing set visibility and I want to set the visibility of R w magic ready W magic ready? Where is it? W magic ready? W magic ready? Don't see it. Let me jump back to my designer tab. My w magic Ready text. So there it is. W magic ready have got selected here and the reason I don't see it over my graph here is because I do not have is variable checked here. So let's go ahead and check that. And now that we have is very well checked over in the graph, we confined w magic ready? Where is it? W if we call the w magic texted me not. Yes, w magic text. So that's the one we're looking to bring on over. We're gonna get that. We're gonna plug that in as the target, and we're going to say that we want you to become hidden like so. Also, I'm going to bring in a reference to R w magic button. Here. Get that because we want that to be hidden at this point as well. However, the second time that we get this message called, we want to do something else. Remember the first time that we receive this tweet, it's going to set the visibility Now, off are ready. Text and already button, That is this left trigger button right here. It's going to set them to hidden. They're gonna go. Bye bye. The second time this is gonna get called. We want to do the opposite. We want to make them visible. So I'm gonna duplicate this set visibility function right here and get hit Control C control V out of the B. Plug this in here. Set the invisibility now to be visible, and both of these will be plugged into the target. Now, Right now, the Onley time that this is going to be receiving a tweet is right here in our BP player. We just sent out this message earlier from this portion of script. In a few videos time, we're gonna be making another call to toggle the W magic ready message to essentially fire this out again so that we then fire out of the B output. So for now, we've only got it set up to call this one time and to set this hidden. But eventually we will set this back to be visible. You're just gonna have to be patient and wait for a few more videos. Okay, So after our said visibility down here, I want to do one more thing. I'm gonna drag off and say play sound two D. This is just a little sound effect to accompany this and the sound effect that I want to put in here is going to be click on button. Q. This is an engine content sound. So again, if you don't have that available to you, make sure you are showing engine content and you will have it as well. Okay, so with that, let me just kind of bring these notes down a little bit. Gonna left click drag out kept Seiki. Put a common box around all this, It says. Sets White magic ready message and button on the hood. Sure, I'll set this to be green as well, just to be consistent with what I've done before here. OK, and finally, let's go ahead and compile, See if we made any mistakes here and save, and that's going to do it all for part number two of our lens scripting. Still plenty more to be done, but that will come see you in the next video 138. Lens - Script #3: Welcome back, everyone in this video, we're going to continue on creating some or script for our lens of truth skill in this video. Specifically, we're going to be creating a camera effects to play once our lens of truth magic has been turned on. So we did a little effect. You may remember a few videos back where when we turned our lens of truth on and off the camera sort of zoom Dan zoomed out. It was a real subtle effect, but it looked kind of nice. Let us know. The user know that something has taken place. Something different has taken place. All these subtle effects really add up. Let's get right to it. We're going to work in our BP player for this one. Here is the pathway. How to get there. Double click on your BP player and we're gonna continue working on in our white magic tab over here. And if you don't see that, remember, you've got your graphs tab over here. You can double click on White Magic to open that tab. And here's where we were building out our lens of truth skill. We had this sequence note right up here where we built off this lens of truth on section right to the right of This is where we are going to be building a timeline that is going to be used to control our camera effect. I'm going to right click in some empty space and type in time line and we're going to add a timeline. Let me zoom on up. We'll hear a little bit, we'll call this lens camera FX, and this is a special know that allows us to double click on it. And when we do, we open up our timeline editor here, let's add a float track and name it Alfa, and this is gonna be a really short tracks. I'm gonna change the length here to be 0.15 seconds and you can see that white portion of our graph has now shrunk to reflect that the length of our timeline here is really short. I'm just going to right click to center it up here. Hold control and mouse wheel INGE's to zoom on up a little bit. Okay, so I'm gonna add two keys to this. I can hold down shift in left click that will add a key and I can also right click to add a key two different ways to add keys here. Long story short. You wanna have two keys out here? Let's select our first key. And with the first key selected, I'm going to set the time to be zero in the value to be zero. And for our second key, select that so that it's yellow. Let's set the time to be 0.15 in the value to be one. So we're going from. And if I click this zoom to fit vertical, you can now see both these keys and view. So we're going from a value of zero to a value of one over 10.15 seconds. That is going to be a very useful for us. As we make our way out of this timeline, let's click back in our white Magic tab. So now we got this timeline within Alfa Output. How can we use this output? Well, we want to drag out of our Alfa here and we want to search for alert Nude. We're looking for float, learn up and the tool tip even tells you what this does it linearly. Inter plates between A and B based on an Alfa 100% of a when Alfa is zero and 100% of B when Alfa is one. So what that is saying And it plug it into the wrong input for us. Some gonna hold down cult and left click. We want to plug this into our Alfa value here. So what this is saying is when When A when Ah, we are at a 100% of a when Alfa is zero. So our timeline remember, starts any value of zero r Alfa is zero, meaning that our return value will be 100% of what we plug into A and the value we're gonna want here is 90 and you'll see what we're gonna do with these values here in just a little bit. And then when we are when Alfa is one, we are going to be at our value of B 100. So we're going between value of a at zero seconds to value of B at 00.15 seconds. That value is going to change from 90 to 100. Let me show you exactly how this works. We're gonna bring in our side of you camera, drag this in and off of our side view camera. We're gonna drag off of this and we're going to set field of view so f o. V. Or feel the view is essentially going to give us a sort of zoom in or zoom out effect depending on what kind of number that you plug into it. Now, how did I know that I could even modify this about my side view camera? Well, if you select your side view camera over in the components panel over in the details panel , you have a field of view property that you can change and you can see that it defaults to 90. So it's no mistake that I'm starting at an a value here of 90. Okay, so I'm gonna take the return value here and plug it into our new field of view here. And as we update our timeline here, we're going to plug this into our set field of view and out of our sequence node. Then one is doing all this bit of script or the then zeros doing this bit a script that then one we're gonna play from start this timeline so very rapidly. Over the course of 10.1 defy seconds. It's going to go from an F O. V A camera FV of 92 a camera field of view of 100. Okay, that's not all we want to do. I also want to drag off of this one more time and bring in another alert note. I'm looking for a float blerp and again it's going to have it plugged into the wrong one. By default. I'm gonna hold down the altar key and left click to break that. Let's plug this into our Alfa right here. And for this, I'm gonna have my A value B zero and my be value is going to be 00.0 or not. 0.0 ages 0.8. We're gonna use this Alfa for something else. My side view camera. I'm gonna drag off of this one more time and I'm gonna type in post process settings. So what I'm looking for is a setting of post processed settings. That guy right here now post process is basically a visual effect that you can add to your camera. You can do all kinds of post process effects on a camera things like just simply coloring your camera, a certain tint. You can give it sort of that grainy television sort of filter all kinds of things that are way beyond the scope of this video. But what we are going to change? One thing about this one of our post process settings. If I dragged backwards off of this, I want to make a post process setting that's gonna give me this note in effect. And if I click this drop down, you can see that there's nothing here because we need to specify over in the details what post process setting we want to add to this make post process setting. Note. There are so many things that we could change. This is sort of a special Notre. We have to tell it. What do you want to change? Well, there's one called vignette intensity, and I'm just going to search for it up in the details panel to make my life easier. Vignette intensity. There it is right there. If I click this, you'll now see it added to my make post process setting node, and I want to plug in the return value to my vin yet intensity setting. What vignette intensity does is it sort of creates this shadowing effect around the borders of your screen. Kind of like you're dreaming. That's the kind of effect I am going for here. And once we get this all fired up on working, I'll point that out to you. So let's plug this execution wire into our set right here, and that is looking pretty good. Let's drag out a marquee selection around this bit of script. Tap the Seiki and I'll call this lens active camera. Okay, so this is a sort of special camera effect that I want to do. When we activate this camera, we're gonna change our cameras Field of view from 90 to 100. And we're also going to do this sort of vignette intensity, this sort of sort of black shadowing around the perimeter of the screen. But when I deactivate our lens of truth ability, I want to undo this effect. So how am I going to do that? Well, right in front of our timeline here, I'm gonna right click, and I'm gonna add a custom event, and I'm gonna call this custom event lens De activated and I'm gonna plug this into the reverse input of my timeline. So this is essentially going to play the timeline backwards to undo all of these settings. So our F O V, which changes from 90 to 100 will now go from 100 back to 90 and our vignette intensity will go from 0 to 80 when it's first played. And then when this gets called, it will go from 800.8 back zero. Okay, so this is a custom event. Now, something has to call this custom event for actually to fire off. And one of the ways that we're going to de activate our lens of truth is by basically using the lens of truth again. So we have this thing where we can actually activate it. But we can also manually deactivated. So when we do eventually activate it, this is going to be set to true is using the lands is going to be set to true. Now, if it is true that we are using lens when we press the appropriate button to eventually call this event, I'm going to drag off of this and type in lens De activated when we call that lands deactivated. There we go. Spelled it wrong. So again, when we eventually fire this off, we're gonna be checking. Are we using the lens of truth? If we are not already using it, it'll evaluate to false, and we're gonna check to see if we have enough magic and eventually fire this all off. Now, once it is activated, we're then going to be checking. Are we using it again? If we try to use it again and if we are using it, we're going to de activate it. So essentially, we're gonna be able to title this one on and off manually if we want to again. This is just going to be one of the ways that our lens can be deactivated. All right with that, let's go ahead and compile and save guys. That should just about do it for this one. We've got a comment box around all this. Still plenty more work to be done. But we're making strides. Seawall in the next video 139. Lens - Script #4: Welcome back, everyone. Well, we are making strides here getting our lens of truth skill working in this video. Our goal is to utilize a timeline to modify our lens active time percentage variable. That's this guy right over here, As this is value that are W B P magic timer. This widget right here is bound to whenever we use this skill and that's it's going to drive how quickly that active time eater drains once the skill is active. So you don't need to do this on your part. But right now I've got my W b p magic timer open. And if you remember right, we had this Progress bar bound to a function. And if I look at the function, this is being driven by whatever the value of R selected white magic is, whatever that selected white magics lends or active time percentages in this case were focusing on the lens active time percentage. So we're gonna use a timeline to manipulate this variable over in R B P player. So let's jump on over to our BP player, and if you aren't already here again, you can locate it by coming under this directory BP player. Open it up. We are in our a white magic tab. And this is what we have put together so far for our lens of truth skill. We're gonna be working off of this sequence node right here once again. But we're gonna be working down in this area, so we're going to create a timeline, right? Click Search for timeline. It's always this bottom one down here, and we're gonna name this timeline lens active timer. And with that, I'm going to double click on it to open it up. We're going to add a fellow track once again and this flow track, we're gonna call lens active time percentage. I'm going to change the length year from five seconds to eight seconds. Now the length of this track is going to be critical. This is what's actually going to determine how many seconds it's going to take for your lens active time, meter to drain, and thus undo our lens of truth. Skill deactivated, if you will. So, with that, let's add a couple of keys in here. I'm gonna shift and left. Click One time shift and left. Click Another time doesn't really matter where you click for now because we're gonna hard set these values. Select your first key here. The 1st 1 is gonna be set at time zero and the value is going to be one, whereas the next one we select here is going to be at a time of eight seconds and the value is going to be zero. And if you click your resume to fit here a little buttons here that'll frame up what this is going to look like. So over the course of eight seconds, we're going to go from a value of one to a value of zero. Why? From 1 to 0? Because our lens active time percentage here, which defaults to one, represents a full meter. Remember, are W B P. Magic timer is being bound to that variable here in his progress bar. When it is one, it is all the way filled. But when it is zero, it is all the way empty, and any values in between here show some variation as to how full it is. If it's 00.5, it's gonna be half full, etcetera. Okay, let's jump back to our BP player here. We can exit out of this timeline here. We don't really need that anymore. Let's actually exit out of our other timeline from the previous video. So here is our lens active timer timeline, and you can see we now have a new output. Sweet. Okay, so with that, let me flip my page notes. Here. We got this sequence node with several pins. We're gonna take our then to output, and this is gonna plug into our play from starting. It's very important that you plug it into the play from start as opposed to just the play because we always want to play this from the start whenever this is going to get called. Okay, So next, what we're gonna do is bring in our lens active time percentage, variable. I'm gonna click and drag it into my graph. We want to set this, and we're gonna set this to be whatever our lens active time percentage is determined by from our timeline. Okay, we can take our update here. And as our timeline updates, its going to modify our lens active time percentage value again. At zero seconds, it'll be one. Then over the course of eight seconds, it's going to drain this all the way down to zero, Which in turn is going to drive how filled our meter is in. W B P W Magic timer. Okay, let me, actually Ah, leave a comment on this note here too. Just as a reminder for you. Let's right. Click on this and leave a node. Comment. I'm gonna write Length of track determines lends time allowed must plug into play from start. So if you want your lens ability to last longer than eight seconds or shorter than eight seconds, what you will want to dio is change the length of your track. And also, when you change the length of your track, make sure that you update the time for this second key here just f y I If you're not happy with their eight second count here, Okay, so now we need some way to stop this timer. If we manually turn off this ability again, this are white magic skills were going to be able to manually turn them on and off. Um, a swell as them being auto turned off after eight seconds. So I'm gonna right click right in front of our timeline, and I'm gonna create a custom event. Add custom event. We just did a search for that up there, and I'm gonna call this lens timer. Stop, exclamation point and we're gonna plug this into the stop input of our timeline. Of course, nothing is calling this yet, so we will deal with that next, Right up towards the beginning of this growingly monstrous script, we're gonna make it so that if we are using our lens of truth, we're not only gonna call our lens deactivated, but we're going to drag off of this in call lens timer. Stop again. The reason we're doing this is because we can manually deactivate this if we're detecting that, were already using it and that we eventually call this again. We're going to say, Hey, Lens, you're deactivated and we want to stop our lens timer. So this is making a wireless call right here, Over to okay, this custom event, okay? With that in place, we then need to you. Let's see you stop my page and notes right here. My lens timer. Stop. Okay, we're going to add another custom event. Sorry, I'm in the wrong part of my graph. We're gonna Add another custom event right up here. Right click at a custom event, and we're gonna call this one lens timer up, and this is gonna plug into our lens deactivated in our lens timer. Stop! Now, what is calling this custom event? Well, when our timer down here are lens active, timer, this timeline that we just created is finished. We need some way of shutting this all down. Calling this in calling this well off of our lens. Active timer timeline here. We've got this finished output and weaken drag off of this and do a search for lens timer. Stop that custom event that we just created. So let's kind of move this like that. Notice finishes being plugged into this. So this is making a call when this timeline is finished to here, which is then going to make a call over to this custom event. And this custom event Lenzi activated is going to call this right here to reverse our camera effect and lends timer stop is gonna make a call over to this custom event to stop our timer. Okay, Hopefully, that wasn't too confusing with that. Let's just drag out a marquee selection around this section of nodes left, click and drag tap to see key, and I will call this Well, let's call it lens active timer and let me put eight seconds in parentheses. Just so it's clear how long this currently is. Move that. Like so and then up here, where we've got these three notes kind of up towards the beginning. Let's just left click around the East three nodes and I'm gonna hit the sea key and I'm going to call this our lens of truth off. All of these deal with turning our lens of truth off so kind of good to just separate those just for organizational purposes. All right, let's go ahead and compile and say that looks like we are air free guys that will do it. Offer this video. Still more work to be done, but I'm excited to see where this ends up. See you in the next one 140. Lens - Script #5: Welcome back, everyone. In this video, we're continuing on our lens of truth scripting journey. In this video, we want to do a few things. One is we want to call our lens off FX function that we created a few videos ago. And secondly, I want to add a little bit of a cool down timer after we use our lens of truth ability so that we can't just spam it and turn it right back on again. But before we get to any of that here inside of our BP player in our white magic tab, where we left off in the last video, I just want to point out one unnecessary bullying that I thought we were going to use earlier in the course. But we're actually not many, many videos ago. We created this B w magic ready, Boolean variable. And the intention was we're going to use it to toggle on and off already message. But I decided to go this event dispatcher route instead. So, long story short, we don't actually need this setting of the w magic ready. Ah, node. Right here. When we turn on our lens of truth and were studying that to false. Instead of just deleting it out here, I'll let it live just in case. At some point we decide we need it, but I will delete it out of this script. So say bye bye to that guy and then make sure your sequence note is still plugged into the rest of this. Okay, So back to business here. First things first. What I want to do off of this lens of truth off bit of script is we want to call our lens FX off functions So it's drag and drop that into our graph here to call that let's bring our common box around that as well, so that whenever our lenses deactivated or lens timers up, we're making sure that we call this function. And if you don't remember what this all does, you can double click on it. It's basically going to flip this bullying back to false places. Some sounds set the visibility here. Ah, fade out this sound as well, and it does seem more stuff related to you, showing and hiding of materials in collision. All this kind of jazz. Anyways, let's exit out of here. So that is all well and good. Let's create a timeline for our lens. Cool down, timer. And just to kind of re orient things a little bit here, um, I'm gonna move all this up because we're gonna be using this timeline kind of up in this area. The grass. Let's move this on up. Move this on up. Like so in right off of our lens FX off. Let's right click here. Do a search for a timeline so we can add one of those guys and I will call this timeline lends Cool down, timer. Okay, so let's double click on this guy to open it up. And we are going, Teoh. Well, the length track of five seconds is gonna be perfect, cause that's how long I want this cool down to be. So that's all. Well, let's create a new float track. However, we will call this our lens Cool down time percentage. We're gonna add a couple of keys here. Right click at one key right click. Add is second key. Doesn't matter where you add them because we're going to hard set their values. The first key here, we're going to set to be a time of zero and a value of one in the second key we're going to select here. We're gonna set that to be a time of five seconds and a value of zero again. You can click the zoom to fit to see where those two keys reside on your little timeline here. Okay, so with that, let's exit out of this tab. We don't need it anymore. There, we see this output off our lens effects off, turning off our lens of truth. We could plug this in right away. We're gonna plug us into our play from start is, well, kind of important to plug it into play from start. And I will right click on this note and even leave a note comment that says this is what actually determines how long our cool down last this time lines going to drive this variable which variable? Well, we created this lens cool down time percentage many moons ago. Let's drag and drop this right on top of that output, and that'll hook up a center automatically. So as we update this timeline, we want to update the value of this variable. Okay? And once this is finished, we want to call. We want to call our event dispatcher once again. So let's drag and drop this into our graph. We bring up this little menu. What do we want to do with this event dispatcher? We want to send out another call that is, send out another tweet to whoever receives it. And if I bring on my w b p hud once again, I just want to point out a few things. Let's go over to our graph tab right away. You remember from a few videos back we were saying that this w b p hud is subscribing to our players Twitter Channel here here any time they send out a message for toggle w magic ready the first time, we're going to set that visibility for the text and the button to be hidden. However, when our lens of truth turns off, we're going to call this again. When all this turns off, we're gonna call this once again. And then when this event fires, we're gonna fire out of the B output of our flip flop, in which case we're going to make our text and our button visible to indicate that we are ready once again, but that's on Lee goingto happen once our lens cool down timer has finished. See how that works? Pretty fancy. All right, let's go ahead. Left, click and drag around these three notes right here. Attack that Seiki will leave a comment lens. Cool down, timer. This is gonna be five seconds. And now just to drive home this point of what we're supposed to be seeing visually are W B P Hud right here. If I jump back to the designer tab at the very top is I hear fire engines blaring behind me . So we've got this T cool down this W magic cool down hierarchy widget right here. This is going to be something that is going to drain down now. Over the course of five seconds, it's a matter of fact. You can see that this is bound to our get w magic. Cool down. This is gonna drain like this over the course of five seconds when we deactivate our lens of truth and just to go to the function here, you can see that this particular thing is bound to in this case, are lens cool down? When that is the magic that we have thought it. Let's compile and save. This is well in our BP player. Let's compile in save. That is well, we are getting their guys into the next video. We will actually make it so that we can see all of this come together. We'll see there. 141. Lens - Script #6: welcome once again, everyone. The goal in this video is to make it so that we can actually test out our lens of truth skill. Now, additionally, we're gonna hook up our white magic ready animation in the HUD to ensure that we alert the player that they can use their white magic skill once that cool down timer has expired. Let's not waste any time. Let's jump right to it by getting into our settings project settings. And first thing we need to do is add a new input action mapping. Let's click the plus button here to add a new action mapping. We're gonna call this white magic, and we want to use a white magic ability when we press either the right shift key or click this plus button to add another input that it can accept. We'll do the left trigger button on a game pad as well. Okay, so with this action mapping created, we can exit out of our project settings, and next, I want to do some work inside of our BP player if you don't remember where that is, here is the directory. How to find your BP player double click on it to open it up. And here I am in my white magic tab, which is located right here in the graphs portion of the my blueprint panel. Currently, I have some script in here for our lens of truth skill. I'm gonna be working off to the left hand side here a little bit. So let me just mouse wheel in and then right click and we could do a search for White Magic . There is that action event that we just created in our project settings. So I want something obviously happened when we press the right shift key or are left trigger button, but I need to evaluate something 1st 1st what I need to find out is what is are currently slotted white magic skill. And here in our my blueprints panel under the variable section, we've got our white magic slotted. Let's drag and drop this in. Let's get that. Currently I have mine set to none, which is fine. We could hard set it here, but I will leave it at none. Let's drag off this and type in switch switch on E white magic. So here is a switch. No, let's hook in this execution wear right away off the press event and depending on what we have slotted into our white magic slotted variable here we will fire off of one of these outputs. So if White Magic slotted is our missed, we will fire out of here when we press the right shift or left trigger button. Or if our white magic slotted is our lens of truth. Whenever we press right, shift or left, trigger will fire out of here Now. I currently have this set to none. So how does this variable get set to one of these other values? Well, if you recall right back in our w b P White magic menu and you don't have to open this up, I'm just here to show you again. You know, this is this is what our white magic menu looks like here, right over in my graph tab we are doing in the This is the event graph here. We're doing this select magic macro, etcetera. And when we are trying to select one of these, and I'll just kind of follow down our lens of truth here, there's this macro that you can double click on to see what that all does. But long story short when we're trying to select our lens of truth and set that at the very end here, we're saying in our player that w magic slotted should be set to the lens of truth. So here in R w Magic menu, this is where we're setting this particular variable in our BP player, and that is in turn going to determine which white magic skill we use when we press this button, the right shift or the left trigger. All right, so we've only been working on our lens of truth skill for now. So off of this I'm gonna drag off in type in use lens of truth. We're gonna call for this to happen. So what did we just two years to note that this says use lens of truth? And if I scroll on out here a little bit, here is my used lens of truth Custom event. So this is what is finally going to kick start the using of the lens of truth and do all of this script right over here that we've been creating the last few videos. Okay, so think of this is like a wireless connection here. I could have just as easily this would do the same thing. By the way, plugging this into this branch and getting rid of this and this would be fine. This is doing the exact same thing. And let me just try to make this a little bit more clear right here. This is doing the exact same thing as this is by doing a wireless connection. We're simply calling for this custom events toe happen just keeps things a little bit cleaner. Let's actually put a comment box around all of this. Left, click and drag tap the Seiki. Let's call this use white magic and I'll compile and save your quickly. Now, for the next part of this, I want to hook up our W magic Ready Hut animation in R W B P Hut asset. So why don't you jump on over there by coming under this directory? Double clicking on your W b P. Hud. There we are. Let's jump on over to the graph tab here, and currently I have one of my function tabs open. Let's go over to the event graph, and if you don't see your event graph. You can click it right over here in the my blueprints panel, and we've got this bit of script put together. Ah, most recently we put together this sets white magic ready message. Um, and we're going to be working off this lower portion of the script right here. All we need to do is extend out this script a little bit further. Want to grab my animation here in the variables panel? We should have a white magic ready animation that is right there and again. If you don't see this, make sure you click this little arrow here to reveal all your animations over here in the designer tab. Let's drag this on out, plop it into the graph. We're gonna get that, then dragged off of this and say, Play animation. Let's hook this in, like, so number of loops to play one. I will drag out a comment box step See key. And we'll call this our white magic Ready animation. Oh, why not? Why don't like color this green just to stay consistent? There we go. And now we are ready to test this out after we compile and save. So I wanted to create a little bit of a test scenario here. And I did some prep work prior to starting up this video just so would cut down on time. I'll just let you know what I've done. So I have placed some bricks out here. These are my BP secret wall bricks. I got it from the actors folder here. I placed a few These in my level. Ah, few things to note here is I size these all up. So I place him in the level and I've got nine of them here total if I select them and I scaled them up like so, uh, two times the size and the X three times the size of the why and two times the size in the Z. And then I also placed some BP secret platforms out in level. Right now, I've got three of them. 12 and three. And the reason they all look like this is because if you remember right, I am hiding that Ah, platform mesh for the time being. Okay, so now to also test this out, I want to jump in and play and actually collected my various skills here, so I'm gonna go over and collect my lens of truth and my missed. And then I will set it to lens of truth, and we'll take it from there. Here we go. All right. So I'm just gonna run on over and collect my lens of truth. Got that? Okay, got that. And now you can see I don't have any white magic slotted yet. So I'm going to set some white magic here, so I'm going to hold over to the lens of truth and select that. So now if I press my right shift key, I'm using the ws indeed to control right now in the right. Shifty. I'm going to use to try to activate this. Let's see what happens. So you can see I can go through all of these right now. And also I have revealed my various platforms here, which I can't jump upon because I kind of box myself in here. I do notice a problem right now in that my lens of truth meter is not decreasing. So obviously a problem there to check out. Let me just deactivate my lens of truth here by hitting the right shift key can. Now we can see that that cool down meter in the upper right, decreasing. Okay. And then that ready text did appear back again. So let me use it one more time. Okay? Well, there is my meter. It is decreasing. Maybe I just wasn't paying attention to before, so now it finishes depleting. It should be shutting off automatically once that meter depletes. So let me just shut it off. Look in the upper, right? You're seeing that cool down meter over the lens of truth. Okay, let me try this again. Camera effect takes place. Let me auto turn it off. Okay, so the auto turn off worked, But when our meter is depleting the whole way, it is not shutting off. So let's look into that issue quickly jumping on into our BP player. Let's check out our lend script. So he was our our lens active timer. And so when this is finished, Okay, this is what happens when you name things to. Similarly, this should not be lens timers. Stop that. We're calling. I should be calling lends timer up. This is what I should be calling the custom event. Because when this is finished, this is going to make a call over to this custom event right up over here. And this cuts of event is going to tell her lens to deactivate. Call this lens timer stopped custom event, which is going to then tell this to stop. And everything should be good to go. So note that changed human air. My bad. This should be lens timer up off of the Finnish output of our lens Active timer. Let's compile and save and try this. Once again, I'm gonna navigate on over to collect. I really only need the lens of truth skill for right now. So there we go. We got it. And actually let me kind of reside over on this side of the platform because I want to be able to jump onto that as well. So I'm gonna set lens of truth to be my white magic skill. Okay, let me hit the shift key now to activate it. I'm gonna let it decrease all the way. Let's see if that auto de accent deactivates it now and it does. You can see the cool down timer in the upper right? Okay, let me try to jump on the platforms this time. Jump, jump, jump. Let's see if this removes collision like it should. I'm trying to use that white magic skill, but I can't during the cool down phase, and this looks to be working as intended. Now note my mess year. My platform here's a little weird in that that platform on the underside kind of looked a little invisible. But you know what? I'm not going to stress about that for the time being. The point is, we have this ability working as we want to now note, this is supposed to be walk through. I did not do anything with the collision by having it collide when you don't have the lens of truth ability on, um and the reason I did that is because I did not want to have to deal with the issue of what happens if you turn this ability on looks. I just kind of did a double take their If I turn this ability on and then it ends while I'm inside of it, I'd have to deal with that issue, so I chose just to make it so. The lens of truth kind of acts is a reveal. Er to show where there are walls that you can walk through Anyways, guys, everything now appears to be working as intended. I'm gonna finishes up by putting one big common box around our lens of truth skill. Here, tap that, Seiki. And I'm just gonna call this lens of truth. And you can see that because we are way too far away. There it is. One more compile and save. Great job, guys. That'll do it all for this one. See you in the next one. 142. Mist - Assets: welcome everyone. Well, in this series of videos, we are going to be working towards putting together our missed skill. And specifically in this video, our goal is going to be to import some audio files and make a few modifications to some existing particle effects that we're gonna be needing for our characters. Missed transformation effect. Now, before we get to any of that, I am just going to jump into an older version of this project just to show off what we're going to be working towards jumping and playing here, let me go ahead and make sure. Well, first, I need to gather my missed ability here, okay? And I'm also going to move or to the right to show you why we are going to transform into mist. So I'm gonna set my white magic to the missed ability, and then I'm gonna use it, and this is what we're going to see. We can transform in the miss and move around like so. And then when our timer ends, we can exit out of our missed. Now, why are we going to use this? Is because we've got blockers like this in our way. Saying need Mr Pass a gate, so note that he in humanoid form I cannot pass through it. But when in miss form, I can pass right through it. Pretty cool. So that is what we are going to be building towards. No need for us to be in this project anymore so we can go ahead and just close it out. And here we are, back in our version of the project. First things first. Before we get onto some particles, let's import a couple of sound files that you should find attached to this video lesson. After you download them, they should be in your downloads folder. I currently have mine in this directory. The two were looking for a W Magic Missed Active and W Magic Miss Transform. With both of those selected, you can select them both by control clicking simply, Dragon dropped them down into your content. Metroid Vania Audio folder. There they are. Exit on out of here and then go ahead and see of all. And that's all for the audio aspects of this video. Next, I want to work on some particles and we're going to be the working off a couple of infinity blade effects particle effects that I found. If you come under this directory right here, content infinity blade effects it's a long pathway to dig down into it. If you do a search in here for e x P l O this guy right here, that's the one we're looking for. And the reason I want to duplicate and borrow from this particle effect is because if we take a look at it, it's got this nice kind of like poof, smoky effect going on now. I don't want that blue ring or anything like that's We're eventually going to eliminate that. But that proof of smoke that you saw there, that's what I like. And that's what I want to steal from this particle effect. So with that guy located, let's go ahead and right, click on it and duplicate it, and we will call this pit p underscore Missed trans form. Now we don't see it anymore because I'm still filtering by this e x p l o. So if I just type in missed, I will find r p underscore missed transform. Now I want to move this to a new folder location right away. So with our sources panels shown and you can show it or hide it like this. Make sure that you've got the asset that you just created Here, located in this folder P Miss transform Now on the left hand side. Let's scroll on down until we confined our Metroid Vania Particles folder. Now all I want to do is simply drag and drop this inside of our particles folder here is going to say, Do you want to copy it here? Move here. Let's say move it here and it will be successfully moved. So now let's jump into this particles folder. There is RP Miss Transform. Let's modify through a few things about this show a double click on it to open it up. Well, doc it across the top here, and the first thing I want to do is, Let's see there is. I only want to keep two emitters in here. I'm gonna be cutting out quite a few. So the two that I want to keep are going to be this one labeled fast. This image right here and are one called particle emitter. This one right over there is to name label particle in there this one right here. So the spikes gonna get rid of that and you can click this little check boxer to exit it out. This particle emitter, the one on the left here. I do want to get rid of that. Let's exit right there. Ah, the one labeled Sparks. I want to get rid of that. So let's click right here to disable this emitter. There is one called flare Tail. Let's get rid of that. Now. You see, we've got this kind of puff of smoke. So the only two emitters that we want here are this particle emitter. It's got the camera offset module at the bottom and the woman says fast. Okay, so in this particle emitter right here, I just want to change one more thing. The initial location. That module right there. Got some specifications that I want a place for this. Currently it's got a Z offset of 25 50. I don't want any offsets here in the Z location, so I'm gonna set this to be zero and zero. And the reason I'm gonna be setting this is because eventually when I spawn this particle emitter, I wanted to basically spawn right at the heart, right at the center of where characters located not above him a little bit or blower, basically right at the middle. So that's why I am setting that. So I'm gonna go ahead and save this and this effect for Miss transformation should be good to G O. Next. I want to duplicate an asset from our soul city pack here, select or rather sold cave pack. So over in the left hand side here, I'm going to find my soul Cave a pack, and I want to go down on down to my effects. Double click on that. And the one that I am looking for in here is R P missed unlit. Still to not still nothing still too. Let's double click on this. My of course. My engines just legging here a little bit. We're gonna not double click. Right? Click on it. I'm sorry. Let's duplicate this and we'll call this p underscore. Missed with that guy created over in my sources panel Over here. I want to find my particles folder in the Metroid Vania section so I can left click and drag it right on into their We're gonna move it here. And with that move, I'm now going to jump on over to my particles folder here in my Metroid Vania folder. I can get rid of my missed word here. Don't really need that anymore. And let's double click our miss to open it up. There's a lot of things in here I want to change. So this is gonna be kind of the miss effect that we're going to be controlling around once we have transformed into Miss. Albeit I do want to make quite a few modifications, and most of them are going to come in this lit sprites, uh, emitter. So let's select are lit sprites spawned module. And then here I want to change our constant from 2 to 20. It's gonna make it a lot thicker. Next, let's G o r. Lifetime module here and in here. I want to change our lifetime module, the men to be a one second and the max to be three seconds. Like each one of those misty pieces, if you will, isn't going to live quite as long. Okay, Next, I'm going to select our initial size module and I'm gonna change our X max to be 1 50 are X men is going to be 50 and we're gonna set those across the board. So why Max of 1 50 z max of 1 50? Ah, Why? Men of 50 and Z men of 50. Okay, then I'm going to select our initial velocity module right here. Got some settings for this R X. Max is going to be five. The X Men is going to be negative. Five. We're going to set those across the board as well. So five for all the max is negative. Five for all the men. And if you really jacked up one of these values to be like 500 you could see what this does right now. I set my Z Max to be 500 so you can see it's floating up quite a bit. Okay, that's pretty good. Next let's go. The initial location module on my lips sprites the let most one here and I'm gonna set values of 75 for X max. Negative 75 for X men. And then I'm gonna go 75 for Why, Max? Negative 75 For why I'm in the Z. However, I'm gonna set to be positive. 25 Z and negative 25 for the sea. It's a little bit smaller. Initial location size here. Okay, Now I'm going to switch over to this right side lit sprites module or ah, emitter. Rather so I can modify some of the modules within this emitter. Each one of these columns is emitter. Each one of these rows here is a module. Let's go with the lit sprites spawned a module on the right hand side. Here. I'm gonna change this to B 20 as well. That's going to thicken things up considerably. Let's select a lifetime module and go to for the men and four for the max. And how did I arrive at a lot of these valleys? Well, ah, lot of experimentation, to be quite honest. Let's go. The initial size module next, the max for our initial size and the X is going to be 100 the men is going to be 50. We're going to set that across the board in the X y and Z. So 100 there, 50 here, 100 here and 50 here. Then let's go. The initial velocity module right there Let's that fives across the top here and negative fives for the men. So 55 and five and then negative five negative five in negative five. Just gonna left click in kind of Dr My Mouse into frame that up a little bit better. And then our initial location here for Arlette Sprites on the right hand side 75 75. That is exactly what we wanted. Yeah, these are bound together, which we see by that, plus a symbol. Let's go ahead and save this. And this particular particle effect should be good pending zero errors. All right, guys, we have some assets now in place. We've gotta miss transformation as well is a missed effect. One more thing. I want to do this p miss transformation. You can see the look of this looks way off. That's not actually what it's gonna look like. So if we restart our sim here and then capture a thumbnail and I did those rather rapidly I went, restart them captured thumbnail. Now, if I save this out and exit out, you can see that we've got a new thumbnail image over here. Toe better represent what it's gonna look like. All right, guys, that is going to do it all for this one. See you in the next one. 143. Mist - Components: welcome back. Once again, everyone in this video. Our goal is to add the components necessary to our BP player to sell the mist effect and give us unique control of our character while we are in mist form. Let's go ahead and locate our BP player. Here is the directory to find her double click on her to open her up. And we just want to add a few components here to get this all working like we need. First off, we should have. What is known is a floating pawn movement component. If you haven't already added this, you can get one of these by going to add components and just type in floating and floating . Pawn movement is the one you're looking for. This is what's going to allow us to move our character in space like you saw me do before without any sort of gravity applied to it. Anything like that. So the floating pond movement is what I'm going to be switching our characters movement over to when we when we are in miss form, ignoring our characters movement. So I'm just gonna rename this from floating pawned movement to Let's go, I'll name it missed pawn movement. That's a little bit more descriptive. And with that component selected, I'm also going to change our max speed here from 1200 2 300 Now, this is going to determine how fast that we can move while we are in mist form. Also want to scroll all the way down and make sure my auto activate is turned off because I'm eventually going to toggle that on while I turned my character movement stuff off. Okay, um, with that, I am going to get our next component. Let's go to add component, we're going to add a particle system. This we're going to call the FX. Underscore W magic underscore. Missed active. And what do you know with that guy selected over in the details panel, it's gonna ask us to slot in a particle. And we just created one called P underscore. Missed. That's the one we're looking for. P underscore. Missed. Now you also see our character looks like the old Peanuts character pig pen because got a cloud A smoker on him. Let's come under the auto activate for this particular component and say, Yeah, you are not going to be visible right away. So we made sure auto activators checked on. That's fine, but visible for our vfx here. We're turning off. We will toggle that on and off as well. Okay, Next we want to add another component. Add component. This one's going to be an audio component, and I don't really need this attached to Currently, I haven't attached my visual effect. Um, which It doesn't really matter here. But just because I'm you know, like that, I'm going to drag and drop it on top of my capital component so that it's not specifically attached to my particle, which doesn't really matter. Here, I'll set this TBS FX underscore White magic underscore, miss active. So we're going to have a particle effect and an audio effect of pretty much the same name here with this over in the details panel Over in the sound section. I just need to slot in our missed active w magic missed active and other things. I want to change about this. The volume multiplier here. This is gonna be a little bit quiet, so I'm just gonna amp this up a little bit by setting our volume multiplier to to and You better do. This is you Better scroll on down in set. Auto activates for this to be off. Otherwise you're going to be hearing that sound with that. Go ahead and compile and save. Everything is a go here. We've added our components and nothing more to be done in this one. See you in the next one. 144. Mist - Collision: Welcome back, everyone. In this video, we are going to be doing some work in our project setting, setting up some collision stuff so that we can make it so that our missed will pass through that gate that you saw a couple of videos back. Now I've got my BP player tab open across the top here, and I'm going to jump to it among a minute. I have my capsule components selected here. That's this capsule surrounding our player and over in the details panel. If I scroll on down a little bit under the collision section, you can see that our object type here this for this capsule component is considered to be that of upon now. This is important because when we collide with other things, that other thing wants to know. Hey, what is that thing that is colliding with us? And in this case, it would be a pawn. And based on the collision responses set in, that other thing were colliding with it would determine well, how are we supposed to treat a pawn if it collides with us and it may set it to block us or lap us? Ignore us, etcetera? in this video, we're going to be doing some work whereby eventually we're going to change our characters object type from a pawn to a new object type called Missed and were eventually going to make it so that our gate mesh that we create our gate blueprint that we create is going to ignore any object type miss so that miss can pass right through it. Now all that's confusing. Don't worry about it. We'll take it step by step. Long story short. Find your way on over to the project settings. And if you don't remember how to get there, you can just come under the settings right here, project settings. And once you're in here, you want to find your way on over to the collision section along the left hand side. Now we have a couple of object channels that we have created throughout this series of tutorials from way earlier. In the course, we created one called Black Magic and another one called Enemy. I just want you to note something here in R B P player right here down in our collision section here. We've got different objects. Responses weaken set for if we interact with something labeled as an object type black magic or something labeled as an object type enemy. Back in our project settings, we want to add a new object channel by clicking right here. We're gonna name this new object channel, Miss, in our default response to mist is going to be block. So let's just click accept here and next. I want to create a new collision preset. That's gonna be this area down below and actually before even get to that. If I click out of my you don't see missed show up down here, my BP player. But if I exit out of my BP player, open it back up. Double click. There we go. Capsule components down in the collision section. Now you can see we've got a new object channel down there for missed. Okay, let's jump back to our project settings. I want to add a new preset right down here, and I gotta click this little drop down arrow. So let's click this new button right here. We're going to create a new preset four. We're gonna name this ignore missed in our collision enabled here setting is going to be set to be query on Lee, and our object type here can remain world static. The description here we're gonna set to be our missed default collision response. And with that all done, I'm gonna change this. Teoh. Everything here is fine being blocked All. However, I want to change this mist right here to be Ignore. Now, eventually, when we create our gate, we're going to set it to have this particular preset, so that mist is going to be able to pass right through it. We don't have to do anything special, will have a collision preset already made so that we can set it so that Miss Convey ignored immediately. Now, what do I mean by that? Like, look, except here. And I go into my BP player one more time. I've got my capsule components that right there selected right here. My collision preset, which should be pawn. It currently says custom. But now, in this little drop down, I can set one to be, uh, excuse me. I'm gonna have to close on out of this to see this once again. So little knowing to see that refresh happen. Capsule components over in the details, Faneuil under collision preset. It's currently set upon. However, if I click this drop down now, I've got a new one for ignore. Missed. Now I want this my BP player to be set upon, but eventually my gate I'm going to set the collision presets to be ignore, missed. And when I do is going to automatically be set up to ignore. Missed. So let's set this back to pawn for the time being through scripting, we will do it. Do some toddling of our BP players object type here. But that is still to come. We have our project settings all like we wanted to a new object channel missed set to block and a new collision preset here of ignore Missed. Well, guys, that should do it all for this one. We will see you in the next one. 145. Mist - Player Functions: Welcome back, everyone. In this video, we will be creating two functions that we're going to be making use of when we script are missed on and off ability. So let's jump inside of our BP player here and over along the left hand side in the mind blueprint panel. Let's create these functions. So come under functions plus function, this 1st 1 will be called missed F X underscore on now you remember we did this for a lens of truths. We're gonna be doing a lot the same here. So with our Miss FX on function created, we now have a new tab across the top. And the first thing we're going to do when we call this function is we want we have a variable called Is using Missed It's set is using Miss. We're going to set that to be true, and you can find that in your miss section of variables. I found it. You could have just drag and drop this into here and done a centre, but I found it through the right click menu. Next I'm gonna drag off this. We're going to play sound to d The sound that I would like to play here is our missed transform. So I'm just gonna type in mist. Is that w magic? Missed transform sound effect and scrolling over to the right. We're going to drag off this. We're going to spawn emitter at location. What emitter you say? Well, how about are missed transform that one that we created earlier? We need to feed this a location. So let's get our capsule component. I'm gonna left click and drag this in, Gonna drag off that we're going to say, get world location. That's where we want to spawn that effect. Then after this, I want to grab our mesh are meshes that right there basically our character model jumping back to our function tab here. I'm gonna drag this into the graph, and I'm going to drag off of our Mecir and we're gonna set a visibility and the new visibility will be unchecked. Meaning hidden Now I also want to set the visibility for a couple more things are V effects W magic missed active. Let's drag that from our components panel into the graph and then our widget magic timer. Let's drag that one into the graph. You could drag off either one of the e. Then do a set visibility plug both of these into this set visibility. And this one, we're going to say yes, we're gonna toggle you on, so make sure you have that toggled on, okay. And mawr in this function, that's going to happen. We are going to drag in our missed pawned movements. Let's drag and drop this in here. Drag off of that and we're going to say, Activate, we're gonna activate that cause. Remember, we had a DE activated by default. That's not the only thing I want to activate, though. However, I want to activate my SFX W Magic missed active sound effects here. So to drag that into the graph hooked that into activate as well two for one activation. In addition to that, I want to grab our character movement component and drag off of this, and we want to de activate this one. So we're activating our miss pawn movement and were de activating our character movement. And then I'm gonna grab my capsule component here, drag out into the graph. We're gonna drag off this and I'm going to set capsule said capsule. Half height is one I want to set and we're gonna change our capital half height to be 45. Now, The reason I'm doing this is because if you check our capsule component right here in the view port, our capsule half height normally is 96. When I said it to 45 which I'll do temporarily here, it's gonna squish it down. So the reason I'm doing that and let me set this back to 96 before I forget is because our mist is not going to be as tall. Is this on essentially clamping down, cramping down the collision size there, jumping back to our miss effects on. Okay, I also want to drag off of our capsule component one more time here, and I'm going to set collision object type. And here is where I'm going to be changing our collision type to now be missed. So you remember, by default we are pawn. Now we're going to be labeling. This is not a pawn but were missed instead, that's going to be very, very important when we create our gates to pass through. Okay, so let me just kind of drop on back here and kind of walk you through our missed FX on one more time. Pause the video as you see needed Here. This is our w magic Missed transform. This is our p missed transform. Note that we are setting our mesh to be invisible here. However, we're setting our, uh, missed active in widget timer here to be visible. We're gonna activate our pawn movement are Miss Pond Movement. I should say, Miss Pond movement as well as our SFX missed active. We will be deactivating our character movement component and we will be setting our capsule components half fight to be 45 changing our object type to be missed Very important. Let's go ahead and compile and save that quickly. And now we're ready to work on our Miss FX off function, which we still have to create. Now, before we create that, I just want to point out that even while we are missed, the reason I said are half height here to be 45 is because we are still going to be colliding with some things. We're just gonna be allowed to pass through that gate. I don't want to make it all willy nilly. Is so you can basically pass through anything. Okay, so let's go ahead. Create a new function here. Function. This is going to be missed. F X underscore off. And for this function, let's drag off of this and type in is using Miss, we're gonna set that here. It's gonna be false to indicate that we're not using our missed Let's play a sound Play a sound to D The sound effect that I want to play here is going to be our miss transformation once again. So it's kind of that washing sound going into and coming out of that. Then we're going to drag off Spawn E Mitter at location. We're gonna spawn that Miss transformation one more time. Missed trans for my can't spell transform their ago miss transform. Of course, we got to feed this location, so let's do like we did before. Capsule components drag off. We will get the world location. Okay. Next we will grab our mesh. We will drag off of that in set visibility. Of course, this time we want to make our mesh visible once again because we can now see it. Then let's scroll over to the right here a little bit. We're going to get our vfx w magic missed active that visual effect right there and our widget timer. Suppose that could have cut down on some time here by duplicating that previous function. We just made drag off of either one of these. Let's do a set visibility. Plug both of these into the target. Only this one. We want to leave it unchecked because we're not missed anymore. So we're going to not have that visual effect, and we're not going to have that timer above our heads. Then let's grab our character movement component. Drag off this. We will activate this guy so that we can move like a person again. And let's find our missed spawned movements drag off of this and we will de activate this. And then let's grab our SFX W Magic missed active plot that into our graph drag off of this and let's type in fade out. So instead of just cutting the music off harshly, let's fade this out. Let's make our fate out duration be one second and then let's grab our capsule component once again drag off this. We're going to set capsule half height once again. And here we're gonna set it to be 96 because that is our default capital. Half height. Then we're gonna drag off our capsule component one more time, and we're going to set our collision object type. And here is where we're going to set our collision object type Back to pawn right there. Go through this one more time. Quickly. There is our missed FX off function. That is false, Miss Transform, Miss Transform Making our Miss Mesh Miss Mesh visible once again making this not visible. Our VFX missed active and our timer character movement, You are activated once again, missed upon movement. You are deactivated. Fading out our sound here and then setting our capsule back to what it was before. All right, guys, great job in this one. Let's compile and save. We've got a lot of prep work out of the way we are ready to script are missed ability. We will see you in the next video 146. Mist - Script #1: Welcome back, everyone. In this video, we are going to begin creating our transformation to miss scripts. Now, lucky for us, we can copy and paste our existing lend of truth script here to give us a huge head start. And then we only need to change out some custom events and variables, modify a few timelines and make a few adjustments to our game camera, and then we're done. Now, we're not gonna be able to fit this all into one video. So I'm gonna break this off over a few videos, But let's go ahead and get started. We're gonna be working inside of our BP player here, So if you haven't already done so come to this directory. Double click on your BP player to open it up. And here we are in our White Magic tab. And if you, for some reason close this out and don't know where it is over in the my blueprint panel, there is your white magic tab that we created earlier. And here is our whole lens of truth script that we made earlier. Let's go ahead and left, click and drag and drag out a marquee selection around all this. We're gonna hit control plus C to copy this. And then I'm gonna come down below a little bit and do a control V to Paste. So now we've got basically a duplicate scripts. Although you'll notice that if I zoom in on these duplicate a bunch of these custom events have warnings on them, and that's all right, because we're gonna be swapping all these out. So before I get confused between what is my lens of truth script and what's gonna be my missed script, I'm gonna go through and just re label all of our common boxes here to missed instead of lens of truth off, This is gonna be missed. Missed off lends cooled on timer is gonna be miss Cool down timer So forth and so on. Missed Missed active camera. All this is really gonna be the same. Come on now. There we go. No leggy computer today, please, Mr. Active Camera And one more Mike. Whole computers just chugging along. Today we will go missed active timer And there we go. You can see a bunch of our timelines here Need to have their names kind of redone is Well, I'll take care of that in a little bit. Okay, So what I want to do is come over to my lens of true script. And if I kind of take this very zoomed out few you're going to notice. I've got four custom events. There's one right here, One right here, One right here in one right here. So what I want to do down below is basically replicate these same cuts events sort of using those same names. Only instead of saying used lens of truth, I want to say use mist instead of lens timer up. I wanted to say, Missed timer up and so on and so forth. So let's start with this custom event at the very beginning where it says use lens of truth down below. I'm going to select this and over in the details panel. I'm gonna change this to say, use missed, okay? And you're gonna be seen me doing a lot of going up and down, back and forth. So where it currently says lens timer up down below. I'm going to change this one to be missed timer up and the custom event right over here that says lens deactivated down below. I'm gonna change this one to be Mr De activated. And then where it says lens timer, stop! That's a custom event at the very bottom. Here. I'll change this to B missed timer stop. So those are all the custom events, and now there's calls for each of these. So now I need to find out where all of those calls are and replace those. So if I go up to my lens of truth script, I got some calls for our various custom events here, here, here. And I know this is way zoomed out. Ah, there is one over here and I think I got him all Also, there's one way over here where we are using our white magic. And in fact, this is the one that kicks off our lens of truth script. Let's do this for our miss. We just created a custom event called Use Miss. So let's call that right here. Use Miss. That one is taken care of. Okay, now scrolling on back a little bit. Here is a whole bunch of different calls to various other custom events celebs drag off of here and where it says lens deactivated Let's do a missed de activated and let's be really careful here, making sure that we had this true branch plugged in right there. So let's make sure that our true branches plug in right there and now I can get rid of this lens deactivated instead of lens timer. Stop. I want missed timer Stop. Let's get rid of that now instead of our lens off FF lens FX off function. Let's bring in our missed FX not on Miss FX off function Really easy to make mistakes here , so be real careful about getting the right things in place. So that's looking pretty good right there. Let's scroll over to Ah, let's go Right here is what? We'll come back to that in just a little bit. Here is a lens timer up off of this timeline for the missed active timer with drag off of our finished year and do a mist timer up. We can now get rid of our lens timer up, so make sure you got Miss Timer on up off of this. Finished for missed active timer here, and I think that is pretty good there. Now there's still more things that we need to swap out here some variables and stuff. But if you notice Look at all my timelines here. They're all named rather wacky. So let me go ahead and rename those accordingly as well. So starting with our timeline very much at the top here, This is currently called our lens Cool down timer that we got lens active timer or lens camera effects and then lends active timer. So let's rename are one missed cool down timer. Okay, so down here, get us like this. Missed Cool down, timer. Then where? It says Miss Active camera will call this timeline. Missed camera FX is that we called it or Miss FX camera. Let's see. Lens camera, FX, miss camera effects. Okay, that's gonna be good. And this one down here is going to be, I believe that's our lens active timer. So we'll call this hour. Missed active timer. Okay. You'll still notice that throughout our miss script here currently are missing script. We've got a lot of variables. Still referencing. Ah, the lens. So here is one. Let's start at the very beginning and swap them all out appropriately. So when we're using the minutes, we don't really care if we are using the lens. So let's come under our variables section the White Magic, magic, white myths and find out B is using Miss we want to swap. That is our condition there. And then our true branch looks like Let's go off of our true branch here. Everything is miss related here until we get to our lens. Cool down timer. Well, we don't want a lens cool down timer. So let's drag and drop our Miss cool down timer right here. Make sure we hook in the update to the missed cool down timer variable. Let's get rid of the lens. That's gonna be pretty good. And then let's back up to our branch here. Let's go off the false branch and keep working through well here. We don't want we don't care about our lens attribute. Let's swap in our missed attributes. Lends cool downtime percentage? Nope. Missed cool down time. Percentage lends attributes. I think not. We want to plug in our missed attributes. Okay, then we come to a sequence note. Let's go off of the then zero branch first, here's our lens FX on. So let's bring in our function for missed FX on Let's go off our sequence than one branch. Missed. Missed, miss. Okay, there is some stuff we are going to be changing here in the next video. Ah, we are gonna be doing some work here, but just not yet. Let's scroll down to our missed active timer than missed. Missed, missed. Although lot lens active time who want missed active times, Let's plug that on top there and then off of our update pin. Make sure that's in, then we can delete that. So now you see these warnings that are existing on our custom event that happened from the copy and paste. Let's go ahead and compile here. All those warnings should go away and they do. And then let's go ahead and save. And I know that was a lot of jumping around everywhere. So let's kind of just walk through this a little bit so you can pause the video as you need just to make sure you got everything in place here. So this is what we currently have for our missed work off the true branches scrolling over to the right, okay, And then let's come back to our false branch. Everything looking misty there. We got our sequence known. Let's go off of the then zero Got our Missan are then won. A lot of this is going to change in the next video. Are then too, Miss Miss Miss Missed. All right, guys, I do believe we have any everything for you Made a mistake will find it eventually. But that'll do it all for this video. We will see you in the next one. 147. Mist - Script #2: Welcome back. Once again, everyone, we're going to continue working on our missed script here in R B P player. So if you don't already have it open, come to your content Browser this directory double click on your BP player to open her up. And our goal in this one is to finish our transformation to miss the script. Now, we've got to make a few modifications to some of the timelines in here. And there's three of them. Because, remember, we're using a timelines to drive some of our variables, such as how long the effects stays active, how long the cool down period is, etcetera. And after modifying the timelines, we're gonna just what happens to our camera bit when we transform into an out of misusing? Ah, pretty cool, blurring effect. I think so. Let's find our missed camera effects Timeline. This guy right here, let's double click on it to open it up. And here is our timeline editor here. I'm gonna change the length of this to be 0.3 seconds from 0.15 seconds. They can see that extended out our our white section year. The total amount of time for our timeline. So then what I want to do is I want to select this last key frame and set the time for this to be a 0.3. Okay, It's a little bit of a longer timeline here for a miss camera effects. So that's going to do for this one. Let's exit out of here. Let's go next to our missed active timer timeline right down below it. Double click on it to open it up. We're gonna change our missed active time, not from eight seconds. Like our lens of truth is active for eight seconds, we're gonna change is down to three seconds. We only want you to stay in miss form for a short time cause that otherwise that skill could be abused pretty badly. And then let's select our last a key frame over here and set the value here to be three to match that that we can jump on out of here. Can't. Going back to this time line up here are Miss Cool down, timer. Go ahead and double click on this to open it up. Let's see, we've got one thing. We should change here. Even though I do want to keep this at five seconds. Currently. This says lens, Cool down time or just for clarity's sake, let's rename this to missed cool down, timer. Yeah, because actually, if I could be a little misleading, right? And let's exit out of here. I think I did this in one of other tracks. So just to be super clear, miss Cool down time percent that says L fa is our output here. Lens active time percent. Yeah, that that's not good. So come under your missed active time timer timeline. Let's right. Click on this name. And just for clarity's sake, call this missed active time percent. Then we can go ahead and exit out of that. Okay, Now, let's come under. Our missed camera effects were going to do something a little bit different for our miss camera effects settings and our top blurb here, I want to set our A value to be 90 RB value to be 80. I'm gonna bring in a middle lurk value as well, and you'll see why in just a little bit I'm gonna right click, do a search for a loop That's a float. Learn up the same as before in this middle earth. I'm gonna have a value of zero and a B value of 00.6 and our bottom lurk here. I should make sure I plugged the Alfa into this slurp note as well. And are bottom lord here is going to have an A value of zero, but a B value of 15 now, Before when we were transforming Ah, not transforming. We were putting together our lens active camera effects. We were doing this vignette intensity, post process setting. That was kind of this sort of dark shadowing around the perimeter of the screen. Well, for our miss active camera, I wanna have mawr than just vignette intensity. So I'm gonna select this node right over here and then over to the details panel. I can select certain things to add to this make post process settings. Note the things I want to adhere, r e I'm gonna do a search for it because there's so many things that we can turn on. I want to add one for Ghazi in, If I can spell it right, Ghazi and Blur Jauzion, That's two s is and actually let me do a search for method. That's not the one I'm looking for. Ah, let's see. Ghazi and Blur will come back to that one. Let's do near blur size first near blur size. So that is one that I want to add Near blur Size said. That is a pin. Another one that I want to set is a far blur size. So I'm gonna type in far, far blur size. This is all under the lens depth of field category and for a gauzy and blur. Here, let me just type in. I believe method method method right here lends depth of field method. Let's add that. And here is where we can add that blur. Set our method here to this ghazi in depth of field blur right like that. Okay, so now we've got three different lurk nodes and again, alert node is going to allow us to go from the A value to the B value driven by an elf of value and again are Alfa. Value goes from 0 to 1 over time. When our Alfa is zero, we will be reading in the a value of each of these. And when Alfa is one, we go to the B value of these and as we go in between them were somewhere between A and B as our tool tip for hovering over our lurk node suggests. So which one of these return values do we need to plug into which things in our make pros process settings this first lor being plugged into our setting of our field of view is gonna be fine. However, our vignette intensity, I want this to be from this lurk the zero to the 0.6. So plug the return value of here into the vignette intensity this Ehlert that's going from a value of zero to a value of 15. Over time, I'm gonna plug this into our near blur size and are far blur size. So both of those that is going to be fine. I'm just gonna add on a little bit more script to the end of this. Let me move up my post process settings right about there. I want to bring in one of our components. Here are vfx w magic, Miss Active. Let's drag this into our graph, and then I'm gonna drag off of this and type in set world scale three d and I'm gonna hook in our execution wear to that. And one more thing that I want our Alfa here to drive our miss camera effects is I want to drag off this in type in alert vector lurk vector. And I'm gonna drag this all the way over here and let the double click on our line here to create a reroute node to clean this up a little bit. And I'm gonna plug this into our scale for our new setting of the world scale for RV effects. Miss Active for the A value. I want to leave these for zeros across the board. However, the B values I want to set to be one. Now, what am I doing here? Essentially this V effects. Let me just exit out of here. I don't want that. This vfx iss is currently RP miss particle effect. Over time, this very short time period, I'm gonna be going from a world scale of zero to a value of one really rapidly. And that's just a kind of scale up the size of that miss effect of really rapidly over time . All right? And so that should pretty much do it for all these fix ups to our timelines. Now, if I jump in and play and go over and collect are missed scale here, let's collect it. Then let me set it. And now let me activate it. You'll notice that I can't actually turn into Miss, but there's still some imperfections. So a few imperfections that I noted there is. I was trying to jump while I was in Miss Form and I was trying Teoh move up into the air wall. I was in Miss form but was unable to do so. Those are known issues that will get fixed up in the next video. So, guys, that will do it all for this video. See you in the next one. 148. Mist - Script #3: Welcome back, everyone. Third in final video here for implementing our missed script. The goal in this one is to modify some of our player movement scripts to account for the fact that we can now transform into mist. You heard at the end of the last video the jump effects, the grunting coin on while I was trying to jump while in miss form. That's one thing we're gonna fix up. We're also going to fix up the fact that we were not able to move up or down while we were in miss form. So let's take care of that latter issue. First, we're going to start off in our project settings here settings, project settings and over on the left hand side, select your inputs and we want to add a new axis mapping so that we can make our missed move up and down. So click this little plus button right here. We're going to call this new axis mapping, not action mapping, access mapping. This is going to be called move up. And I didn't have my fingers in the right spot on the keyboard. Move up and we want to bind this too. Left thumb stick. Why access the left thumb Sick y axis? And then I also want to add a couple more years I'm gonna hit that once and twice, and I want to bind this to our keyboard s key s S s and our keyboard w key. And when I want to do is for R s set the scale value to be negative one that is going to indicate that we're trying to move in a downward direction. Why, up and down, So s a negative value is gonna be down, and w a positive value of one is going to be up. And this y axis just having a value of one is gonna be fine, because as we move our left thumb stick up and down, it will be able to read in a value of either one or negative one, depending on which direction we are pushing. Okay, so with all that done, we can exit out of our project settings. Let's jump into our BP player. And if you haven't already done so here is the pathway to find your BP player. Open her up. We're gonna do this bit of script, not in our White Magic tab, Our event graph. So just gonna zoom on out a little bit and let's see what the heck. I've got some test scripts and here Player receives damage. Let's do it right underneath. Our player receives damage. I'm gonna right click and type in. Move up and there is our Axis event input access event. Move up. Let's add that and we're gonna bring in a branch and the one branch I want to bring in is going to use B is using missed as the condition. So let's drag that in and get that and we're gonna drag off of that and find our branch. And if it's true, if we are in miss form, then we want to add movements input right here and in which world direction do we want to be able to go? We want to go in the world direction z of one, so that should allow us to move up and down. In fact, let's put a comment box around this left click and drag tap that Seiki allows movements up , down when transformed, transformed to miss. Okay, so that is looking good. Let's next. Come in, John, modify our jump script because we were still able to grunt. You heard that sound effect when we were in mist form. So I need to find out. Where is our jump script? I believe that's in our movie set Tab right here. So I'm gonna select our move. Set. There's our back dash. There is our jump. Good thing for having comment Boxes. You can see it from even way out here. Okay, so we just need to input a little bit of script right after this input action jump and between this has double jumps. I'm just going to scooch some of this over to the side. We're not gonna add much here it all. We're simply going to put in a bullying here at the very front for B is using Miss, we're gonna get that. We're gonna drag off this, bring in a branch and our flow control when you press, this is going to evaluate. Hey, are we using Missed? Are we using missed in miss form? And if we're not, we're going to be allowed to double jump. But if it is true that we are using mist and none of this is gonna happen so that's what that's gonna dio. Okay, so let's go ahead and compile and save here. Jump in and play and see if we can now move up and down when we are within miss form. And if we hear that jumping a sound effects. So here we go. Of course I need to collect. Are missed your first. Okay, let's go ahead and slot. Mrs are active white magic. Let me activate that. And I think first, I'm going to try to move up and down here, okay? And oh, I see an issue. I just kept floating up again and again and let me just jump on over to my event graph year and what I got currently going on is my scale value here is currently set toe Once that was just sending me up. Non stop. And this is my bad. I need to plug the axis value into this scale value. That's what's actually going to tell our missed their to be moving up and down with the value said toe one that we were only going to go up. So make sure that you have that axis value plugged into the scale value for your ad movement. Input. Silly mistake on my part. Let's compile and save one more time. Try playing and collecting are missed. Let's try Teoh. It's a lot are missed. Here we go. Okay, so now I'm moving up. Moving down. That's looking pretty good. Waiting for my cool down the end here. And this time when I transform into miss let me try to jump. All right, so that sounded good because we didn't hear anything. Ha ha! All right, so, guys, that is going to do it all for this one. We've now made it so our miss can move up and down and we no longer hear that jumping sound effect job well done. We're not quite done yet. We still need to build a gate that are missed. Can go through that is upcoming. Next seawall in the next video 149. Mist - Gate Blueprint: welcome everyone in this video. Our goal is to create an object that the player can pass through while they are in miss form. And for us, that object is going to be a gate. Let's come under our content. Metro in Vania Blueprints Actors Folder and let's find our BP interactive object base that we created way earlier in the course we're going to right click on this, and we're going to create a child blueprint class from this and we're gonna name this BP underscore. Missed Gates. Then let's double click on this to open it up, and I'll just dock this across the top here, and we're just gonna add a couple of static mesh components to this. So let's come under our components section. Add component. Let's add one static mesh that this will be called Missed Gate Arch. Capitalize that I miss Gate Arch and let's add another one right away. And I'm going to select my default seen route here to attach it to that, um, at another component at a static mesh, and this one is gonna be called missed Gate. All right, let's select are missed Gate arch first and set some of the details for that. And obviously the first most detail that we need to settle is our static mesh. Which static measure we're gonna put in here? I do have one in mind. It is. Let me just type in Castle Castle, Arch. Underscore 01 this one. Right. Here s M planes. Castle, Arch 01 This isn't in the infinity blade. Grasslands pack. Okay, Once we get that in here, it's rather big. As you can see, I've got some scale settings and locational settings I want to set for this. I'm gonna set the scale. I want it unlocked here, so make sure that this is unlocked. Let's set the X scale to be 1.25 The why can stay at one Z can stay at point. Let's put 2.88 So 1.251 point 88 and then for the location, let's set the X location to be 1 60 and the UAE location to be 34. And the reason I have these very specific location and scale settings is so that the gate that we're gonna have fitting in here is gonna fit in really nice So let's take care of that next by selecting our missed gate component over in the right hand side. Let's set the static mesh for this, and this will be I'll do a search for iron Underscore Gate, This one right here, Iron Gate. Underscore 01 that's also in the infinity blade Grasslands back and you can see right now it does not fit neatly in there. But I've got some scale settings that should work. Make sure your scale settings are unlocked right here so we can set them all independently . Will go. Ex scale of 1.25 The why skill can stay at one. The Z scale will go 1.55 and let's set our why. Location here to be negative three. That's just gonna push it back a little bit now, As you can see, it doesn't fit in here. Perfectly little gap here along the edges. But that's gonna be fine because we're gonna be viewing this whips. Let me control Z that because I did not want to move that when we places in our level, we're gonna be looking at it kind of from this side, like angle so you're not actually going to see that little gap there, so I'm gonna live with that, Okay? Also, with our gate here selected, we want to make sure that we set some collision settings. So you remember from the previous video, we created some stuff in our project settings under the collision settings. And let me just go back to my project setting. Seriously, you can see what I'm talking about. We got project settings in with our project settings. We got the collision section, and underneath our project engine collision section, we created a pre set forth called Ignore Missed. And into that ignore missed, we can now slot that as a collision preset for this gate. So I'm going to change the collision preset for this to be ignore. Missed. Now, when we created this ignore missed collision preset, you will see the default collision responses based on various object types. This is set up to block everything, including our pawn. And remember, our BP player is considered a pawn until we turn into mist. In which case our pawn is changed to an object type of miss. And you can see here that this gate is now set up to ignore anything that is labelled as a missed object type. It's also hammer this home. Let me bring on my BP player double click on my BP player and let me select my missed on effects. This function that we created in here is where we were changing our capsule components. Remember, our capsule component is labeled as an object type of pawn. But when we turned the mist effects on, we're changing our capsule component, which is this outermost components surrounding our character. We're changing the collision for that to now be considered missed so that our BP Miss Gate will ignore that collision. Makes sense? I hope so. All right. Not quite finished yet. We need to select our internal Interact Collider here. A few things we want to change with this our box extents. So scrolling up in the details panel and change our box extent here to be x 100. Why? Of 200 z of 2 50 and then I'm going to say the Z location for this is going to be up in the air an additional 2 50 Now, the reason I have this interact collider of about this size is because when our character overlaps this, we want to display a message. So that's what we're going to use this for. What message do we want it to read? Well, if I come under my my blueprints section, we've got this little eyeball icon this little drop down right here. Click on this and we can show inherited variables if you're not already showing them. So make sure that that is checked, and by default, it should be here. Here is our interactive object variables. All these were inherited from our BP interactive object base and we can select our interact message variable. And right now, this says nothing. So let's type something in, Let's type in need missed to pass. So the idea is when our character is going to overlap this trigger volume, we're going to display this message of need missed to pass. But that is all we want to get done for this particular video. So let's go ahead, compile and save, and that will do it all for this one. Guys, we will see you in the next one 150. Mist - Gate Script: Welcome back, everyone. In this video, we have two goals. Goal number one is to make it so that we show or hide a notification message whenever a player approaches the Miss Kate, letting them know that they need that missed skill in order to pass it. Goal number two is to ensure that our player, when transformed into miss, can actually pass through that gate in order to do the latter and will actually do the ladder goal first, ensuring that they can pass through the gate. Let's go ahead and plays are BP Miss Gate into the level, and it's gonna come in facing the wrong way. And I suppose, in the blueprint itself, I probably could have rotated this to ensure that it would always be facing the way I wanted to. But we'll just go ahead and rotated here in the level. It's not that big of a deal, and I am going to raise this up, hit the end, a key to slap it on down to the ground, and I've places close to my missed skill pickup in order to make this easy to test. Now, if I jump in and play right now, and I collect my white mist skill here. And then I set this and then I transform into this. You're going to notice a problem here. We g o boom, I can no longer progress. What just happened there? Well, the problem that currently exists is in our BP Miss Gate, with our Interact Collider selected or in the details panel. We've got some collision settings here, and right now this collision setting is set to block anything labeled as mist. And remember, RB people air becomes the object type of miss when they transform into Miss. So to fix this, all we need to do is check this box for ignore the mist and compile and save, and we should be able to pass through that. Now let's jump in and play once again and run that test one more time transforming Miss and also not only try to pass through this invisible box but also passed through the gate is well, so here we go transformed and miss got through that volume and was able to pass through the gate. And now, as a human as a pawn, I can no longer pass through it. So that is good to G O. Okay. Next order of business, we need to find our widgets. W b p notified double click on that guy to open it up because we want to work on creating our animation for that need missed to pass message. So once you double click and open that up, I remember what this message is vaguely going to look like something like this. However, when we want this message to appear, we do not want the B button to be there. So what we're gonna do is take a little bit of a shortcut to do this. Come under your animations and we've got this intro animation that currently is going to do this now our button interact right here are button that B button is automatically by default, set to have a color and a pass ity the A value. The Alfa value there is set to zero, mainly meaning it is transparent. You can't see it at all. So all we need to do to create inappropriate animation for this is right. Click on our existing one. Let's duplicate this name it intro underscore new button. Then let's select this animation. And let's just delete out this button interact track. We can delete that out. And now if I play this, you can see this is what it's roughly going to look like. Okay, all right, so that's the easy part. Now we got to go back into Well, let's make sure we say this and let's go back into our BP, Miss Kate, and start to do a little scripting. So find your way over to the event graph here. Ah, few notes in here that we don't need. Let's delete these out. Let's select our Interact Collider and then let's right. Click on this. Add an event and let's do an on component. Begin overlap. Now what we want to do is drag out of our other actor here and do a cast to the BP player. Make sure that it is the BP player that is overlapping that Interact Collider. And then when I want to do is find a reference to our player, and you should be able to find this under your interactive object variables. And again if you don't see this category, if you check on show inherited variables that will make these visible so dragon a reference to our player. We're gonna get our player. I'm gonna drag out of here and say Is using missed. We're gonna get easy using, miss, I'm gonna plug this into a branch node. And the reason I'm doing this is we only want to display something here. If we are not in miss form, we don't want to show that message needs. Mr Pass, if you're already missed. Okay. So next I want to bring in our w b p. Notify air here. This again. This is a reference that we created earlier for our notification that we Ah, this No notify Right over here. WPP notify. So, jumping back to our BP, Miss Kate was drag and drop this into our graph. Let's get that and we're going Teoh, drag off of this and type in a received set. Received message inside of R W B P. Notify if I go over to the graph, we have this variable for received message. So this is where we're going to set what? We want that to be jumping back to BP. Miss Kate again. Link this off of the false of that branch. And what do we want? That message to read. Well, we just plugged that into our interact message variable right here. The need. Mr. Pass, I'm just going to drag and drop this on top of this center, like so Whoopsie. Okay. Flipping over my page. Oh, notes. The next thing I want to do here is dragged off of my w b p. Notify air and I want to say add to view port. Of course, we want to show that notification on the view port that's gonna instructed to do it is going to instruct it to do so. And then I'm going to drag out of here and get a reference to my intro. No button the animation that we just created. And then we can drag off of this animation and simply say, play animation. And then one more thing to do here toe add a little bit of jazz. Let's drag off of this. It's a place sound to D, and I'm going to expand this outs. Teoh, bring on a few more options here. The sound that I want to slot in is our SFX can interact. We can drag and drop that on top of our sound, and I'm going to set the volume multiplier here to be five. That's going to make that quite a bit louder. Okay, so that should be looking pretty good. So let me just drag marquee selection around all this Tap that Seiki and we'll call this our show message script. Let's quickly compile and save. That just is a sanity check to make sure we don't have any errors yet. Compile. And we do have a near That's why we compile. Ah, yes, because I did not set a target and our target here should be are w b p notify. So that is why we compile, compile and save. Now, with that all done, we now need to focus on not showing our message but hiding or rather removing that message and to get us started on that path, we're gonna be working inside of our BP players. So if you haven't already done so come under this directory and double click on your BB player to open it up inside of our BP player. We're gonna come under the my blueprint panel way at the bottom, and we created this event dispatcher called toggle w magic Ready R W magic ready message of Wild back. We're going to create another event. Dispatcher. Okay, this event dispatcher is gonna be called remove. Need missed message. Okay. And next step here is we need to come into Ah, some area of our some area of our white magic tab. Here. Weird. We gotta go. Here's our OK, Here's our miss bit of script. Find your missed script and in armistice script, where we have this sequence node off of the then three pin, what we're going to do is drag in our remove need miss message. Let's call this when you drag it and you release your going to get this little box that says, What do you want to do here? You We want to call for this event dispatcher. Now, why are we doing this? Essentially, what we want to do is when our character is overlapping this Miss Gauger. If they have transformed into Miss while they're inside of here, we want to tell that need miss message to go away. And when we transform into miss, which is what this used miss script is all about. One of the things we're going to do in addition to all these other things off. This sequence note is to call for that removal of the message. Now, of course, nothing is happening yet because we need something to be listening out for this message. We need something to be subscribing to this tweet from our BP player. So let's have Let's compile and save this must compile and save. And let's jump over to our BP. Miss Kate, to set up that subscription. Let's go to the event graph inside of here and up above. We've got this event begin. Play and Parent begin play. Let's move this up a little bit because we're gonna be building some script off of this between this event. Begin playing parent begin play. Let's just hold down the S Key s and Sam and the left click to bring in a sequence node. We're going to sneak in a sequence note between these two and make sure you keep these hooked up like this and I'm gonna move this parent. Begin play up. Out of the way. Now what I want to do off of this, then one pin is bring in a reference to our player. We're gonna get that and then I'm gonna drag off of our player. And I'm going to search for that. Custer, that, uh, event dispatcher that we just created called remove need missed message and you can see is I start to type it in. I've got several options here. What I want to do is I want to assign, remove, need, miss message. When I do, it brings in two nodes a bind node and a custom event hook in your then one output into this bind. And now we're essentially making it. So that r b p r Miss Kate here is subscribing to this message being sent out from our player. So when we turn into mist here, this is going to then receive this message and do something. What do we want it to do? Well, we wanted to call another custom event that I am just about to create, find some space underneath our show message and right about here. Let's right click create a new custom event, add new custom event, and we're gonna call this custom event. Remove. Capitalize This remove message. Okay. And now, with this custom event created, I can finish off what we were doing here by listening out for this event dispatcher. So once we receive that message, we're going to call for that remove message. Custom events to happen. Okay? And let me just drag out a marquee selection around this left click and drag tap to see Key . And I'll call this subscribe to remove Need Missed message. Enter. All right, let's come back down below where we have this custom event. This is going to be one of two things that is going to call for that removal of the message . The other thing that is going to remove that message is if we select our Interact Collider here and I right click and we add an event for on component end overlap. We want that message to go away, not on Lee when we transform into mist and we're inside of that Interact collider, but also when we're not even overlapping that Interact collider anymore. So let's drag off of the other actor pin from here and do search for R B p underscore player to cast to it. And then once we've got that, let's bring in our w b p notify air dragged that in. Let's drag off of this we're going to play animation. That's gonna be our target. Which animation? Let's drag off are W b p notify our once more our intro No button, Plug this into the animation and we want this play mode to not be forward, but reverse. This is going to reverse that animation in the W b. P. Notified to go away. Let's make sure we hook in this. Ah, where is well to ensure that that's gonna actually happen. And this removed messages also gonna plug down into this play animation. So again there's gonna be two things they're gonna be able to remove that message from the screen. Um, one more. Some more stuff we want to do here off of our intro. No button is I want to drag off of this whips. He lets ah, long line there. It's dragged off of this type in get in time. That's going to give us the end time of this animation gonna drag this all over here, bringing a little reroute node like so. And I'm gonna drag off of this, play animation and bring in a delay, node and the reason I wanted to get our in time here is because I wanted this end time to serve as the duration for our delay. And why do I want a delay here? Because let me bring in my W B. P. Notify her one more time. We're gonna get that because we want to drag off of this, and we eventually want Teoh tell this to remove from parents. So essentially, we're saying, Hey, when we're not overlapping this or when we have turned into mist we want to play that intro . No, but notification backwards. And once that time has expired, it is completely off the screen. We're going to remove that W b p notify air all together with that. Let's go ahead left, click and drag around this step Seiki hide. We want to call this hide message and we'll just call it hide message. Okay? And let's compile and save. Give this a quick play and let's collect are missed quickly. All right, there is our need, Mr Past message there goes away. That's our first test. Now, while I'm in this Well, first let me a slot in my mis message or missed white magic. So now I'm in this volume showing that when I turn into miss, this should disappear, goes away and now it comes back goes away, comes back, goes away, comes back. All right, guys, we will escape from here. And guys, that is going to do it all for this one. If we have any more bonus videos to add to this, I will certainly do so in the future. Otherwise, please let me know what you think of the course. And if you would like to kind of continue on this project, please let me know. Because there's a whole lot more we could do in terms of creating interactive objects. In what not in the future. Love these Metro in Vania style games. Thank you all. See you next, son.