All language subtitles for 005 Inheritance and making the Character Blueprint[UdemyIran.Com]

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,170 --> 00:00:05,510 In the last video, we set up our sprites and flipbooks and we can just grab one of these flipbooks, 2 00:00:05,510 --> 00:00:08,150 for example, and put it in the world. 3 00:00:08,180 --> 00:00:10,820 However, this is not a playable character. 4 00:00:10,820 --> 00:00:16,580 This is literally just a bunch of sprites playing one after another to make an actual playable character 5 00:00:16,580 --> 00:00:20,780 that has gameplay implementation, we need to create a blueprint for it. 6 00:00:21,370 --> 00:00:27,760 So let's just delete the sprite again and let's have a look at blueprints in the Unreal Engine crash 7 00:00:27,760 --> 00:00:28,030 course. 8 00:00:28,030 --> 00:00:32,740 You already got a basic overview of what blueprints are and how they work, but here we're going to 9 00:00:32,740 --> 00:00:34,540 create our actual character blueprint. 10 00:00:35,110 --> 00:00:40,780 First go to the content folder, right click and create a new folder called blueprints. 11 00:00:41,200 --> 00:00:44,950 And we again want to split these up because we'll have multiple blueprints. 12 00:00:44,950 --> 00:00:46,120 We'll have a game mode. 13 00:00:46,120 --> 00:00:49,840 We'll have a characters, we'll have gimmicks and props in the map. 14 00:00:49,840 --> 00:00:53,950 So it's best to just have another folder here called characters. 15 00:00:54,940 --> 00:00:59,410 And in here is where you want to create our blueprint for the characters. 16 00:01:01,060 --> 00:01:02,500 And to create a new blueprint. 17 00:01:02,500 --> 00:01:05,410 We just want to right click, go to blueprint class. 18 00:01:05,500 --> 00:01:09,790 And a character would just be this of the common classes. 19 00:01:09,790 --> 00:01:14,290 But this is a parent class that is made with 3D characters in mind. 20 00:01:14,290 --> 00:01:22,240 So we actually have to go to all classes here and look for the paper, CD, paper, CD character. 21 00:01:22,240 --> 00:01:24,760 And here you can see how there's multiple layers, right? 22 00:01:24,760 --> 00:01:28,360 You see the paper CD character, the paper character, the character, the pawn, the actor and the 23 00:01:28,360 --> 00:01:29,200 object. 24 00:01:29,200 --> 00:01:32,620 And this is actually something called inheritance. 25 00:01:33,200 --> 00:01:38,960 This isn't just an Unreal Engine thing, but a broad computer science and programming firm, and it's 26 00:01:38,960 --> 00:01:41,630 a property of object oriented programming. 27 00:01:41,630 --> 00:01:46,640 This is a pretty broad topic, and we could talk about this for hours, but we only need to understand 28 00:01:46,640 --> 00:01:49,370 the basics and the practical applications of this. 29 00:01:49,370 --> 00:01:52,400 And we're going to use this extensively throughout this course. 30 00:01:52,790 --> 00:01:57,920 But what I want you to understand here is that the paper's lead character is based on the paper character, 31 00:01:57,920 --> 00:02:01,820 which again, is based on the character based on the pawn and based on the actor. 32 00:02:01,820 --> 00:02:08,630 Each level of this, each parent class here has certain variables and properties that are all passed 33 00:02:08,630 --> 00:02:09,979 down to the children. 34 00:02:09,979 --> 00:02:14,090 So an actor has the property to be somewhere placed in the world to be moved around. 35 00:02:14,090 --> 00:02:16,070 And this is something that a pawn also needs. 36 00:02:16,070 --> 00:02:20,330 This is something a character also needs, so it wouldn't make sense to just build this from scratch. 37 00:02:20,330 --> 00:02:23,390 Again, from the character built this from scratch, again from the paper character. 38 00:02:23,390 --> 00:02:27,920 No, we're only going to build this once in the actor, and we can pass it down to all the children, 39 00:02:27,920 --> 00:02:34,100 and we are going to use the paper character as our parent, and we're going to create multiple children's 40 00:02:34,100 --> 00:02:35,780 again from that using inheritance. 41 00:02:35,780 --> 00:02:40,580 So first just uh, select this paper Z character and click on select. 42 00:02:40,580 --> 00:02:44,900 And I'm going to call this BP action char. 43 00:02:45,850 --> 00:02:48,850 Underscore base, all in caps. 44 00:02:49,580 --> 00:02:55,430 And to better explain to you what this means, I created a simple graphic and the website I'm using 45 00:02:55,430 --> 00:02:56,420 here is called Figma. 46 00:02:56,420 --> 00:02:59,960 And I think it's really good for making small graphics like this. 47 00:02:59,960 --> 00:03:04,760 And we want to create the inheritance pattern for our action character. 48 00:03:04,760 --> 00:03:09,590 Basically what we want to have is we want to have an action character base, which we just created, 49 00:03:09,590 --> 00:03:16,550 that has certain properties and functions that we can then pass down to the player and to the enemy, 50 00:03:16,550 --> 00:03:20,420 because there are certain things that are shared between the player and the enemies. 51 00:03:20,600 --> 00:03:25,220 As you can see here, we inherit from the paper Z character, which we used as our parent class. 52 00:03:25,220 --> 00:03:26,870 So this is something we want to share. 53 00:03:26,870 --> 00:03:31,190 Between all of these we have certain parameter settings like on the sprite. 54 00:03:31,190 --> 00:03:33,440 We want to have the same material settings. 55 00:03:33,440 --> 00:03:35,390 We want to have the same shadow settings. 56 00:03:35,390 --> 00:03:39,140 So this is also something we want to pass down to both the player and the enemies. 57 00:03:39,140 --> 00:03:42,080 And we're going to build later a vitality component. 58 00:03:42,080 --> 00:03:45,710 So this has our max health, our current health if we are defeated or not. 59 00:03:45,710 --> 00:03:49,250 And again this is a functionality that the player and the enemy both needs. 60 00:03:49,250 --> 00:03:54,410 So it would be stupid to build this once for the player and build it again from scratch for the enemies 61 00:03:54,410 --> 00:03:55,880 and also a faction system. 62 00:03:55,880 --> 00:04:01,640 And this is just an enum which says okay, the enemies are all friends and they cannot attack each other 63 00:04:01,640 --> 00:04:04,520 and the player is their target, so their enemy. 64 00:04:04,520 --> 00:04:08,180 So they have different factions assigned to them which allows them to damage each other. 65 00:04:08,180 --> 00:04:13,490 It's a very simple system we're going to get into later, and then the player doesn't have any children 66 00:04:13,490 --> 00:04:14,090 beneath it. 67 00:04:14,090 --> 00:04:18,680 The player is unique and it has many different properties and functions that are different from the 68 00:04:18,680 --> 00:04:21,800 action char and that are not needed in the enemy base. 69 00:04:21,800 --> 00:04:26,210 For example, only the player will have a camera, so there's no need to have the camera here and pass 70 00:04:26,210 --> 00:04:27,170 it to the enemies. 71 00:04:27,170 --> 00:04:32,240 Only the player will have player inputs, a wall jump system, a slide system, and a shot chart system. 72 00:04:32,240 --> 00:04:34,190 So we don't need to share this anywhere. 73 00:04:34,190 --> 00:04:36,560 So it's fine for us to just implement this in the player. 74 00:04:36,560 --> 00:04:42,380 Only the enemy, on the other hand, actually doesn't have so many shared things, just a despawn function 75 00:04:42,380 --> 00:04:43,280 and turning around. 76 00:04:43,280 --> 00:04:47,990 But there are actually also other benefits for having a parent class like this that manages the children. 77 00:04:47,990 --> 00:04:54,260 We could, for example, get a reference to all of the enemies by looking for the enemy base and it's 78 00:04:54,260 --> 00:04:55,190 going to return. 79 00:04:55,190 --> 00:04:59,510 All of the enemy grabs all of the bats, all of the lizards, and this is actually something we're going 80 00:04:59,510 --> 00:05:02,630 to use later in the spawn and despawn system. 81 00:05:02,630 --> 00:05:05,540 And you can see again beneath the enemy base. 82 00:05:05,540 --> 00:05:09,380 We then have the crab, and the crab just changes the sprite. 83 00:05:09,380 --> 00:05:10,970 So it's the picture of the crab. 84 00:05:10,970 --> 00:05:15,350 The crab will need a wall detector because it's going to walk left and right, and it should turn around 85 00:05:15,350 --> 00:05:16,220 if it hits the wall. 86 00:05:16,220 --> 00:05:18,590 And the same happens with a ledge. 87 00:05:18,590 --> 00:05:21,680 And all of the other enemies in our case, do not need that. 88 00:05:22,570 --> 00:05:23,650 The bath is very different. 89 00:05:23,650 --> 00:05:26,020 Again, it has a different sprite and it has a patrol system. 90 00:05:26,020 --> 00:05:28,060 So it's just going to fly up and down. 91 00:05:28,060 --> 00:05:32,740 And again this is a system unique to the bat which is why we implement it here in the child. 92 00:05:32,830 --> 00:05:36,130 The lizard is just going to shoot bullets at certain intervals. 93 00:05:36,160 --> 00:05:38,770 Again a very simple system that only the lizard uses. 94 00:05:38,800 --> 00:05:43,600 The enemy again, we change the sprite and this enemy has an agro detection system. 95 00:05:43,600 --> 00:05:48,310 So if we walk into a certain range of it, it's going to start targeting us and chasing the player. 96 00:05:48,310 --> 00:05:50,470 And again this is only on this enemy unique. 97 00:05:50,470 --> 00:05:52,240 So there's no need to share this. 98 00:05:52,240 --> 00:05:58,900 But for example, you could have a BP enemy base and then have a BP enemy base chaser. 99 00:05:58,900 --> 00:06:02,500 And then you could have different types of chasing enemies below that. 100 00:06:02,500 --> 00:06:03,130 Again. 101 00:06:03,130 --> 00:06:07,960 So this is actually something you can spend quite a lot of time thinking about and perfecting. 102 00:06:07,960 --> 00:06:09,520 And this doesn't come natural. 103 00:06:09,520 --> 00:06:12,310 This is something that just happens over time as you become more experienced. 104 00:06:12,310 --> 00:06:15,460 But I hope you can get a taste of this while we make this game. 105 00:06:15,460 --> 00:06:20,500 A lot of beginners don't understand inheritance and that really hurts them and loses them a lot of time. 106 00:06:20,500 --> 00:06:26,230 I've seen many of my students, they don't create a shared parent, they just make a separate blueprint 107 00:06:26,230 --> 00:06:28,690 for the crab, for the bat, for the lizard, and for the enemy. 108 00:06:28,690 --> 00:06:30,910 And then they make a health system for the crab. 109 00:06:30,910 --> 00:06:32,380 They make a health system for the bat. 110 00:06:32,410 --> 00:06:34,060 They make a health system for the lizard. 111 00:06:34,060 --> 00:06:38,590 They make an AI system for the crab, an AI system for the bat, and an AI system for the lizard. 112 00:06:38,590 --> 00:06:44,260 So they basically have four times the amount of work, four times the chance of bugs happening, and 113 00:06:44,260 --> 00:06:49,150 their coaches become so bad and unmaintainable they just give up and don't know how to proceed. 114 00:06:49,150 --> 00:06:54,880 So even if this is a little bit hard to wrap your head around at first, this is extremely important. 115 00:06:54,880 --> 00:06:59,530 So if you're not quite comfortable with this, I also encourage you to kind of look up inheritance and 116 00:06:59,530 --> 00:07:03,760 object oriented programming on your own time if you want to know even more about it. 117 00:07:03,790 --> 00:07:08,140 Adding base to the action char here and adding base to the enemy is not an unrelated convention, but 118 00:07:08,140 --> 00:07:10,420 this is just a personal preference of mine. 119 00:07:10,420 --> 00:07:14,860 That simply means that this blueprint is not supposed to be spawned and actually used in the game, 120 00:07:14,860 --> 00:07:16,030 and neither is this one. 121 00:07:16,030 --> 00:07:19,510 And they only act as parents that pass things down. 122 00:07:19,570 --> 00:07:24,190 And I just think this is a better way to make that very clear and not use it accidentally. 123 00:07:24,550 --> 00:07:27,730 Now let's start by first implementing things in the action char base. 124 00:07:27,730 --> 00:07:29,380 So double click to open it up. 125 00:07:31,020 --> 00:07:33,300 The first thing I want to do is set up the sprite. 126 00:07:33,300 --> 00:07:40,170 So we can just click on sprite here and here on the right, under the source flipbook we want to look 127 00:07:40,170 --> 00:07:42,360 for the player idle. 128 00:07:42,910 --> 00:07:48,370 And this gives us this player idol and just click it and we can see the player here now. 129 00:07:48,370 --> 00:07:49,720 And again this is the parent. 130 00:07:49,720 --> 00:07:54,040 This doesn't necessarily mean we're going to use this player idol everywhere, but we just want to use 131 00:07:54,040 --> 00:07:55,000 this as the default. 132 00:07:55,000 --> 00:07:59,620 And we can then overwrite this in the children that use the crab or use the bat or so on. 133 00:07:59,950 --> 00:08:03,310 And we can see that the sprite almost matches the capsule. 134 00:08:03,310 --> 00:08:06,580 And this is very important because we want to match the capsule. 135 00:08:06,790 --> 00:08:12,310 And if we wouldn't have set up the pixel per unit settings, which we did in the last lesson, the sprite 136 00:08:12,310 --> 00:08:16,120 would actually be very small and we would have issues setting this up correctly. 137 00:08:16,420 --> 00:08:22,120 The thing is that you can make the capsule smaller, however, you don't want to make it too small. 138 00:08:22,120 --> 00:08:27,190 Or again, we have this issue I talked about before where the physics start to freak out and the character 139 00:08:27,190 --> 00:08:31,510 movement component doesn't really know what to do because the character is not of a reasonable height. 140 00:08:31,510 --> 00:08:37,059 However, we can make it smaller, it just should be in a reasonable range and we can easily just go 141 00:08:37,059 --> 00:08:42,520 here, select the capsule, go to capsule half height, and we can just drag here to make it smaller. 142 00:08:42,520 --> 00:08:45,190 And I think around 60 is good. 143 00:08:45,190 --> 00:08:47,230 So we can just type in 60 hit enter. 144 00:08:48,710 --> 00:08:54,110 And the width is fine because we can see that it encapsulates the character nicely and the arms stick 145 00:08:54,110 --> 00:08:54,620 out a little bit. 146 00:08:54,620 --> 00:08:55,730 That is totally fine. 147 00:08:57,190 --> 00:09:00,730 And we now just want to move the sprite a little bit to adjust to this. 148 00:09:00,730 --> 00:09:04,120 So we can select the sprite and then drag it over here. 149 00:09:04,270 --> 00:09:06,130 And this is a little bit too much. 150 00:09:06,130 --> 00:09:09,070 So we're just gonna go minus five here. 151 00:09:09,680 --> 00:09:13,790 On the X, you can just type in minus five and we then want to go up. 152 00:09:14,700 --> 00:09:18,180 And we can go up like 15. 153 00:09:18,880 --> 00:09:20,380 Here on the Z. 154 00:09:21,420 --> 00:09:26,400 And we want to have the feet basically match where this capsule ends. 155 00:09:26,400 --> 00:09:27,960 This doesn't have to be perfect. 156 00:09:27,960 --> 00:09:32,190 I'm going to show you a technique later how we can perfectly align this with the floor, but for now, 157 00:09:32,190 --> 00:09:34,560 it should just roughly encapsulate the player. 158 00:09:34,560 --> 00:09:35,760 The horns can stick out. 159 00:09:35,760 --> 00:09:36,570 This is fine. 160 00:09:36,570 --> 00:09:38,430 The arms can stick out. 161 00:09:38,430 --> 00:09:40,740 This is fine because we don't care about collision on them. 162 00:09:42,100 --> 00:09:48,550 To align the sprite perfectly, we first have to drag an instance of this blueprint into the world, 163 00:09:48,550 --> 00:09:54,520 so we can close this down, and on the map debug, we can just open the content drawer and drag this 164 00:09:54,520 --> 00:09:58,690 guy into the world, and you can see how it snaps onto the ground. 165 00:09:58,690 --> 00:10:04,240 And here this looks kind of fine, but to have physics activate, we actually want to start the game 166 00:10:04,240 --> 00:10:06,850 because it can change the position slightly. 167 00:10:06,850 --> 00:10:11,230 And we then want to eject so we can move the camera around freely. 168 00:10:11,620 --> 00:10:14,350 And we can now select the character. 169 00:10:14,350 --> 00:10:16,180 You can see the action jar base. 170 00:10:16,180 --> 00:10:22,870 And here in the details we can go to the sprite, the same sprite that we looked at before in the blueprint. 171 00:10:22,870 --> 00:10:26,590 And we can now drag this up or down here as well. 172 00:10:26,590 --> 00:10:29,410 So here on the Z we can just go like this. 173 00:10:29,410 --> 00:10:31,120 And you can see the sprite moves. 174 00:10:31,120 --> 00:10:33,580 And here we just want to like zoom in. 175 00:10:34,030 --> 00:10:37,570 And you can use the mouse wheel to change the camera speed when zooming. 176 00:10:37,570 --> 00:10:43,720 And we just want to drag this up here so we can see that it perfectly aligns with the floor. 177 00:10:44,900 --> 00:10:46,850 And this is almost perfect. 178 00:10:47,310 --> 00:10:48,330 But a little bit lower. 179 00:10:48,330 --> 00:10:50,160 So maybe 13.9. 180 00:10:50,160 --> 00:10:50,820 And yeah. 181 00:10:50,820 --> 00:10:54,420 So this is absolutely perfectly aligning with the floor now. 182 00:10:54,420 --> 00:10:57,450 And this is just kind of my little trick that I always use. 183 00:10:57,450 --> 00:10:59,760 But if we stop the game now this is going to reset. 184 00:10:59,760 --> 00:11:04,020 So we can copy this, stop the game and go into the blueprint. 185 00:11:04,020 --> 00:11:10,170 And now here on the sprite we just want to paste in control V the value that we just determined. 186 00:11:10,170 --> 00:11:12,390 And now I can just go back start the game. 187 00:11:12,390 --> 00:11:13,590 We can eject. 188 00:11:13,590 --> 00:11:17,040 And now we can see this aligns perfectly with the floor. 189 00:11:17,040 --> 00:11:20,220 And this is just the little trick that I figured out over time. 190 00:11:20,880 --> 00:11:25,860 Okay, so now we have the character in the world, and you can see that this does not look like a 2D 191 00:11:25,860 --> 00:11:26,220 game. 192 00:11:26,220 --> 00:11:26,670 Right? 193 00:11:26,670 --> 00:11:32,640 This is still a 2D 3D hybrid game, which means we are using sprites 2D sprites for the character, 194 00:11:32,640 --> 00:11:35,340 but the world is actually a 3D space. 195 00:11:35,340 --> 00:11:40,500 And like I said before, we're first going to build out the game as a 2D 3D hybrid, and you can then 196 00:11:40,500 --> 00:11:44,460 decide if you want to keep on going in that direction, or if you're going to follow along with me and 197 00:11:44,460 --> 00:11:46,650 turn it into a 2D only game. 198 00:11:46,650 --> 00:11:48,960 And most of the things we do are going to be the same. 199 00:11:48,960 --> 00:11:52,770 There's just going to be a couple of settings we're going to change later, but there's actually not 200 00:11:52,770 --> 00:11:54,930 such a big difference in terms of gameplay. 201 00:11:55,570 --> 00:12:01,420 And since we want to roll with the whole 2D 3D hybrid thing, now we actually want to enable shadows 202 00:12:01,420 --> 00:12:06,160 so that it's going to look more 3D, it's going to look more interesting, and we can easily enable 203 00:12:06,160 --> 00:12:07,990 this on the air base. 204 00:12:07,990 --> 00:12:11,950 Just go to the sprite and here on details look for cast shadow. 205 00:12:11,950 --> 00:12:15,400 And we just have to take this and compile and save. 206 00:12:15,400 --> 00:12:18,220 And back in the map you can then see this shadow here. 207 00:12:18,220 --> 00:12:24,730 However, it doesn't look that interesting because the sun is kind of parallel to us, but we want to 208 00:12:24,730 --> 00:12:27,520 change it so we can get a nice big shadow. 209 00:12:27,520 --> 00:12:32,680 And to do that we can just look for the directional light here, just type for directional light, which 210 00:12:32,680 --> 00:12:34,150 is basically the sun. 211 00:12:34,360 --> 00:12:37,300 And we then want to rotate this on the z axis. 212 00:12:37,300 --> 00:12:40,810 So here you can see it's minus ten I can just drag around here. 213 00:12:42,060 --> 00:12:43,200 And then, yeah, you can change. 214 00:12:43,200 --> 00:12:45,870 So the sun is behind us or the sun is in front of us. 215 00:12:45,870 --> 00:12:47,520 And this is something you can play around with. 216 00:12:47,520 --> 00:12:53,970 But usually I go for an angle like this where the shadow kind of is behind the character and goes also 217 00:12:53,970 --> 00:12:55,200 a little bit to the back. 218 00:12:55,200 --> 00:12:59,100 This is usually what I think is a very interesting looking shadow. 219 00:12:59,900 --> 00:13:02,120 But there's still one more thing we want to set up. 220 00:13:02,120 --> 00:13:08,150 And this is that even though our character can now cast shadows, the sprite is actually unable to receive 221 00:13:08,150 --> 00:13:08,870 shadows. 222 00:13:08,870 --> 00:13:15,860 And to just show you this, we can just quickly add go to quickly add here and go to shapes and just 223 00:13:15,860 --> 00:13:20,210 add a cube and we can drag this around here. 224 00:13:21,210 --> 00:13:22,830 And just to show you. 225 00:13:23,380 --> 00:13:25,150 That we don't receive shadows. 226 00:13:25,150 --> 00:13:27,310 So this cast a shadow on the floor. 227 00:13:27,310 --> 00:13:30,760 That is fine, but it does not cast a shadow on our character. 228 00:13:30,760 --> 00:13:32,440 So this looks very weird. 229 00:13:32,440 --> 00:13:34,240 Like a glitch, almost. 230 00:13:34,240 --> 00:13:36,880 But this is only due to the material settings. 231 00:13:36,880 --> 00:13:44,620 So we can go back to the BP action char on the sprite exit out of here and we can see here for the material 232 00:13:44,620 --> 00:13:45,190 we have. 233 00:13:45,190 --> 00:13:51,340 The masked unlit sprite material and unlit materials are specifically used for 2D only games. 234 00:13:51,340 --> 00:13:53,470 This means they don't care about lighting. 235 00:13:53,470 --> 00:13:55,000 They don't care how dark the scene is. 236 00:13:55,000 --> 00:13:57,520 They're always just going to be shown in their original color. 237 00:13:57,520 --> 00:14:02,830 But since we have multiple light sources now and we want to receive shadows, we actually want to change 238 00:14:02,830 --> 00:14:07,840 this to the masked lit sprite material. 239 00:14:07,840 --> 00:14:10,510 And maybe nothing shows up for you here. 240 00:14:10,510 --> 00:14:15,640 In the case that you cannot find this material, you want to click on the cog wheel and you want to 241 00:14:15,640 --> 00:14:22,510 make sure that show plugin content is enabled because this material actually exists in the paper 2D, 242 00:14:22,540 --> 00:14:25,300 not the paper CD, the paper 2D plugin. 243 00:14:25,300 --> 00:14:27,610 And this is a plugin that is installed by default. 244 00:14:27,610 --> 00:14:33,190 It's not the one we downloaded, however, it is still treated as a plugin and therefore this only shows 245 00:14:33,190 --> 00:14:36,550 up if you enable the engine and plugin content. 246 00:14:36,550 --> 00:14:37,270 And yes. 247 00:14:37,270 --> 00:14:39,280 So after you have that, just click it. 248 00:14:39,280 --> 00:14:42,460 It doesn't look like anything changed here where we can just compile and save. 249 00:14:42,460 --> 00:14:47,920 But if we go to the map now, you can see that we are properly receiving the shadows here. 250 00:14:47,920 --> 00:14:50,560 And this was just due to the material setting. 251 00:14:50,860 --> 00:14:54,220 And we can then just delete this cube. 252 00:14:54,220 --> 00:14:57,310 So just click it and press on delete on your keyboard. 253 00:14:57,310 --> 00:15:00,700 And we can also exit out of here to show everything again. 254 00:15:01,200 --> 00:15:06,660 And again, all of these settings with the sprite, with the shadow, with the material are things we 255 00:15:06,660 --> 00:15:09,090 want to affect the player and all of our enemies. 256 00:15:09,090 --> 00:15:13,110 And this is why we implement this in the action char base. 257 00:15:13,140 --> 00:15:15,870 Now let's make our first child blueprint. 258 00:15:15,870 --> 00:15:20,340 So to do that we can just right click here and create Bpy. 259 00:15:21,210 --> 00:15:23,640 And create Child Blueprint class. 260 00:15:23,970 --> 00:15:27,270 And this is going to be the BP underscore player. 261 00:15:28,140 --> 00:15:29,880 Just like we talked about in our graphic, right? 262 00:15:29,880 --> 00:15:34,260 We had this action star base and now we created the player child of this. 263 00:15:35,890 --> 00:15:38,230 And now that we have this we want to create a folder. 264 00:15:38,230 --> 00:15:40,450 So this new folder and called player. 265 00:15:40,450 --> 00:15:46,030 And just drag the player in here and we want to delete the action char base. 266 00:15:46,030 --> 00:15:50,320 Because like I said before we actually don't want to use anything with base in the game. 267 00:15:50,320 --> 00:15:53,590 Of course we can use it for development, but in the end we don't want to use it. 268 00:15:53,590 --> 00:15:59,620 Just delete it and we can then just have the player and drag the player into the scene. 269 00:15:59,620 --> 00:16:05,650 And if we open up the BP player, you can see it simply inherited all of the properties of the parent. 270 00:16:05,650 --> 00:16:06,040 Right. 271 00:16:06,040 --> 00:16:08,770 And here you can see parent class BP action char base. 272 00:16:08,770 --> 00:16:10,510 And we have the sprite location. 273 00:16:10,510 --> 00:16:11,620 We have the sprite settings. 274 00:16:11,620 --> 00:16:14,380 Everything is passed down to us from the parent. 275 00:16:14,380 --> 00:16:19,450 But if there are things we want to change, we can override them and we can add more things to it. 276 00:16:20,690 --> 00:16:25,700 But even having the player blueprint in the map and playing on start, we still cannot control the player. 277 00:16:25,700 --> 00:16:29,870 The player still doesn't really know what it's supposed to be doing, and that's something we're going 278 00:16:29,870 --> 00:16:31,250 to take care of in the next lesson. 28165

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.