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.