﻿1
00:00:04,170 --> 00:00:04,650
‫Hey.

2
00:00:04,650 --> 00:00:05,580
‫Welcome back.

3
00:00:05,610 --> 00:00:09,390
‫Now we know that we need to get the hit result under the cursor.

4
00:00:09,420 --> 00:00:14,070
‫We're going to talk a little bit more about how that works and what that means in this video.

5
00:00:14,250 --> 00:00:20,520
‫So our goal is to get the hit results under the cursor and show this location, and we can do so by

6
00:00:20,520 --> 00:00:22,090
‫drawing a debug sphere.

7
00:00:22,110 --> 00:00:24,150
‫We'll learn how to do that as well.

8
00:00:24,180 --> 00:00:27,300
‫So let's talk about something called a hit result.

9
00:00:27,600 --> 00:00:30,550
‫In games will often want to do something like this.

10
00:00:30,570 --> 00:00:32,520
‫We'll have a point in space.

11
00:00:32,550 --> 00:00:39,210
‫We'll call this point start and it has the type F vector and we'll have an end location.

12
00:00:39,240 --> 00:00:43,260
‫This will also be a point in space of type F vector.

13
00:00:43,410 --> 00:00:48,720
‫Now let's say we'd like to draw an invisible line from the start point to the end point.

14
00:00:48,750 --> 00:00:54,450
‫And at the moment we draw this line, we'd like to see if there are any objects in between the start

15
00:00:54,450 --> 00:00:55,800
‫and end locations.

16
00:00:56,280 --> 00:01:01,470
‫Now, if there are, then this line that we're drawing in space is going to hit that object.

17
00:01:01,470 --> 00:01:05,400
‫On the surface, when this happens, we call this a hit event.

18
00:01:05,430 --> 00:01:10,820
‫Now, when we draw an invisible line like this, it's called performing a line trace.

19
00:01:10,830 --> 00:01:14,520
‫And when we hit something, we say that we have a trace hit.

20
00:01:14,550 --> 00:01:21,240
‫Now, if we do hit something and get a hit event, then the trace hit stores information in a struct

21
00:01:21,240 --> 00:01:22,820
‫called a hit result.

22
00:01:22,830 --> 00:01:24,700
‫Its type is F hit result.

23
00:01:24,720 --> 00:01:31,560
‫Now the F hit results struct contains variables that store information about the hit event, including

24
00:01:31,560 --> 00:01:38,680
‫the hit location as an f vector in space and the actor that we hit, among other information.

25
00:01:38,700 --> 00:01:44,100
‫Now, when we perform a line trace, we do so by specifying a collision channel.

26
00:01:44,130 --> 00:01:48,390
‫Usually with line traces, we choose the channel called visibility.

27
00:01:48,510 --> 00:01:56,070
‫There exists an enum called E Collision Channel, and in this enum there's an enum constant called XY

28
00:01:56,070 --> 00:01:57,030
‫visibility.

29
00:01:57,180 --> 00:02:01,470
‫This is one of the parameters we specify when performing a line trace.

30
00:02:01,740 --> 00:02:07,380
‫Now, if we specify the visibility channel, that means objects that are set to block the visibility

31
00:02:07,380 --> 00:02:10,980
‫channel in their collision settings will register hit events.

32
00:02:11,130 --> 00:02:16,350
‫Any objects that are not set to block the visibility channel will not generate hit events.

33
00:02:16,380 --> 00:02:19,350
‫Now we would like the trace result under the cursor.

34
00:02:19,590 --> 00:02:23,040
‫Imagine we have the screen here and here's our cursor now.

35
00:02:23,040 --> 00:02:28,620
‫At the tip of our cursor, we have a point on the screen when we use the function to get the hit result

36
00:02:28,620 --> 00:02:29,730
‫under the cursor.

37
00:02:29,760 --> 00:02:35,040
‫What happens is we have our camera and it may see some objects in the world, such as the floor here.

38
00:02:35,040 --> 00:02:40,950
‫And we're performing a line trace from the camera at the point on the screen corresponding to our cursor

39
00:02:40,950 --> 00:02:45,090
‫location, and we're shooting the line trace straight out into the world.

40
00:02:45,090 --> 00:02:51,570
‫And if we hit something, we'll generate a hit event and store the information in a hit result struct.

41
00:02:52,080 --> 00:02:54,470
‫So let's find out how we can do this.

42
00:02:54,480 --> 00:03:01,560
‫I'm here in tank CP and what I'd like to do is get the hit result under the cursor every frame, which

43
00:03:01,560 --> 00:03:03,240
‫means we need the tick function.

44
00:03:03,240 --> 00:03:08,160
‫So again, we're going back into base upon and finding our tick function here.

45
00:03:08,190 --> 00:03:14,100
‫Now we're not using it for anything in base pawn so we can move this function into the tank class just

46
00:03:14,100 --> 00:03:15,570
‫like we did with Begin Play.

47
00:03:15,570 --> 00:03:21,600
‫So I'm going to highlight the function declaration along with its comment and copy it.

48
00:03:21,600 --> 00:03:28,590
‫And after that I'll delete this whole section, public and all, and then I'll go back into Tank H and

49
00:03:28,590 --> 00:03:33,150
‫here in the public section I'm going to paste the tick function declaration.

50
00:03:33,150 --> 00:03:37,620
‫Now we're not using it in base pawn, so I'm going to remove the tick function from base pont.

51
00:03:37,680 --> 00:03:40,710
‫CP Now it's gone from base pawn.

52
00:03:41,340 --> 00:03:47,880
‫Now we have it here declared intent, but we also need to define the function in tank.

53
00:03:48,060 --> 00:03:54,180
‫CP I'm going to do it here in tank DHCP, just under setup player input component.

54
00:03:54,180 --> 00:03:56,400
‫So we're going to say void tick.

55
00:03:57,340 --> 00:03:59,620
‫It takes a float called Delta Time.

56
00:04:00,940 --> 00:04:02,350
‫And there's our body.

57
00:04:02,380 --> 00:04:09,180
‫Now again, we need a tank just before the tick function, along with the scope resolution operator.

58
00:04:09,190 --> 00:04:14,530
‫And we also need to call super tick and pass in Delta time.

59
00:04:16,450 --> 00:04:19,240
‫So we now have tick on the tank class.

60
00:04:19,450 --> 00:04:23,560
‫What we want to do is get the hit results under the cursor.

61
00:04:23,710 --> 00:04:25,450
‫So here's how we do it.

62
00:04:25,480 --> 00:04:31,260
‫The function we're going to use exists on the player controller called get hit result under cursor.

63
00:04:31,270 --> 00:04:32,800
‫We've been talking about this.

64
00:04:32,980 --> 00:04:34,530
‫Now here's the syntax.

65
00:04:34,540 --> 00:04:36,160
‫It takes a trace channel.

66
00:04:36,190 --> 00:04:40,660
‫Remember, we need to specify a trace channel and we're going to use visibility.

67
00:04:40,840 --> 00:04:43,690
‫Now we have two additional input parameters.

68
00:04:43,720 --> 00:04:46,720
‫The first is a bool called B trace complex.

69
00:04:46,750 --> 00:04:49,120
‫We'll talk about what that means in a second.

70
00:04:49,210 --> 00:04:52,270
‫And the third input parameter is an F hit result.

71
00:04:52,390 --> 00:04:57,820
‫Now I'm going to click on F hit result just to see this type here in the documentation.

72
00:04:58,480 --> 00:05:01,960
‫And if I scroll down, we'll see some of the variables.

73
00:05:01,990 --> 00:05:06,670
‫One of them is called actor and it's description says Actor Hit by the Trace.

74
00:05:06,700 --> 00:05:13,510
‫We also have this B blocking hit, which says indicates if this hit was a result of a blocking collision.

75
00:05:13,750 --> 00:05:17,770
‫Now, among the other variables, we have things like impact point.

76
00:05:18,010 --> 00:05:22,000
‫This is the location in space where we actually hit something.

77
00:05:22,600 --> 00:05:26,150
‫So why don't we go ahead and attempt to call this function?

78
00:05:26,170 --> 00:05:32,170
‫We first want our player, controller and thanks to what we did here and begin play, we have player,

79
00:05:32,170 --> 00:05:33,370
‫controller, ref.

80
00:05:33,400 --> 00:05:38,770
‫Now the first thing we should do is check to see if player controller ref is valid.

81
00:05:39,100 --> 00:05:42,140
‫We can always pass a pointer into an if statement.

82
00:05:42,160 --> 00:05:47,270
‫It'll return true if the pointer itself is not a null pointer.

83
00:05:47,290 --> 00:05:52,930
‫If it is a null pointer, it'll return false in an if statement and we'll never reach the inside of

84
00:05:52,930 --> 00:05:53,920
‫the if statement.

85
00:05:54,070 --> 00:05:59,740
‫It's always a good idea to check our pointers and make sure they're not null before we use them.

86
00:06:00,010 --> 00:06:04,960
‫Now we're going to get our player, controller ref and we're going to use the arrow operator to call

87
00:06:04,960 --> 00:06:08,950
‫the function, get hit result under cursor.

88
00:06:09,100 --> 00:06:12,670
‫Now we can see with the pop up that we have three input parameters.

89
00:06:12,850 --> 00:06:14,650
‫The first is the Trace Channel.

90
00:06:14,950 --> 00:06:22,030
‫We're going to use EA Collision Channel and if we type two colons, we get a dropdown that shows us

91
00:06:22,030 --> 00:06:26,350
‫all of the different enum constants in the EA Collision Channel enum.

92
00:06:26,530 --> 00:06:34,540
‫We want to use visibility, so we're going to type XY visibility to specify that we're using the visibility

93
00:06:34,540 --> 00:06:35,230
‫channel.

94
00:06:35,440 --> 00:06:41,470
‫Now the next parameter is called B Trace Complex and we're going to pass false into this.

95
00:06:41,500 --> 00:06:44,590
‫Now we'll discuss in a few minutes what this means.

96
00:06:44,590 --> 00:06:46,900
‫But for now we're going to use false.

97
00:06:47,110 --> 00:06:50,300
‫Now for the third parameter, we need a hit result.

98
00:06:50,320 --> 00:06:53,140
‫This is a struct of type F hit result.

99
00:06:53,170 --> 00:06:59,500
‫Now, if you hover over this, you'll see that F hit result is being passed in as a reference as indicated

100
00:06:59,500 --> 00:07:02,740
‫by the reference operator that looks like an ampersand.

101
00:07:02,890 --> 00:07:08,320
‫Now, usually when you pass something in as a reference, it's a cost reference, meaning the function

102
00:07:08,320 --> 00:07:09,730
‫won't be able to change it.

103
00:07:09,730 --> 00:07:13,870
‫But here we're passing in an F hit result as a non const reference.

104
00:07:14,110 --> 00:07:20,120
‫This is generally a hint that the function is designed to change this input parameter directly.

105
00:07:20,140 --> 00:07:27,730
‫What get hit result under cursor is going to do is fill in those variables in the hit result with information

106
00:07:27,730 --> 00:07:29,260
‫about the hit result.

107
00:07:29,290 --> 00:07:32,710
‫This means we need to pass one of these f hit results in.

108
00:07:32,740 --> 00:07:37,540
‫We're going to create a local variable here in the if check of type F hit result.

109
00:07:38,380 --> 00:07:44,650
‫And we can call this hit result and we can simply pass this N as the third input parameter.

110
00:07:44,830 --> 00:07:50,320
‫Now, after we've called this function, then this hit result will be filled in with data about this

111
00:07:50,320 --> 00:07:51,180
‫line trace.

112
00:07:51,190 --> 00:08:00,040
‫For example, we can access hit result dot actor to get the actor that was hit or dot impact point to

113
00:08:00,040 --> 00:08:03,430
‫get the point in space where we had the hit event.

114
00:08:03,580 --> 00:08:08,470
‫So the hit result is what we will use to get information about the line trace.

115
00:08:08,860 --> 00:08:13,450
‫Now often it's nice to be able to see the result of a line trace.

116
00:08:13,450 --> 00:08:18,010
‫We can easily visualize the result of a line trace by drawing a debug sphere.

117
00:08:18,340 --> 00:08:24,580
‫Debug spheres are simple shapes that we draw in space, and they're great for showing a location and

118
00:08:24,580 --> 00:08:26,380
‫we use these when debugging.

119
00:08:26,380 --> 00:08:29,380
‫We don't actually use debug spheres in a shift game.

120
00:08:29,410 --> 00:08:32,150
‫So let's see how we can draw one of these debug spheres.

121
00:08:32,170 --> 00:08:36,430
‫Now here's the documentation for a function called draw debug sphere.

122
00:08:36,430 --> 00:08:38,800
‫It exists in draw debug helpers.

123
00:08:39,850 --> 00:08:45,160
‫So we can copy this header and include it wherever we like to call draw debug sphere.

124
00:08:45,190 --> 00:08:47,220
‫Now look at all the input parameters.

125
00:08:47,230 --> 00:08:52,240
‫First, it takes a world this way it knows which world to draw the sphere in.

126
00:08:52,270 --> 00:08:57,100
‫It takes an F vector for the center of the sphere as well as a float for the radius.

127
00:08:57,130 --> 00:09:00,800
‫It takes an N 32 for the number of segments for that sphere.

128
00:09:00,820 --> 00:09:04,810
‫The more segments, the more round the sphere it takes an F color.

129
00:09:04,840 --> 00:09:08,350
‫This way it knows which color to draw this sphere in.

130
00:09:08,380 --> 00:09:11,080
‫It wants to know if you want persistent lines.

131
00:09:11,080 --> 00:09:15,220
‫In other words, should the lines disappear immediately or should they persist?

132
00:09:15,220 --> 00:09:18,760
‫If they do persist, it wants to know the lifetime of the sphere.

133
00:09:18,760 --> 00:09:20,910
‫When should it stop drawing the sphere?

134
00:09:20,920 --> 00:09:25,660
‫If you don't draw persistent lines, say you'd like to draw it for a single frame, then you would pass

135
00:09:25,660 --> 00:09:27,880
‫negative one in as the lifetime.

136
00:09:27,910 --> 00:09:34,240
‫Now the last two parameters are optional, so we'll keep this simple by only discussing the first seven

137
00:09:34,240 --> 00:09:35,110
‫parameters.

138
00:09:35,110 --> 00:09:36,520
‫Let's see how this works.

139
00:09:36,730 --> 00:09:42,100
‫I'm going to draw a debug sphere now up at the top, I'm going to include draw debug helpers.

140
00:09:42,850 --> 00:09:46,630
‫That's where this draw debug sphere function is declared.

141
00:09:46,660 --> 00:09:52,900
‫Now let's go down to begin play and just simply draw a debug sphere to see how this works.

142
00:09:52,900 --> 00:09:58,030
‫So I'm going to call draw debug sphere and the.

143
00:09:58,110 --> 00:10:00,780
‫First input parameter is a new world.

144
00:10:01,110 --> 00:10:09,420
‫We can get our world at any time by calling Get World, Get World Returns a new world pointer to our

145
00:10:09,420 --> 00:10:10,500
‫current world.

146
00:10:10,500 --> 00:10:12,930
‫So that will satisfy the first input.

147
00:10:13,260 --> 00:10:16,420
‫Next, we need an f vector for the center of the sphere.

148
00:10:16,440 --> 00:10:22,380
‫Now we're calling this and begin play so I can simply call get actor location and this will get the

149
00:10:22,380 --> 00:10:24,130
‫location of our tank pond.

150
00:10:24,150 --> 00:10:26,400
‫Since we're in the tank class.

151
00:10:26,640 --> 00:10:29,250
‫Now I'm going to raise the sphere up by a bit.

152
00:10:29,250 --> 00:10:40,890
‫So I'm going to add an F vector with zero dot F for the x zero dot F for the Y and say 200 F for the

153
00:10:40,890 --> 00:10:41,380
‫Z.

154
00:10:41,400 --> 00:10:45,120
‫Now I'm going to place these input parameters each on their own line.

155
00:10:45,120 --> 00:10:48,300
‫So it's clear what we're passing in for each input.

156
00:10:48,330 --> 00:10:55,740
‫The second input is getting this expression, which is the actor location, plus a vector pointing upward

157
00:10:55,740 --> 00:10:57,230
‫with a length of 200.

158
00:10:57,240 --> 00:11:04,260
‫Adding these two vectors together will give me the location of the tank raised up in the Z axis by 200

159
00:11:04,260 --> 00:11:04,950
‫units.

160
00:11:04,980 --> 00:11:09,600
‫Now the next input parameter, it's going to be the radius of the sphere.

161
00:11:09,870 --> 00:11:16,970
‫I'm going to choose 100 F just so we can see what a debug sphere with a radius of 100 looks like.

162
00:11:16,980 --> 00:11:18,900
‫Next is the number of segments.

163
00:11:18,990 --> 00:11:20,470
‫I'm going to choose 12.

164
00:11:20,490 --> 00:11:22,130
‫We'll see what that looks like.

165
00:11:22,140 --> 00:11:29,640
‫Now for an F color, there exists an F color class and it has lots of colors built in such as red.

166
00:11:29,850 --> 00:11:34,410
‫Now for the boolean called B persistent lines, I'm going to choose true.

167
00:11:34,410 --> 00:11:38,280
‫And for the next input parameter we have the lifetime notice.

168
00:11:38,280 --> 00:11:40,850
‫It has a default value of negative one.

169
00:11:40,860 --> 00:11:44,610
‫That means by default it'll draw the debug sphere for a single frame.

170
00:11:44,610 --> 00:11:52,770
‫But I'm going to pass in 30 F so that we get the sphere for 30 seconds and I can omit the last two parameters.

171
00:11:52,770 --> 00:11:55,670
‫So here's our function call to draw debug sphere.

172
00:11:55,680 --> 00:11:58,260
‫Let's compile this and see what it looks like.

173
00:11:58,710 --> 00:12:00,210
‫Okay, so I'm back in the editor.

174
00:12:00,210 --> 00:12:03,750
‫I'm going to open a second window so we can see this in full screen.

175
00:12:03,750 --> 00:12:10,650
‫I can go to window view ports and select Viewport two and now I see this second window.

176
00:12:10,680 --> 00:12:15,300
‫It may not be full screen when it opens up, but you can always maximize it.

177
00:12:15,330 --> 00:12:18,570
‫Now from here I can play the game with alt p.

178
00:12:18,600 --> 00:12:19,770
‫Now check this out.

179
00:12:19,770 --> 00:12:21,300
‫Here's our debug sphere.

180
00:12:21,330 --> 00:12:23,610
‫Notice it's not perfectly round.

181
00:12:23,610 --> 00:12:26,570
‫We chose 12 for the number of segments.

182
00:12:26,580 --> 00:12:30,960
‫The more segments you choose, the more lines it takes to draw the sphere.

183
00:12:30,990 --> 00:12:34,380
‫Now, this is a sphere with a radius of 100.

184
00:12:34,380 --> 00:12:40,170
‫It's pretty big, and the center of the sphere is at the location of the tank, plus 200 units up in

185
00:12:40,170 --> 00:12:40,740
‫the air.

186
00:12:40,740 --> 00:12:43,950
‫So this is how we can draw debug spheres.

187
00:12:44,130 --> 00:12:49,890
‫So your challenge is to draw a debug sphere using the trace result under our cursor.

188
00:12:49,890 --> 00:12:55,140
‫So draw a debug sphere in our new if statement where we're checking if player controller ref is not

189
00:12:55,140 --> 00:12:55,680
‫null.

190
00:12:55,710 --> 00:13:02,520
‫Now using our hit result, get the impact point from the hit result and use that as the Center for the

191
00:13:02,520 --> 00:13:03,240
‫Sphere.

192
00:13:03,390 --> 00:13:09,510
‫Now for the persistent lines input parameter use false and for the duration use negative one.

193
00:13:09,510 --> 00:13:14,250
‫And this will result in drawing the sphere for a single frame, which is okay because we're calling

194
00:13:14,250 --> 00:13:16,530
‫this every frame inside the tic function.

195
00:13:16,530 --> 00:13:20,490
‫So pause the video and draw the debug sphere in the tick function.

196
00:13:23,240 --> 00:13:23,570
‫Okay.

197
00:13:23,570 --> 00:13:24,920
‫So I'm back here in Tank.

198
00:13:26,180 --> 00:13:32,480
‫Now I have this draw debug sphere function call here and begin play so I can go ahead and copy that

199
00:13:32,480 --> 00:13:38,450
‫and just remove it from begin play and we're going to go back up into tick here inside of our if statement

200
00:13:38,450 --> 00:13:42,380
‫and I'm just going to paste it here and we're going to change some of the input parameters.

201
00:13:42,380 --> 00:13:46,490
‫For one, we're changing the location for the center of the sphere.

202
00:13:46,490 --> 00:13:47,960
‫We're going to use the hit result.

203
00:13:47,960 --> 00:13:51,200
‫So I'm going to say hit result dot impact point.

204
00:13:51,440 --> 00:13:54,440
‫Now for the radius, I'd like to make this a bit smaller.

205
00:13:54,440 --> 00:13:56,510
‫Let's make it about 25.

206
00:13:56,810 --> 00:13:57,320
‫That's okay.

207
00:13:57,320 --> 00:13:59,360
‫If you didn't do that, I'm just doing this.

208
00:13:59,360 --> 00:14:01,280
‫So the sphere is not so big.

209
00:14:01,280 --> 00:14:06,230
‫Now, the second to last parameter we're passing in is for persistent lines.

210
00:14:06,230 --> 00:14:12,500
‫I'm going to pass in false and for the duration instead of 30 seconds, I'm going to use negative one

211
00:14:12,500 --> 00:14:13,190
‫point F.

212
00:14:13,190 --> 00:14:18,920
‫That way we'll get a sphere for a single frame, which is okay, again, we're calling this in the tick

213
00:14:18,920 --> 00:14:21,560
‫function, so we'll be calling this every frame.

214
00:14:21,560 --> 00:14:23,300
‫Let's go ahead and compile this.

215
00:14:23,750 --> 00:14:25,130
‫Now, back in the editor.

216
00:14:25,130 --> 00:14:28,010
‫If I hit play now, check this out.

217
00:14:28,040 --> 00:14:34,280
‫I have a debug sphere and it's being drawn at the impact point for the line trace under the cursor.

218
00:14:34,280 --> 00:14:42,590
‫Now we can move this up the walls and on other objects and the trace is hitting these objects because

219
00:14:42,590 --> 00:14:44,810
‫they're set to block the visibility channel.

220
00:14:44,840 --> 00:14:46,460
‫Pretty awesome right now.

221
00:14:46,460 --> 00:14:50,630
‫I promised we would discuss tracing complex versus tracing simple.

222
00:14:50,660 --> 00:14:53,510
‫I'm going to show you something while we're playing the game.

223
00:14:53,510 --> 00:14:57,770
‫Let's click in the viewport so that we have control over our palm.

224
00:14:57,770 --> 00:15:02,360
‫Now hit the tilde key and type the console command show collision.

225
00:15:02,360 --> 00:15:07,610
‫Now it may not be so easy to see on my screen, but you can definitely see it on your screen.

226
00:15:07,610 --> 00:15:10,880
‫Notice the collision for our pawns.

227
00:15:10,910 --> 00:15:18,020
‫Not only can we see the capsule, but we can see this collision volume around our tank and turret meshes.

228
00:15:18,020 --> 00:15:20,000
‫This is simple collision.

229
00:15:20,090 --> 00:15:24,050
‫Let me just show you real quick where we can see the simple collision.

230
00:15:24,080 --> 00:15:31,250
‫I'm going to go into assets and meshes and if I double click on, say, tank base here, we're looking

231
00:15:31,250 --> 00:15:32,690
‫at the complex collision.

232
00:15:32,690 --> 00:15:39,500
‫If I click on this show icon here at the top and select complex collision, I can see all of the polygons

233
00:15:39,500 --> 00:15:42,410
‫in the complex collision and there are a lot of them.

234
00:15:42,440 --> 00:15:49,370
‫If I click the show icon again and this time check the checkbox next to Simple Collision, notice there's

235
00:15:49,370 --> 00:15:51,020
‫another collision volume.

236
00:15:51,020 --> 00:15:56,780
‫This is called a collision hull and it has a great deal less geometry.

237
00:15:56,780 --> 00:16:00,950
‫There is a smaller number of polygons with this collision volume.

238
00:16:00,950 --> 00:16:06,230
‫This is what the physics engine uses to detect for overlap in hit events.

239
00:16:06,230 --> 00:16:11,360
‫If it were using the complex collision, it would require a great deal more computations.

240
00:16:11,360 --> 00:16:17,780
‫This is why we have simple collision volumes, so it's much better for performance whenever doing a

241
00:16:17,780 --> 00:16:23,270
‫line trace if we trace for simple collision instead of complex collision.

242
00:16:23,870 --> 00:16:27,200
‫So now we've gotten the hit result under the cursor.

243
00:16:27,290 --> 00:16:32,480
‫It took some work to get there, but now we have it and we've proved it by showing this location with

244
00:16:32,480 --> 00:16:33,650
‫a debug sphere.

245
00:16:33,650 --> 00:16:36,800
‫This is a nice way to confirm that our trace hit is working.

246
00:16:36,800 --> 00:16:42,650
‫So now that we know it's working, we can use that location to rotate the turret on our tank.

247
00:16:42,980 --> 00:16:45,260
‫And we'll do that in the next video.

248
00:16:45,440 --> 00:16:46,520
‫I'll see you soon.

