All language subtitles for 007 Implementing the Ground Slide[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:03,530 In this video we're going to implement the ground slide ability. 2 00:00:03,530 --> 00:00:08,750 In this type of Megaman clone games, you usually have a slide that just makes you go faster and maybe 3 00:00:08,750 --> 00:00:09,710 has other properties. 4 00:00:09,710 --> 00:00:11,630 So we also want to implement this. 5 00:00:11,630 --> 00:00:15,440 But making something slight on the ground is actually surprisingly hard. 6 00:00:15,440 --> 00:00:16,460 In Unreal Engine. 7 00:00:16,460 --> 00:00:21,020 We've already used the launch character node before, and most tutorials you see will actually use this 8 00:00:21,020 --> 00:00:22,040 node for sliding. 9 00:00:22,040 --> 00:00:24,530 However, that is a very bad implementation. 10 00:00:24,530 --> 00:00:29,300 The problem with this is that you have to set it to a super high value to work against ground friction, 11 00:00:29,300 --> 00:00:33,830 but if you then use the slide near a latch, you're just going to fly off super far away. 12 00:00:34,250 --> 00:00:38,510 The best way for things like this is actually something like root motion. 13 00:00:38,510 --> 00:00:41,420 However, with 2D animations you don't really have root motion. 14 00:00:41,420 --> 00:00:46,400 That is more a 3D concept, and also you cannot control baked in root motion. 15 00:00:46,400 --> 00:00:52,430 So this is more like a root motion like solution that comes from the gameplay ability system. 16 00:00:52,430 --> 00:00:55,340 And you can look up the gameplay ability system of Unreal Engine. 17 00:00:55,340 --> 00:00:58,460 And it is a really big plugin that gives us many other features. 18 00:00:58,460 --> 00:01:04,849 However, we don't want to use this because this is very bloated for only wanting to use this one node. 19 00:01:04,849 --> 00:01:10,400 So I actually made a free plugin that only extracts the one node that we need for this root movement 20 00:01:10,400 --> 00:01:11,420 type of thing. 21 00:01:11,420 --> 00:01:15,140 And I'm going to show you how you can quickly install a free plugin like this. 22 00:01:15,140 --> 00:01:18,170 And then we're going to use it to actually implement the ground slide. 23 00:01:18,440 --> 00:01:23,690 I actually also made a YouTube video about this topic, which also shows examples from other real games. 24 00:01:23,690 --> 00:01:26,060 So you can also check that out in the resources. 25 00:01:26,060 --> 00:01:30,440 I'm not sure if it's already released by the time this course is out, but I will attach it once it 26 00:01:30,440 --> 00:01:31,400 is available. 27 00:01:31,400 --> 00:01:36,680 The plugin is called Root Movement and I'll attach it to this lesson in the resources, so please download 28 00:01:36,680 --> 00:01:37,400 it now. 29 00:01:37,400 --> 00:01:41,450 If you bought this course, of course, you can also feel free to use this plugin for all of your other 30 00:01:41,450 --> 00:01:42,350 projects. 31 00:01:42,350 --> 00:01:45,350 After downloading it, you should have this zip file again. 32 00:01:45,350 --> 00:01:47,630 We want to unzip this so extract. 33 00:01:48,350 --> 00:01:50,120 And in here we can just have a look. 34 00:01:50,120 --> 00:01:53,750 We have the root movement you plug in, we have the resources. 35 00:01:53,750 --> 00:01:55,310 And all of the files are in here. 36 00:01:55,310 --> 00:01:55,670 Right. 37 00:01:55,670 --> 00:02:01,790 So this is a packaged plugin that can be used in C plus plus projects and in blueprint projects as well. 38 00:02:02,090 --> 00:02:03,620 So how do we use this. 39 00:02:03,620 --> 00:02:10,669 Well we can go back to this folder the root movement 5.3 and just hit control X to cut this out. 40 00:02:10,669 --> 00:02:14,090 And we now need to add this plugin into our project. 41 00:02:14,090 --> 00:02:18,710 So this is not going to be an Unreal Engine version based plugin like paper Z and paper 2D. 42 00:02:18,740 --> 00:02:22,850 This is going to be a plugin we put specifically into this one project only. 43 00:02:22,850 --> 00:02:27,290 And we could then also develop this plugin alongside our game. 44 00:02:27,290 --> 00:02:33,800 The easiest way to find your project is to just find the project and right click and show in folder. 45 00:02:35,560 --> 00:02:39,460 And in here we then want to right click again and create a plugins folder. 46 00:02:39,460 --> 00:02:44,170 So new folder plugins and double click to open it up. 47 00:02:44,170 --> 00:02:49,060 And now we just paste our root movement plugin in here control and V. 48 00:02:49,700 --> 00:02:53,390 And for this to take effect, we actually have to restart our Unreal Engine project. 49 00:02:53,390 --> 00:02:54,920 So please do that now. 50 00:02:55,040 --> 00:02:58,010 Just go to the project and make sure that everything is saved. 51 00:02:58,010 --> 00:03:00,140 Save all and exit out. 52 00:03:03,070 --> 00:03:05,260 And then just open up your project again. 53 00:03:06,140 --> 00:03:11,510 And now you might get a message that says new plugins available and you can just click on Manage Plugins. 54 00:03:11,510 --> 00:03:16,340 Also, if it says project files out of date, just click on update and open the editor. 55 00:03:16,340 --> 00:03:17,450 This doesn't matter, right? 56 00:03:17,450 --> 00:03:20,570 But we can also just go here to edit and plugins. 57 00:03:20,570 --> 00:03:23,690 And now we just look for the root movement right. 58 00:03:23,690 --> 00:03:27,140 So this is the new root movement plugin made by Cobra Code. 59 00:03:27,140 --> 00:03:31,070 And it is already active because we restarted the project. 60 00:03:31,070 --> 00:03:34,520 And we can then see this in our content drawer. 61 00:03:34,520 --> 00:03:38,900 If we collapse the content we see the plugins folder here now right. 62 00:03:38,900 --> 00:03:43,070 And in here we have the root movement content, the root movement C plus plus class. 63 00:03:43,070 --> 00:03:46,280 And this is actually a C plus plus plugin that I created. 64 00:03:46,280 --> 00:03:50,870 If you have Visual Studio and everything installed you can actually look at the code in here if you 65 00:03:50,870 --> 00:03:51,470 want to. 66 00:03:51,470 --> 00:03:53,720 And you can get a better understanding of how this works. 67 00:03:53,720 --> 00:03:55,220 But we're not going to get too much into it. 68 00:03:55,220 --> 00:03:58,910 We're only gonna go over how we can actually use this in our blueprints. 69 00:03:59,390 --> 00:04:00,740 So how do we use this? 70 00:04:00,740 --> 00:04:03,290 Well, this has a function library. 71 00:04:03,290 --> 00:04:05,210 And what a function library does. 72 00:04:05,210 --> 00:04:09,770 Is it makes certain functions available in all other blueprints. 73 00:04:09,770 --> 00:04:11,210 And this is how I set this up. 74 00:04:11,210 --> 00:04:16,850 So simply by having this installed in the plugins folder, I can now access this in any blueprint that 75 00:04:16,850 --> 00:04:17,690 I want to. 76 00:04:17,690 --> 00:04:20,570 And we want to access this of course in the player. 77 00:04:20,570 --> 00:04:25,850 So blueprints characters player and go to BP player. 78 00:04:27,120 --> 00:04:29,310 And in here we now want to. 79 00:04:29,310 --> 00:04:34,740 Well, first of all, we want to go to the event graph and look for our jump for the IA jump. 80 00:04:35,840 --> 00:04:41,750 And the way we want to trigger the slide is if we press jump while down is also being held. 81 00:04:42,600 --> 00:04:47,040 But for now, let's just use this on jump and just see how it works. 82 00:04:47,040 --> 00:04:50,550 So for now, we just click alt and here and stop the jumping. 83 00:04:50,550 --> 00:04:52,890 And instead we just want to use this for the sliding. 84 00:04:52,890 --> 00:04:54,120 Now for testing. 85 00:04:54,120 --> 00:04:58,620 And I can just drag off here and just type in root motion. 86 00:04:58,620 --> 00:05:04,830 And here we have these two functions the apply root motion constant force and apply root motion constant 87 00:05:04,830 --> 00:05:06,420 force with callbacks. 88 00:05:06,420 --> 00:05:10,080 And these are the two functions I created which are in this plugin. 89 00:05:10,170 --> 00:05:12,990 So the first one doesn't have any callbacks. 90 00:05:12,990 --> 00:05:18,360 And this is a monstrosity if you look at it first because it has a lot of functionality built in, you 91 00:05:18,360 --> 00:05:21,540 don't need to understand everything that happens here, but just the basics. 92 00:05:21,840 --> 00:05:25,050 The one problem with this though, is that it only has an input and an output. 93 00:05:25,050 --> 00:05:30,870 It doesn't tell us when the event is over, it doesn't give us a way to cancel the event. 94 00:05:30,870 --> 00:05:35,160 But if you just want to trigger something and just let it happen, don't worry about it anymore. 95 00:05:35,160 --> 00:05:40,140 You could use this, but we actually want to be able to cancel the slide if we get hit or get stunned, 96 00:05:40,140 --> 00:05:40,950 for example. 97 00:05:40,950 --> 00:05:47,190 So again, we want to look for root motion and we want to apply root motion constant force with callbacks. 98 00:05:47,190 --> 00:05:50,070 And this gives us and actually connect to the right side. 99 00:05:50,070 --> 00:05:55,410 For some reason I go from started to the left side and then disconnect this in case this also happened 100 00:05:55,410 --> 00:05:55,830 for you. 101 00:05:55,830 --> 00:05:59,940 And this actually gives us the Oncompleted event, the on fail event. 102 00:05:59,940 --> 00:06:02,130 And it also gives us the async action. 103 00:06:02,130 --> 00:06:04,740 And here we can actually call cancel. 104 00:06:04,800 --> 00:06:11,340 So if we get stunned or something happens, we can just link in here and cancel the slide. 105 00:06:11,340 --> 00:06:12,330 The slide movement. 106 00:06:12,330 --> 00:06:14,430 So this is very important. 107 00:06:14,430 --> 00:06:16,380 But for now let's just try it out. 108 00:06:16,380 --> 00:06:18,180 What happens if we put something in here. 109 00:06:18,180 --> 00:06:18,540 Right. 110 00:06:18,540 --> 00:06:23,760 So the first important thing is that we need the character movement component, which we want to call 111 00:06:23,760 --> 00:06:25,200 this root motion on. 112 00:06:25,200 --> 00:06:29,070 So we can just grab the character movement and pass it in here. 113 00:06:29,070 --> 00:06:30,570 Otherwise nothing is going to work. 114 00:06:30,570 --> 00:06:33,390 So this is very important for the world direction. 115 00:06:33,390 --> 00:06:36,270 We can just get actor forward vector. 116 00:06:36,270 --> 00:06:40,920 And this is just going to give us a x of plus 1 or -1 for left or right. 117 00:06:40,920 --> 00:06:44,280 Strength is of course how much power we want to give the movement. 118 00:06:44,280 --> 00:06:48,540 And for now just put in like something like 700 for testing. 119 00:06:48,540 --> 00:06:52,260 And the duration is of course, how long the slide is going to be or the movement. 120 00:06:52,260 --> 00:06:52,440 Right. 121 00:06:52,440 --> 00:06:54,990 Because you could also use this for other types of movements. 122 00:06:54,990 --> 00:06:58,440 And I think 0.2 is a good value to start from. 123 00:06:58,980 --> 00:07:01,470 And the rest is actually not so important. 124 00:07:01,470 --> 00:07:02,850 These are just additional things. 125 00:07:02,850 --> 00:07:03,870 Features we can use. 126 00:07:03,870 --> 00:07:09,120 You could pass a curve, for example, to make this light start out very fast and slow down over time. 127 00:07:09,330 --> 00:07:14,610 We could carry on the velocity if you jump out of the slide like in Donkey Kong games in the Donkey 128 00:07:14,610 --> 00:07:16,650 Kong country, uh, remakes. 129 00:07:16,650 --> 00:07:22,740 This is a very, very often used gameplay mechanic where you just use your dash kind of to build up 130 00:07:22,740 --> 00:07:26,640 momentum, and then you jump out of it to carry that momentum into your jump. 131 00:07:26,640 --> 00:07:30,090 And this is what happens if we maintain the last root motion velocity. 132 00:07:30,090 --> 00:07:31,200 So I like the setting. 133 00:07:31,200 --> 00:07:32,400 You could clamp it. 134 00:07:32,400 --> 00:07:34,170 You could set it all of these things. 135 00:07:34,170 --> 00:07:37,650 And also important is the enable gravity. 136 00:07:37,650 --> 00:07:43,290 So if you want to make an air dash or something like that which should ignore gravity, we can just 137 00:07:43,290 --> 00:07:43,800 keep it off. 138 00:07:43,800 --> 00:07:45,450 But we actually want to make a slide. 139 00:07:45,450 --> 00:07:49,230 So if we slide off a ledge we actually do want gravity to take effect. 140 00:07:49,230 --> 00:07:51,870 So we want to check this and set it to true. 141 00:07:51,900 --> 00:07:52,500 Right. 142 00:07:52,500 --> 00:07:55,440 So now we set up the basic things here. 143 00:07:55,440 --> 00:07:56,550 Let's just try it out. 144 00:07:56,550 --> 00:07:59,910 Go to the map and I press jump or Space. 145 00:07:59,910 --> 00:08:03,780 And you can see we get this nice little slide right. 146 00:08:03,780 --> 00:08:06,780 And you cannot steer against it and things like that. 147 00:08:06,780 --> 00:08:07,170 Right. 148 00:08:07,170 --> 00:08:09,420 It kind of takes over your character. 149 00:08:10,200 --> 00:08:11,820 But we aren't playing the animation yet. 150 00:08:11,820 --> 00:08:12,960 But this is working. 151 00:08:12,960 --> 00:08:14,460 So this is the movement itself. 152 00:08:14,460 --> 00:08:15,660 It is working. 153 00:08:16,230 --> 00:08:23,040 So now that the slide itself is working, we want to just use this for the jumping again, right? 154 00:08:23,040 --> 00:08:25,290 We can just use the started for the jumping again. 155 00:08:25,290 --> 00:08:31,830 And we actually want to introduce a branch here so that if we press jump and our holding down we then 156 00:08:31,830 --> 00:08:33,450 want to execute this instead. 157 00:08:33,450 --> 00:08:37,230 But we actually don't have an input for up and down assigned yet. 158 00:08:37,230 --> 00:08:39,840 So we first need to do that with the input system. 159 00:08:40,260 --> 00:08:46,530 Go to the content drawer and the content input folder and actions. 160 00:08:46,530 --> 00:08:48,900 We already have the IA move right? 161 00:08:48,900 --> 00:08:55,470 But because we can only walk left and right in our game so far we only set it up as an axis mundi. 162 00:08:55,470 --> 00:09:00,360 But actually now we also want to have the down and up input, the down input we want for the sliding, 163 00:09:00,360 --> 00:09:05,910 like I said before, but later on we are also going to implement ladder climbing and for climbing. 164 00:09:05,910 --> 00:09:08,190 We also want to have the up input as well. 165 00:09:08,190 --> 00:09:12,060 So we can just go from axis 1D now and go to axis 2D. 166 00:09:12,060 --> 00:09:16,050 So this will give us left, right, up and down at the same time. 167 00:09:17,130 --> 00:09:22,560 And we want to save this and go to the input, the IMC action. 168 00:09:22,560 --> 00:09:28,500 So nothing has changed yet, but we are now able to also put in more buttons for up and down. 169 00:09:28,500 --> 00:09:29,100 Right? 170 00:09:29,100 --> 00:09:33,600 So under the I move I now want to implement the button for up. 171 00:09:33,600 --> 00:09:39,000 First let's just do this and add one here and put it to W. 172 00:09:39,270 --> 00:09:43,350 And the default axis for movement is left and right. 173 00:09:43,350 --> 00:09:45,810 So that is y D and A are working. 174 00:09:45,810 --> 00:09:48,900 But for w we need to add another modifier. 175 00:09:48,900 --> 00:09:54,420 So for modifier we actually want to use the swizzle input axis values. 176 00:09:54,420 --> 00:09:58,830 And this just lets us go from an x axis to a y axis. 177 00:09:59,160 --> 00:10:04,710 And this is all it takes because for the y axis up is the default direction. 178 00:10:04,710 --> 00:10:06,120 So then add another one. 179 00:10:06,120 --> 00:10:08,910 And here instead of w we want to click on s. 180 00:10:08,910 --> 00:10:12,420 And s is the down button for wasD controls. 181 00:10:12,420 --> 00:10:15,990 And again here we need to swizzle on the modifiers. 182 00:10:15,990 --> 00:10:18,930 Swizzle input axis to go on the y axis. 183 00:10:18,930 --> 00:10:22,050 But here we also need to negate like we did for the A right. 184 00:10:22,050 --> 00:10:26,250 Because A is left, we had to negate it, as you can see here. 185 00:10:26,250 --> 00:10:28,110 So for the S we just do the same thing. 186 00:10:28,110 --> 00:10:30,300 Just add another one on top of swizzle. 187 00:10:30,300 --> 00:10:33,810 We also want to negate and then just save this. 188 00:10:33,810 --> 00:10:35,490 If we go back to our blueprints. 189 00:10:35,490 --> 00:10:38,880 Now compile and save, we're actually going to get an error right. 190 00:10:38,880 --> 00:10:42,420 So this is well we can just click here to see what's going on. 191 00:10:42,420 --> 00:10:46,680 And the problem is that our IA move now turned into a vector 2D. 192 00:10:46,920 --> 00:10:48,720 So we can actually start at the first one. 193 00:10:48,720 --> 00:10:48,930 Right. 194 00:10:48,930 --> 00:10:51,990 So the uh enhanced input IA move. 195 00:10:51,990 --> 00:10:56,730 Now these uh now these pins don't match anymore. 196 00:10:56,730 --> 00:10:58,650 So these are for the X right. 197 00:10:58,650 --> 00:10:59,340 We want the x. 198 00:10:59,340 --> 00:11:05,040 So here we can just disconnect this and we right click and break uh split struct pin. 199 00:11:05,040 --> 00:11:07,440 And now we can split the x and the y. 200 00:11:07,470 --> 00:11:11,580 So here we need the x right for the left and right movement. 201 00:11:11,580 --> 00:11:12,600 And for the rotation. 202 00:11:12,600 --> 00:11:17,640 We just need the x and the y we can then use for other things later like the ladder climbing. 203 00:11:17,640 --> 00:11:19,140 But now just compile and save. 204 00:11:19,140 --> 00:11:22,920 But there's still something left here like the float times float right? 205 00:11:22,920 --> 00:11:28,650 Because for the tri wall slide, if we check if we are looking towards the wall and pressing towards 206 00:11:28,650 --> 00:11:30,720 the wall, we also just check the x. 207 00:11:30,720 --> 00:11:33,720 So here we can again disconnect this hold alt and left click. 208 00:11:33,720 --> 00:11:37,230 And here split the struct pin and we only use the x. 209 00:11:37,230 --> 00:11:39,300 In this case we don't care about the y at all. 210 00:11:39,300 --> 00:11:40,980 And we can just compile and save. 211 00:11:40,980 --> 00:11:44,370 And for now let's just go in here and everything works again, right? 212 00:11:44,370 --> 00:11:45,150 We can walk. 213 00:11:45,150 --> 00:11:46,680 The wall slide is working. 214 00:11:46,680 --> 00:11:48,240 The jumping is working again. 215 00:11:48,240 --> 00:11:54,750 But now we have set up the inputs which we can use for the climbing and also for the sliding. 216 00:11:55,200 --> 00:11:57,480 So now let's set up the sliding. 217 00:11:57,480 --> 00:12:00,450 And again in the BP player this getea move. 218 00:12:00,450 --> 00:12:03,000 We actually want to use this for the slide as well. 219 00:12:03,000 --> 00:12:06,810 So we can just copy this and go to the event graph. 220 00:12:06,810 --> 00:12:08,280 And we can look for our IA. 221 00:12:08,280 --> 00:12:10,950 Jump right to teleport here. 222 00:12:10,950 --> 00:12:14,160 And now here we want to add yet another branch. 223 00:12:14,160 --> 00:12:16,410 So first we just check for is wall sliding. 224 00:12:16,410 --> 00:12:19,800 And if we are not wall sliding well then we want to check. 225 00:12:19,800 --> 00:12:21,210 Are we holding down. 226 00:12:21,210 --> 00:12:23,730 And then decide do we jump or do we slide. 227 00:12:24,790 --> 00:12:28,180 So here we can just drag off and branch another time. 228 00:12:29,000 --> 00:12:34,970 And here we can just, uh, control V to put in our get move. 229 00:12:34,970 --> 00:12:39,140 If you didn't copy it, we can just look for get IA, move here as well and use this. 230 00:12:39,140 --> 00:12:45,320 And here we just want to check if the Y which is the up and down if this is less than zero. 231 00:12:45,320 --> 00:12:45,800 Right. 232 00:12:45,800 --> 00:12:48,530 So this means we are currently holding down. 233 00:12:48,530 --> 00:12:52,190 And I can just add a comment here is holding down. 234 00:12:53,050 --> 00:12:54,640 Add a small o. 235 00:12:57,270 --> 00:12:58,230 Like this. 236 00:12:58,440 --> 00:12:58,890 Right. 237 00:12:58,890 --> 00:13:01,290 So if we are holding down, I actually want to change this. 238 00:13:01,290 --> 00:13:02,340 So hold Ctrl. 239 00:13:02,340 --> 00:13:04,620 And if we are not holding down we want to jump. 240 00:13:04,620 --> 00:13:05,640 This is fine. 241 00:13:05,640 --> 00:13:09,480 If we are holding down well then we want to slide. 242 00:13:09,480 --> 00:13:14,580 So we can use this here this monstrosity of a node. 243 00:13:14,580 --> 00:13:19,620 And if we are holding down while jumping, well we can do the slide instead. 244 00:13:19,620 --> 00:13:20,670 Compile and save. 245 00:13:20,670 --> 00:13:21,720 And let's check this out. 246 00:13:21,720 --> 00:13:23,970 I'm not holding down, I'm just pressing jump. 247 00:13:23,970 --> 00:13:25,860 I'm jumping, I'm holding down. 248 00:13:26,280 --> 00:13:29,730 And now kind of sliding over to the side. 249 00:13:31,470 --> 00:13:31,920 Right. 250 00:13:31,920 --> 00:13:32,430 Jumping. 251 00:13:32,430 --> 00:13:33,210 Sliding. 252 00:13:34,890 --> 00:13:40,590 One problem you might notice here is that if I press down now, the character just starts looking to 253 00:13:40,590 --> 00:13:43,350 the right side, even if I just press down and no direction. 254 00:13:43,350 --> 00:13:48,660 And this is actually related to the changes we made to the 1D and 2D axis. 255 00:13:48,660 --> 00:13:50,460 So let's just fix this quickly. 256 00:13:50,670 --> 00:13:53,730 We can fix this on the IA move event. 257 00:13:53,730 --> 00:13:56,100 So here we can just look for IA move. 258 00:13:57,250 --> 00:13:59,740 Uh, not the getai move, but the input action. 259 00:13:59,740 --> 00:14:06,070 So what changed now is that this triggered is not only active if we press left or right, but this is 260 00:14:06,070 --> 00:14:09,100 actually also activated if we press up or down. 261 00:14:09,100 --> 00:14:13,840 And this means if we press up or down, this access value for x is going to be zero. 262 00:14:13,840 --> 00:14:19,630 So inside of this update rotation we had this check of if bigger or equals than zero we look to the 263 00:14:19,630 --> 00:14:20,170 right. 264 00:14:20,170 --> 00:14:22,900 So if we press up or down this is going to be zero. 265 00:14:22,900 --> 00:14:24,010 This is going to be triggered. 266 00:14:24,010 --> 00:14:25,750 And we're going to look to the right side. 267 00:14:25,750 --> 00:14:29,800 So we have to add one more branch in here to check that edge case. 268 00:14:29,800 --> 00:14:32,440 So here we can just branch. 269 00:14:33,310 --> 00:14:39,250 At a branch here, and we want to check that the direction does not equal zero. 270 00:14:39,670 --> 00:14:40,570 Like this. 271 00:14:44,820 --> 00:14:46,050 And just like this. 272 00:14:46,410 --> 00:14:47,250 Right. 273 00:14:47,250 --> 00:14:51,360 And here we also got to be careful with the float rounding issues. 274 00:14:51,360 --> 00:14:53,310 But actually this worked out for me. 275 00:14:53,310 --> 00:14:55,710 Like I don't have to check the nearly equal. 276 00:14:55,710 --> 00:14:56,100 Right. 277 00:14:56,100 --> 00:14:57,360 We could also put in the nearly equal. 278 00:14:57,360 --> 00:14:59,730 But actually this one worked out for me in this case. 279 00:14:59,730 --> 00:15:05,400 But it is something we should keep in mind with the floating point errors that are common in computers. 280 00:15:05,400 --> 00:15:07,260 But for now, this is working fine. 281 00:15:08,620 --> 00:15:09,610 And let's try this out. 282 00:15:09,640 --> 00:15:13,810 Now, if we go here, right, I look to the left, I press down. 283 00:15:13,810 --> 00:15:14,410 It is fine. 284 00:15:14,410 --> 00:15:15,910 We don't flip to the other side. 285 00:15:15,910 --> 00:15:18,730 And if I hold down and jump, we can slide left. 286 00:15:18,730 --> 00:15:21,490 If I turn it to the right, hold down and jump, we can slide. 287 00:15:21,490 --> 00:15:25,000 And if I just jump, we can jump while walking, right? 288 00:15:25,000 --> 00:15:27,490 So we have not technically implemented the slide. 289 00:15:27,490 --> 00:15:31,990 Of course we still want to polish it up, but we can jump, we can slide, we can turn around, we can 290 00:15:31,990 --> 00:15:32,500 wall slide. 291 00:15:32,500 --> 00:15:34,060 All of this is still working. 292 00:15:34,640 --> 00:15:39,380 But before we start polishing up the values we use for the slide, I first want to implement the animation 293 00:15:39,380 --> 00:15:43,490 because things are just easier to understand once they actually look like sliding. 294 00:15:43,490 --> 00:15:50,300 So go back to the BP player and for the Aya jump, go to the Aya Jump event. 295 00:15:51,500 --> 00:15:52,340 And here. 296 00:15:52,340 --> 00:15:52,850 Right. 297 00:15:52,850 --> 00:15:59,630 So before we start sliding, like we did for the wall slide, we want to use a boolean to save the state. 298 00:15:59,630 --> 00:16:00,140 Right. 299 00:16:00,140 --> 00:16:05,990 So here we just create another variable and just called this sliding or just call. 300 00:16:05,990 --> 00:16:09,890 It is ground sliding to make sure there's no confusion. 301 00:16:10,160 --> 00:16:11,930 And if we press the button here right. 302 00:16:11,930 --> 00:16:14,150 We set this ground sliding to true. 303 00:16:14,630 --> 00:16:16,850 And then we go into this animation. 304 00:16:17,480 --> 00:16:22,400 And we then want to set this back to false, which is great that we have the callbacks here, right? 305 00:16:22,400 --> 00:16:28,370 We don't want to do this here because this happens right away even before the force ends. 306 00:16:28,370 --> 00:16:32,450 So oncomplete we want to set it to false and on fail. 307 00:16:32,450 --> 00:16:33,860 We also want to set it to false. 308 00:16:33,860 --> 00:16:34,880 The sliding right. 309 00:16:34,880 --> 00:16:39,950 So this is just a nice way we can handle the animation through our callback events. 310 00:16:39,950 --> 00:16:43,580 Now of course we also need to add this to the animation blueprint. 311 00:16:43,970 --> 00:16:47,120 Go to the content drawer in the blueprints characters player. 312 00:16:47,120 --> 00:16:48,680 The ABP player. 313 00:16:48,680 --> 00:16:52,340 We now want to add a new state for the sliding. 314 00:16:52,340 --> 00:16:57,590 So here from the idle we can go to the animation state. 315 00:16:58,310 --> 00:17:04,280 And add in slide here and just open it up and here just play slide. 316 00:17:04,280 --> 00:17:06,050 And for sliding there is no shooting. 317 00:17:06,050 --> 00:17:08,720 We are going to prevent shooting while we are sliding. 318 00:17:08,720 --> 00:17:10,280 So just play slide here. 319 00:17:11,000 --> 00:17:12,349 And go back out. 320 00:17:12,349 --> 00:17:17,839 And the condition here, of course, is from the idle owning player is sliding. 321 00:17:19,470 --> 00:17:24,030 And I think we just have to compile and save because it doesn't know about this variable yet. 322 00:17:24,300 --> 00:17:25,890 And actually it was my mistake. 323 00:17:25,890 --> 00:17:27,839 It is called is ground sliding. 324 00:17:29,270 --> 00:17:31,550 And this is the transitional condition here. 325 00:17:31,550 --> 00:17:32,090 Right. 326 00:17:32,090 --> 00:17:37,670 And we can copy this, go back out to locomotion and to go from sliding back to idle, we just do the 327 00:17:37,670 --> 00:17:44,930 same thing and go here and just copy paste this in and then just use the not boolean to completely flip 328 00:17:44,930 --> 00:17:45,650 it around. 329 00:17:46,880 --> 00:17:49,070 And we can then just connect this here. 330 00:17:49,070 --> 00:17:49,340 Right. 331 00:17:49,340 --> 00:17:52,310 So we can go from idle to slide and from slide to idle. 332 00:17:52,310 --> 00:17:57,590 But actually it is also very common from run actually more so common to go into the slide. 333 00:17:57,590 --> 00:18:00,020 So we can also go from run into the slide. 334 00:18:00,020 --> 00:18:02,090 And we can just copy these conditions. 335 00:18:02,090 --> 00:18:06,740 The is ground sliding to go here and just do this. 336 00:18:08,520 --> 00:18:11,580 And now you'd think that maybe we also have to go from slide to run. 337 00:18:11,580 --> 00:18:16,650 But actually, like I said before, if we end the slide, it's going to go to idle and it's going to 338 00:18:16,650 --> 00:18:17,970 try to go to run right away. 339 00:18:17,970 --> 00:18:20,070 It's going to evaluate on the same frame. 340 00:18:20,070 --> 00:18:23,910 So we're not even going to get like a single frame of idle if we are able to run. 341 00:18:23,910 --> 00:18:25,860 And this is just a cleaner way. 342 00:18:25,860 --> 00:18:29,070 Of course, we could also go back, but it would have the same result. 343 00:18:30,340 --> 00:18:31,840 Now let's try this out. 344 00:18:31,840 --> 00:18:36,850 Go into the map, hold down and jump and you can see the nice slide animation. 345 00:18:36,850 --> 00:18:38,620 It is aligned correctly already, right? 346 00:18:38,620 --> 00:18:40,750 Like all of this is working out nicely. 347 00:18:40,870 --> 00:18:43,000 And now we can tell the slide is a little bit short. 348 00:18:43,000 --> 00:18:47,110 So we might want to adjust some values to make it more useful. 349 00:18:47,110 --> 00:18:48,070 But it looks cool. 350 00:18:48,070 --> 00:18:49,240 It is working out. 351 00:18:49,800 --> 00:18:51,240 Now back in the player. 352 00:18:51,240 --> 00:18:54,300 We just want to change a couple of these values, right. 353 00:18:54,480 --> 00:19:00,660 So I want to change the duration to 0.3 to make it a little bit longer and also make it stronger. 354 00:19:00,660 --> 00:19:02,790 So strength of 1000. 355 00:19:03,760 --> 00:19:07,030 And of course these should again be variables. 356 00:19:07,030 --> 00:19:10,240 So from the strength we can just drag off promote the variable. 357 00:19:10,240 --> 00:19:12,190 And it's called slide strength. 358 00:19:13,660 --> 00:19:18,430 And drag out from the duration and just call it slide duration. 359 00:19:19,280 --> 00:19:21,740 And just like this and test it out again. 360 00:19:21,740 --> 00:19:22,850 Compile and save. 361 00:19:23,000 --> 00:19:24,020 Go back in here. 362 00:19:24,020 --> 00:19:24,440 And yeah. 363 00:19:24,440 --> 00:19:28,070 So this is a more useful slide from a gameplay perspective. 364 00:19:29,440 --> 00:19:31,360 And yet everything else still works. 365 00:19:31,360 --> 00:19:36,490 And this kind of showed you how we can use a custom made plugin to use it in here. 366 00:19:36,490 --> 00:19:43,540 And to overcome this like very hard problem of sliding by using the root motion that is built into Unreal 367 00:19:43,540 --> 00:19:44,050 Engine. 368 00:19:44,050 --> 00:19:49,600 However, you would have to install the whole gameplay ability system, which is a very complicated. 369 00:19:49,600 --> 00:19:54,130 But through my plugin you just get easy access to the one node that we need. 370 00:19:54,130 --> 00:19:57,040 There are still a couple of edge cases and problems with the slides. 371 00:19:57,040 --> 00:20:00,880 In the next video, we're going to make some adjustments to it and improve it even further. 33861

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