﻿1
00:00:03,990 --> 00:00:09,630
‫Vì vậy, chúng ta sẽ tạo một hàm lửa và chúng ta sẽ kết hợp hàm này với nút chuột trái của chúng

2
00:00:09,630 --> 00:00:10,110
‫ta.

3
00:00:10,110 --> 00:00:16,350
‫Và ở đây, bạn có thể thấy rằng tôi đang vẽ hình cầu gỡ lỗi ở đầu nòng tháp pháo của chúng tôi chỉ để chứng minh rằng

4
00:00:16,350 --> 00:00:18,210
‫ánh xạ hành động này đang hoạt động.

5
00:00:18,210 --> 00:00:21,360
‫Bất cứ khi nào tôi nhấp chuột trái, điều gì đó đang xảy ra.

6
00:00:21,720 --> 00:00:23,090
‫Chào mừng trở lại.

7
00:00:23,100 --> 00:00:28,770
‫Trong video này, chúng ta sẽ nói về việc tạo ra một chức năng bắn hoặc một chức năng mà chúng ta có thể sử dụng

8
00:00:28,770 --> 00:00:31,020
‫khi chúng ta muốn tạo ra đường đạn của mình.

9
00:00:31,020 --> 00:00:36,090
‫Vì vậy, chúng ta sẽ tạo một hàm fire và chúng ta sẽ liên kết nó với một ánh xạ hành động.

10
00:00:36,090 --> 00:00:38,370
‫Bây giờ, chúng tôi đang sử dụng ánh xạ trục.

11
00:00:38,370 --> 00:00:40,260
‫Một ánh xạ hành động cũng tương tự.

12
00:00:40,260 --> 00:00:41,550
‫Bây giờ chúng ta hãy nói về nó.

13
00:00:41,550 --> 00:00:47,280
‫Đây là một phần của ảnh chụp màn hình của ánh xạ hành động cháy mà chúng tôi có trong cài đặt dự án của chúng tôi.

14
00:00:47,280 --> 00:00:51,690
‫Bạn sẽ thấy rằng chúng tôi đã gán nút chuột trái cho ánh xạ hành động cháy.

15
00:00:51,690 --> 00:00:55,290
‫Bây giờ một ánh xạ hành động rất giống một ánh xạ trục.

16
00:00:55,290 --> 00:00:57,720
‫Bạn có thể gán một phím hoặc một nút cho nó.

17
00:00:57,720 --> 00:01:03,420
‫Và cũng giống như ánh xạ trục, nó yêu cầu một hàm có thể được liên kết với ánh xạ hành động.

18
00:01:03,420 --> 00:01:07,440
‫Giờ đây, ánh xạ trục sẽ tắt mọi khung hình của trò chơi.

19
00:01:07,440 --> 00:01:12,840
‫Chúng giống như hàm tic và giá trị float được chuyển vào các thay đổi tùy thuộc vào nút nào đang

20
00:01:12,840 --> 00:01:13,590
‫được nhấn.

21
00:01:13,590 --> 00:01:15,930
‫Ánh xạ hành động hơi khác một chút.

22
00:01:15,960 --> 00:01:22,740
‫Một hàm gọi lại liên kết với một ánh xạ hành động không có tham số đầu vào và tất cả những gì xảy ra

23
00:01:22,740 --> 00:01:25,200
‫là khi bạn nhấn nút, hàm sẽ được gọi.

24
00:01:25,200 --> 00:01:29,430
‫Những gì diễn ra bên trong chức năng là tùy thuộc vào chúng tôi với tư cách là nhà phát triển.

25
00:01:29,430 --> 00:01:31,590
‫Bây giờ, ánh xạ hành động là một trong những lỗi.

26
00:01:31,590 --> 00:01:33,030
‫Chúng không diễn ra ở mọi khung hình.

27
00:01:33,030 --> 00:01:35,790
‫Chúng chỉ xảy ra một lần khi bạn nhấn nút.

28
00:01:35,790 --> 00:01:40,950
‫Vì vậy, nếu bạn thả nút và nhấn lại, hàm sẽ được gọi một lần nữa.

29
00:01:40,980 --> 00:01:47,280
‫Bây giờ, khi chúng tôi liên kết các hàm với ánh xạ trục, chúng tôi đã sử dụng trục liên kết cho các ánh xạ hành động, chúng tôi

30
00:01:47,280 --> 00:01:52,650
‫sử dụng một hàm được gọi là hành động liên kết và nó nhận các đầu vào tương tự như trục liên kết.

31
00:01:52,650 --> 00:01:56,400
‫Nó lấy tên của ánh xạ hành động dưới dạng một chuỗi ký tự.

32
00:01:56,430 --> 00:01:58,710
‫Nó cũng yêu cầu một con trỏ tới lớp.

33
00:01:58,710 --> 00:02:04,470
‫Chúng tôi đang ràng buộc hàm mà chúng tôi có thể sử dụng nó, và tất nhiên, nó cần một hàm gọi lại.

34
00:02:04,470 --> 00:02:11,580
‫Bây giờ một tham số bổ sung mà trục liên kết không yêu cầu dưới dạng hằng số enum xác định xem chúng

35
00:02:11,580 --> 00:02:17,130
‫ta có muốn hàm này được gọi khi chúng ta nhấn nút hay khi chúng ta nhả

36
00:02:17,130 --> 00:02:17,640
‫nút.

37
00:02:17,640 --> 00:02:24,000
‫Vì vậy, có hai tùy chọn cho tham số đầu vào này là hằng số enum, i. e. được nhấn và hằng số enum,

38
00:02:24,000 --> 00:02:25,350
‫i. e. phát hành.

39
00:02:25,350 --> 00:02:31,110
‫Điều này có nghĩa là chúng ta có thể gọi hành động ràng buộc truyền vào i. e. được nhấn nếu chúng tôi muốn liên kết một hàm gọi lại khi

40
00:02:31,110 --> 00:02:36,960
‫chúng tôi nhấn nút và thay vào đó nếu chúng tôi sử dụng i. e. được phát hành thì chức năng gọi lại của

41
00:02:36,960 --> 00:02:40,380
‫chúng tôi sẽ được gọi khi nút được phát hành cho chức năng khai hỏa của chúng tôi.

42
00:02:40,380 --> 00:02:42,900
‫Chúng tôi quan tâm đến khi chúng tôi nhấn nút.

43
00:02:42,900 --> 00:02:46,890
‫Vì vậy, hãy tạo một hàm fire và liên kết nó với ánh xạ hành động fire.

44
00:02:46,890 --> 00:02:53,490
‫Bây giờ tôi đang ở đây trong cơ sở đẻ trứng và lý do tôi ở đây trong ao cơ sở là vì chức năng lửa này là

45
00:02:53,490 --> 00:02:57,270
‫thứ mà chúng ta có thể sử dụng trong lớp xe tăng và lớp tháp.

46
00:02:57,270 --> 00:03:03,030
‫Vì vậy, nếu chúng ta đặt nó ở đây trong ao cơ sở, thì cả Xe tăng và tháp sẽ kế thừa chức năng này.

47
00:03:03,030 --> 00:03:08,850
‫Và vì cả xe tăng và tháp sẽ bắn đạn, nên chúng chỉ cần kế thừa chức năng

48
00:03:08,850 --> 00:03:10,230
‫và sử dụng nó.

49
00:03:10,260 --> 00:03:16,530
‫Bây giờ, vì tôi muốn truy cập vào chức năng trong cả hai lớp con, tôi có thể đặt chức năng này ở đây

50
00:03:16,530 --> 00:03:19,500
‫trong phần được bảo vệ, giống như xoay tháp pháo.

51
00:03:19,500 --> 00:03:26,220
‫Vì vậy, dưới tháp pháo xoay, tôi sẽ tạo một chức năng trống gọi là hỏa lực không cần đầu vào và chúng

52
00:03:26,220 --> 00:03:30,780
‫ta có thể tiếp tục và xác định chức năng hỏa lực dựa trên CPP.

53
00:03:30,780 --> 00:03:36,990
‫Vì vậy, đây là dựa trên CPP và ngay dưới tháp pháo xoay, tôi sẽ đặt chức năng bắn và chúng ta cần phải

54
00:03:36,990 --> 00:03:41,430
‫đủ điều kiện cho tên chức năng này và đặt cho nó một phần thân chức năng.

55
00:03:41,430 --> 00:03:43,680
‫Vì vậy, bây giờ chúng tôi có một chức năng chữa cháy.

56
00:03:43,680 --> 00:03:47,040
‫Bây giờ bước tiếp theo là liên kết điều này với một ánh xạ hành động.

57
00:03:47,040 --> 00:03:53,190
‫Bây giờ chúng ta chỉ muốn ràng buộc chức năng này trong lớp tank vì tank là lớp duy nhất sẽ nhận

58
00:03:53,190 --> 00:03:54,720
‫đầu vào của người dùng.

59
00:03:54,720 --> 00:03:59,610
‫Chúng tôi sẽ gọi hàm fire trong lớp tháp sau, nhưng đó sẽ là kết quả của

60
00:03:59,610 --> 00:04:02,820
‫mã chúng tôi tạo chứ không phải do người dùng nhập.

61
00:04:02,820 --> 00:04:08,730
‫Vì vậy, chúng tôi đang ở đây trong Tank CP và chúng tôi sẽ ràng buộc điều này và thiết lập thành phần đầu vào của người chơi giống như chúng

62
00:04:08,730 --> 00:04:10,290
‫tôi đã sử dụng trục liên kết.

63
00:04:10,290 --> 00:04:12,900
‫Vì vậy, chúng tôi sẽ sử dụng thành phần đầu vào của trình phát.

64
00:04:12,900 --> 00:04:18,720
‫Vì vậy, thành phần đầu vào của trình phát và chức năng sẽ là hành động liên kết.

65
00:04:18,720 --> 00:04:24,150
‫Bây giờ đầu vào đầu tiên sẽ là chuỗi ký tự, mà chúng ta sẽ bao bọc trong một macro văn bản như

66
00:04:24,150 --> 00:04:24,780
‫bình thường.

67
00:04:24,780 --> 00:04:27,810
‫Và ánh xạ hành động này được gọi là lửa.

68
00:04:27,960 --> 00:04:34,080
‫Bây giờ, tham số tiếp theo sẽ là hằng số enum xác định xem chúng ta có muốn hàm này

69
00:04:34,080 --> 00:04:39,000
‫được gọi khi chúng ta nhấn nút hay không so với khi chúng ta nhả nút.

70
00:04:39,000 --> 00:04:42,150
‫Và chúng tôi sẽ sử dụng, tôi đã nhấn gạch dưới.

71
00:04:43,170 --> 00:04:46,260
‫Vì chúng tôi muốn hàm của chúng tôi được gọi khi chúng tôi nhấn nút.

72
00:04:46,260 --> 00:04:49,520
‫Bây giờ, tiếp theo là đối tượng lớp người dùng sẽ là cái này.

73
00:04:49,530 --> 00:04:55,620
‫Và cuối cùng chúng ta có chức năng gọi lại để chúng ta có thể nói một vụ cháy xe tăng.

74
00:04:55,770 --> 00:05:00,690
‫Và bây giờ chức năng cứu hỏa của chúng tôi được liên kết với ánh xạ hành động hỏa hoạn.

75
00:05:00,690 --> 00:05:07,200
‫Vì vậy, chúng tôi biết rằng chức năng cứu hỏa của chúng tôi bị ràng buộc với lập bản đồ hành động hỏa hoạn, nhưng chúng tôi muốn một

76
00:05:07,200 --> 00:05:09,900
‫số xác nhận trực quan và đó là thử thách của bạn.

77
00:05:09,900 --> 00:05:14,130
‫Vì vậy, trong hàm fire, tôi muốn bạn vẽ một quả cầu gỡ lỗi.

78
00:05:14,130 --> 00:05:19,440
‫Chúng tôi đã biết cách thực hiện việc này, vì vậy hãy tiếp tục và điền vào các thông số với các giá trị mà

79
00:05:19,440 --> 00:05:20,640
‫bạn cho là phù hợp.

80
00:05:20,670 --> 00:05:24,030
‫Sử dụng vị trí của điểm xuất hiện đạn.

81
00:05:24,270 --> 00:05:30,210
‫Bây giờ điểm sinh ra của đạn là một thành phần cảnh sử dụng và bạn đã thấy các thành phần có một chức năng được

82
00:05:30,210 --> 00:05:32,100
‫gọi là lấy vị trí thành phần.

83
00:05:32,100 --> 00:05:33,780
‫Điều này trả về một vectơ F.

84
00:05:33,810 --> 00:05:38,220
‫Đây là những gì bạn có thể sử dụng để lấy vị trí điểm xuất hiện của đạn.

85
00:05:38,220 --> 00:05:45,630
‫Bây giờ khi bạn gọi vẽ quả cầu gỡ lỗi, hãy sử dụng thời gian khoảng 3 giây để chúng ta có thể nhìn thấy quả cầu đó

86
00:05:45,630 --> 00:05:47,760
‫một lúc trước khi nó biến mất.

87
00:05:47,760 --> 00:05:50,460
‫Tạm dừng video và làm điều này ngay bây giờ.

88
00:05:53,360 --> 00:05:53,550
‫Được chứ.

89
00:05:53,660 --> 00:05:56,810
‫Vì vậy, tôi trở lại đây trong Bass Pond và đây trong Bass Pond.

90
00:05:57,110 --> 00:06:00,770
‫CP Tôi sẽ bao gồm trình trợ giúp gỡ lỗi vẽ.

91
00:06:00,770 --> 00:06:03,500
‫Vì vậy, chúng tôi có quyền truy cập để vẽ hình cầu gỡ lỗi.

92
00:06:03,500 --> 00:06:07,010
‫Vì vậy, tôi sẽ nói bao gồm trình trợ giúp gỡ lỗi vẽ.

93
00:06:08,240 --> 00:06:12,320
‫Và bây giờ ở đây trong hàm fire, chúng ta có thể vẽ quả cầu gỡ lỗi.

94
00:06:12,350 --> 00:06:18,050
‫Bây giờ, điều đầu tiên tôi muốn làm là tìm vị trí của điểm xuất hiện đạn.

95
00:06:18,080 --> 00:06:26,240
‫Bây giờ tôi có thể tạo một vectơ f cục bộ cho điều này và tôi có thể gọi đây là vị trí điểm xuất hiện đường đạn và tôi có

96
00:06:26,240 --> 00:06:29,870
‫thể khởi tạo nó bằng cách sử dụng điểm xuất hiện đường đạn.

97
00:06:32,030 --> 00:06:35,780
‫Và gọi lấy vị trí thành phần.

98
00:06:35,780 --> 00:06:43,100
‫Vì vậy, bây giờ tôi đã có vị trí của điểm xuất hiện của đạn và đây là những gì tôi có thể sử dụng khi gọi vẽ quả cầu

99
00:06:43,100 --> 00:06:43,850
‫gỡ lỗi.

100
00:06:43,850 --> 00:06:46,130
‫Vì vậy, tôi sẽ gọi vẽ quả cầu gỡ lỗi.

101
00:06:47,450 --> 00:06:53,720
‫Và đối với đầu vào đầu tiên, chúng tôi cần thế giới và chúng tôi biết rằng chúng tôi có thể đưa thế giới bằng cách sử dụng get world tiếp theo.

102
00:06:53,720 --> 00:06:59,810
‫Chúng ta cần tâm của quả cầu sẽ là vị trí điểm sinh ra đạn của chúng ta.

103
00:06:59,810 --> 00:07:04,190
‫Vì vậy, đó sẽ là những gì tôi truyền vào làm tham số thứ hai.

104
00:07:04,190 --> 00:07:06,190
‫Và tiếp theo chúng ta cần bán kính của hình cầu.

105
00:07:06,200 --> 00:07:08,330
‫Bây giờ tôi sẽ có một quả cầu nhỏ.

106
00:07:08,480 --> 00:07:15,920
‫Tôi sẽ cung cấp cho nó một bán kính giả sử là 25 F đối với số phân đoạn tôi sẽ sử dụng 12 và đối với màu sắc, tôi

107
00:07:15,920 --> 00:07:17,690
‫có thể sử dụng màu F.

108
00:07:18,680 --> 00:07:21,380
‫Đọc ngay bây giờ bốn vẽ đường dai dẳng.

109
00:07:21,380 --> 00:07:27,500
‫Chúng tôi sẽ để dòng của chúng tôi bị treo trong 3 giây để chúng tôi có thể làm cho điều này sai vì chúng tôi không

110
00:07:27,500 --> 00:07:28,910
‫muốn chúng tồn tại mãi mãi.

111
00:07:28,940 --> 00:07:36,380
‫Chúng ta sẽ cung cấp cho quả cầu gỡ lỗi này có tuổi thọ là ba F Vì vậy, hãy tiếp tục và biên dịch nó ngay bây giờ và tôi sẽ

112
00:07:36,380 --> 00:07:42,230
‫nhấn phát và nhấp và bây giờ chúng ta có thể thấy quả cầu gỡ lỗi của mình và tất nhiên nó sẽ biến

113
00:07:42,230 --> 00:07:43,310
‫mất sau 3 giây.

114
00:07:43,640 --> 00:07:49,880
‫Bây giờ, đây là xác nhận tốt rằng bản đồ hành động của chúng tôi đang hoạt động và nó cũng

115
00:07:49,880 --> 00:07:53,450
‫cho chúng tôi xác minh vị trí của điểm xuất hiện đạn.

116
00:07:53,450 --> 00:07:59,600
‫Vì vậy, một khi chúng tôi thực sự bắt đầu tạo ra các đường đạn, chúng tôi biết rằng chúng sẽ xuất hiện tại vị trí

117
00:07:59,600 --> 00:08:02,420
‫chính xác như được chỉ ra bởi quả cầu gỡ lỗi.

118
00:08:02,420 --> 00:08:03,500
‫Vì vậy, điều này là tuyệt vời.

119
00:08:03,650 --> 00:08:09,470
‫Vì vậy, trong video này, chúng tôi đã tạo một hàm fire và chúng tôi gắn nó với ánh xạ hành động fire.

120
00:08:09,740 --> 00:08:15,800
‫Và để chứng minh rằng nó đang hoạt động, chúng tôi đã vẽ một quả cầu gỡ lỗi tại điểm sinh ra đạn bất cứ khi nào

121
00:08:15,830 --> 00:08:21,710
‫chúng tôi nhấp vào nút chuột trái để chúng tôi có chức năng bắn, chúng tôi gần như đã sẵn sàng để bắt đầu phóng đạn.

122
00:08:21,710 --> 00:08:25,250
‫Và chúng tôi cũng đã đặt chức năng này trong lớp pong cơ bản.

123
00:08:25,250 --> 00:08:27,980
‫Vì vậy, bằng cách đó tháp của chúng tôi cũng có thể sử dụng nó.

124
00:08:27,980 --> 00:08:32,990
‫Vì vậy, trong video tiếp theo, chúng ta sẽ thảo luận về cách tháp của chúng ta sẽ sử dụng chức năng này.

125
00:08:33,530 --> 00:08:34,460
‫Tôi sẽ gặp bạn sớm.

