‫Chào mừng trở lại.
‫Bây giờ trong video này, chúng ta sẽ nói về các sự kiện nổi tiếng.
‫Chúng tôi muốn phát hiện khi nào quả đạn bắn trúng thứ gì đó và bằng cách đó chúng tôi có thể làm gì đó để đáp
‫lại, chẳng hạn như phá hủy quả đạn.
‫Và sau này, chúng tôi sẽ xử lý việc gây sát thương và gây ra hiệu ứng nổ và những thứ tương tự.
‫Vì vậy, chúng ta hãy nói một chút về các sự kiện hit bây giờ.
‫Đạn của chúng tôi có thành phần lưới.
‫Loại này là thành phần lưới tĩnh của bạn và thành phần lưới tĩnh của bạn là một lớp trong một hệ thống phân cấp dài của
‫các lớp và hệ thống động cơ không thực một trong những cha mẹ của nó là bạn thành phần nguyên thủy.
‫Đây là trang tài liệu cho bạn thành phần nguyên thủy.
‫Nó nói rằng các thành phần nguyên thủy được xem là các thành phần có chứa hoặc tạo ra một số loại hình học nói
‫chung để được kết xuất hoặc sử dụng làm dữ liệu va chạm.
‫Vì vậy, về cơ bản chúng là các thành phần cảnh với một số tính năng được bổ sung.
‫Và nếu bạn cuộn xuống và nhìn vào cấu trúc phân cấp, bạn sẽ thấy rằng chúng tôi đã nhìn thấy thành
‫phần và bắt nguồn từ thành phần ban đầu của bạn và bạn có thể tiếp tục cuộn xuống và xem tất cả các lớp
‫khác bắt nguồn từ bạn.
‫Thành phần nguyên thủy.
‫Bây giờ lý do chúng tôi chỉ ra điều này là vì thành phần lưới tĩnh của bạn kế thừa các tính năng
‫này từ thành phần nguyên thủy của bạn và thành phần nguyên thủy của bạn có khả năng tạo ra các sự kiện truy cập.
‫Bây giờ, chúng ta có ý nghĩa gì khi tạo các sự kiện truy cập?
‫Giả sử chúng ta có một số hình học trong thế giới của chúng ta được biểu thị bằng hình chữ nhật
‫ở bên phải và chúng ta có một đối tượng có thành phần lưới tĩnh được biểu thị bằng hình tròn ở bên trái.
‫Bây giờ, nếu đối tượng này có thành phần lưới tĩnh đang di chuyển về phía khối, thì nếu thành phần này được thiết lập để xử lý
‫các sự kiện truy cập, thì ngay sau khi nó chạm vào khối đó, sự kiện truy cập sẽ được tạo
‫ra khi va chạm.
‫Bây giờ một sự kiện lần truy cập sẽ tạo ra một số dữ liệu liên quan đến vụ va chạm đó, bao gồm cả thành phần đã bị
‫tấn công.
‫Vì vậy, khối này ở đây có thể có một thành phần lưới tĩnh.
‫Chúng ta có thể truy cập thành phần đó khi va chạm.
‫Chúng tôi cũng có thể truy cập tác nhân bị đánh và sự kiện đầu cũng tạo ra kết quả đánh EF.
‫Chúng tôi đã tìm hiểu một chút về kết quả cú đánh F và chúng tôi biết rằng nó chứa rất nhiều biến về sự
‫kiện cú đánh, chẳng hạn như vị trí cú đánh, là một vectơ F đại diện cho một vị trí trên thế giới.
‫Vì vậy, chúng tôi có lưới đường đạn của chúng tôi.
‫Đây là một biến thuộc loại con trỏ thành phần lưới tĩnh.
‫Bây giờ bất cứ khi nào thành phần lưới tĩnh này chạm vào thứ gì đó trên thế giới, chúng tôi muốn có một
‫số mã đáp ứng điều đó.
‫Bây giờ là một thành phần lưới tĩnh, nó kế thừa những thứ từ lớp thành phần nguyên thủy của bạn.
‫Một trong những thứ mà nó kế thừa là một biến được gọi trên lần truy cập thành phần.
‫Bây giờ đây là tài liệu về lần truy cập thành phần.
‫Nó được mô tả như một sự kiện được gọi là Khi một thành phần tấn công hoặc bị một vật rắn nào đó va vào.
‫Bây giờ cuộn xuống, chúng ta thấy rằng trên lần nhấn thành phần có chữ ký lần nhấn thành phần loại F.
‫Và nếu chúng ta nhấp vào đây, chúng ta thấy rằng chữ ký nhấn thành phần F là một cấu trúc.
‫Bây giờ quay trở lại, chúng ta có thể thấy rằng tài liệu cho biết một sự kiện được gọi khi một thành phần chạm vào
‫hoặc bị vật rắn va vào.
‫Điều này có thể xảy ra do những thứ như chuyển động của nhân vật bằng cách sử dụng vị trí đã đặt có bật quét
‫hoặc mô phỏng vật lý cho các sự kiện khi các đối tượng chồng lên nhau, chẳng hạn như đi vào trình kích hoạt, xem sự kiện chồng chéo.
‫Vì vậy, có những sự kiện hit và có những sự kiện trùng lặp.
‫Chúng tôi quan tâm đến các sự kiện hit.
‫Vì vậy, chúng tôi biết rằng trên lần truy cập thành phần được mô tả trong tài liệu như một sự kiện lần truy cập và chúng tôi biết rằng
‫lần truy cập thành phần là một cấu trúc của chữ ký lần truy cập thành phần loại F.
‫Càng xa càng tốt.
‫Bây giờ sự kiện lần truy cập này trên lần truy cập thành phần cũng là thứ mà chúng tôi gọi là đại biểu đa hướng.
‫Một đại biểu đa hướng có thể có nhiều chức năng liên kết với nó.
‫Có thể có các hàm tồn tại trên nhiều lớp.
‫Và nếu các hàm đó bị ràng buộc với đại biểu đa hướng này, thì chúng sẽ được thêm vào một thứ
‫gọi là danh sách gọi.
‫Đây là danh sách các hàm sẽ được gọi khi sự kiện lần truy cập này cho biết tất cả chúng được gọi.
‫Chúng tôi nói rằng sự kiện truy cập này hoặc đại biểu phát đa hướng sẽ phát sóng khi có điều gì đó xảy ra.
‫Vì vậy, trong trường hợp lưới đường đạn của chúng ta chạm vào thứ gì đó, thì ủy nhiệm sẽ phát sóng tới tất cả
‫các lớp có chức năng liên kết với ủy nhiệm này.
‫Ngay sau khi chương trình phát sóng đó được gửi đi, thì tất cả các hàm liên kết này được gọi để phản hồi lại chương
‫trình phát sóng.
‫Đây là một tính năng rất mạnh của Unreal Engine.
‫Nó cho phép chúng ta có một thứ được gọi là ủy nhiệm, chờ một sự kiện chẳng hạn như một vụ va chạm.
‫Và sau đó.
‫Và đại biểu sẽ được phát sóng, dẫn đến tất cả các hàm bị ràng buộc được gọi để phản hồi lại chương trình phát sóng.
‫Vì nhiều chức năng có thể bị ràng buộc với điều này tinh vi, chúng tôi gọi nó là đa hướng.
‫Nó đang phát sóng tới nhiều lớp có các chức năng của chúng bị ràng buộc với nó.
‫Bây giờ, làm thế nào để chúng ta liên kết một hàm với đại biểu này?
‫Chà, trên lượt truy cập thành phần có một số chức năng cho phép chúng ta thực hiện điều này, một trong số đó
‫được gọi là thêm động.
‫Vì vậy, khi chúng ta gọi hàm động ADD, tất cả những gì chúng ta cần làm là chuyển vào hai tham số đối tượng người
‫dùng mà chúng ta có thể sử dụng nó và hàm gọi lại, là địa chỉ của một số hàm trên lớp của
‫chúng ta.
‫Vì vậy, một khi chúng tôi truy cập điều này trên đại biểu nhấn thành phần và gọi hàm thêm động, chúng tôi có thể chuyển vào đối
‫tượng người dùng và lệnh gọi lại.
‫Và điều này sẽ dẫn đến việc thêm lệnh gọi lại đó vào danh sách lệnh gọi sự kiện truy cập.
‫Bây giờ khi nhấn thành phần, chúng tôi sẽ phát đại biểu này, dẫn đến bất kỳ hàm nào liên kết với nó sẽ được gọi.
‫Vì vậy, để liên kết với đại diện này, chúng ta cần tạo một hàm gọi lại.
‫Vì vậy, đây là đường đạn và chúng tôi muốn có một hàm gọi lại cho sự kiện trúng đích.
‫Vì vậy, hãy tạo một hàm private ở đây và nó sẽ bị vô hiệu hóa.
‫Và tôi sẽ chỉ đơn giản gọi điều này là đúng.
‫Chúng tôi có thể gọi đây là bất cứ thứ gì chúng tôi muốn, nhưng dường như đủ mô tả.
‫Bây giờ hàm gọi lại này phải có chữ ký chính xác cho các sự kiện lần truy cập, có nghĩa là danh
‫sách tham số đầu vào của nó cần phải rất cụ thể.
‫Tham số đầu vào đầu tiên phải thuộc loại con trỏ thành phần nguyên thủy của bạn và nó được gọi là hit comp.
‫Đây là thành phần thực hiện cú đánh.
‫Trong trường hợp của chúng ta, chúng ta sẽ có lưới đạn của chúng ta va vào mọi thứ.
‫Tham số tiếp theo là một con trỏ tác nhân được gọi là Diễn viên khác.
‫Đây sẽ là diễn viên bị ảnh hưởng.
‫Tham số đầu vào tiếp theo là một con trỏ thành phần nguyên thủy khác của bạn được gọi là comp.
‫Đây là thành phần khác đã bị tấn công.
‫Vì vậy, nếu chúng ta nhấn vào thành phần lưới tĩnh của một số tác nhân khác, thì đây sẽ là thành phần lưới tĩnh đó.
‫Tiếp theo là một vectơ F được gọi là xung pháp tuyến.
‫Nếu chúng ta đang mô phỏng vật lý, động cơ vật lý sẽ áp dụng một xung lực để phản ứng lại vụ va chạm.
‫Và vectơ f này biểu thị hướng và độ lớn của xung lực đó.
‫Và cuối cùng, chúng ta có một tham số đầu vào kiểu const F hit result và đây là tham chiếu const và nó được gọi là
‫lần truy cập.
‫Vì vậy, khi lượt truy cập được gọi, chúng tôi sẽ có quyền truy cập vào kết quả lượt truy cập chứa nhiều thông tin hơn về lượt
‫truy cập.
‫Bây giờ, vì chúng tôi đang ràng buộc điều này với một đại biểu, nó phải là một hàm U.
‫Vì vậy, chúng tôi sẽ đánh dấu điều này với chức năng của bạn.
‫Bây giờ, bạn sẽ làm quen với chức năng của bạn.
‫Nó giống như bạn chỉ thuộc tính nó cho các hàm hơn là các biến.
‫Vì vậy, rất quan trọng.
‫Gọi lại của chúng tôi phải là một hàm u để điều này hoạt động.
‫Bây giờ chúng ta đã khai báo hàm.
‫Hãy tiếp tục và xác định hàm.
‫Vì vậy, trở lại trong đường đạn.
‫CP Ngay dưới chức năng đánh dấu của chúng ta, hãy xác định chức năng này.
‫Chúng ta sẽ cung cấp cho nó một phần thân hàm và đặt tên lớp ngay trước tên hàm, và bây giờ chúng ta có
‫một hàm gọi lại.
‫Vì vậy, chúng tôi đã sẵn sàng liên kết điều này trên hàm hit với đại biểu của chúng tôi và chúng tôi cần thực hiện điều này khi bắt đầu chơi.
‫Làm điều đó trong hàm khởi tạo là phải sớm và đôi khi bạn có thể gặp phải các vấn đề như người ủy quyền của bạn
‫không bị ràng buộc.
‫Vì vậy, chúng tôi sẽ làm điều đó ở đây và bắt đầu chơi.
‫Vì vậy, chúng tôi có lưới đường đạn của mình và chúng tôi sẽ sử dụng toán tử mũi tên để truy cập vào biến được kế thừa từ bạn.
‫Thành phần nguyên thủy được gọi trên lần truy cập thành phần và trên lần truy cập thành phần có chức năng thêm động.
‫Thật kỳ lạ, tính năng tự động hoàn thành sẽ không hoạt động để thêm động, vì vậy bạn sẽ phải
‫nhập toàn bộ tên hàm.
‫Đây là hàm mà chúng ta sẽ sử dụng để liên kết lệnh gọi lại của chúng ta với lần truy cập thành phần và thêm hàm đó vào
‫danh sách gọi của nó.
‫Bây giờ trước tiên, chúng ta cần đối tượng người dùng sẽ là cái này vì đây là lớp mà
‫ở đó ràng buộc hàm và tiếp theo chúng ta cần địa chỉ cho hàm sẽ là địa chỉ của khi truy cập.
‫Vì vậy, chúng tôi sẽ sử dụng địa chỉ của toán tử và chức năng một đường đạn khi bắn trúng.
‫Và với điều này, chúng tôi có ràng buộc chức năng của mình và chúng tôi sẵn sàng tạo các sự kiện truy cập.
‫Bây giờ chúng ta có thể kiểm tra điều này bằng nhật ký UEE và chúng tôi có thể sử dụng cảnh báo tạm thời nhật ký.
‫Và đối với văn bản, chúng ta có thể nói đơn giản là trúng đích.
‫Và nếu chúng ta thấy điều này trong nhật ký đầu ra, chúng ta biết rằng hàm on hit của chúng ta đã được gọi là hãy biên
‫dịch nó.
‫Vì vậy, tôi có nhật ký đầu ra đang mở ở đây.
‫Tôi sẽ nhấn play và bắn một quả đạn và có thông báo nhật ký của tôi khi bắn trúng đang được gọi.
‫Vì vậy, điều này đang hoạt động.
‫Bây giờ chỉ là một lưu ý nhỏ, nếu chúng ta đi vào đường đạn BP và chọn lưới đường đạn trong bảng chi tiết,
‫chúng ta có thể cuộn xuống phần va chạm.
‫Và ở đây chúng ta thấy rằng các cài đặt trước xung đột được đặt để chặn tất cả các động và kích hoạt
‫xung đột được đặt thành truy vấn và vật lý cho phép xung đột cài đặt này.
‫Điều này là cần thiết cho các sự kiện hit.
‫Chúng tôi cần có thể truy vấn cho một sự kiện truy cập.
‫Và tất nhiên, vật lý cho phép động cơ vật lý tác động lên lưới đường đạn.
‫Vì vậy, bây giờ chúng ta đã liên kết với đại biểu on hit của thành phần với chức năng on hit của chúng tôi và chúng tôi đã
‫đặt một nhật ký lớn để đảm bảo rằng nó đang hoạt động, tôi muốn bạn khám phá chức năng này thêm một chút để chúng
‫tôi có thể hiểu một số tham số đầu vào này trong hàm on hit của chúng tôi.
‫Vì vậy, trong chức năng on hit, hãy thêm một số nhật ký YOUI khác.
‫Tôi muốn bạn in tên của một số tham số đầu vào này bằng cách sử dụng hàm git name.
‫Tôi muốn bạn sử dụng nhật ký YUI để in tên của thành phần hit, tác nhân khác và thành phần khác để chúng tôi có thể thấy tên
‫của những đối tượng mà chúng tôi đang đánh.
‫Bạn sẽ sử dụng định dạng phần trăm se, chỉ định trong macro văn bản nhật ký E.
‫Và xin nhắc lại, bất cứ khi nào chúng ta gọi get name, chúng ta phải sử dụng dấu hoa thị khi chuyển chuỗi đó vào macro
‫nhật ký YUI, ví dụ: để lấy tên của tác nhân khác, chúng tôi sẽ gọi tác nhân khác, lấy tên và đặt dấu
‫hoa thị đó lúc đầu chỉ để trả về chuỗi kiểu C đó, đó là những gì bạn ghi nhật ký
‫mong đợi khi bạn định dạng nó bằng một chuỗi.
‫Vì vậy, hãy tạm dừng video và sử dụng đăng nhập Yui trong chức năng on hit của chúng tôi để in tên của hit comp, diễn viên khác và
‫các comp khác ngay bây giờ.
‫Được chứ.
‫Vì vậy, ở đây trong CP đạn, tôi sẽ sử dụng bạn đăng nhập ở đây.
‫Vì vậy, tôi sẽ sao chép dòng này nơi tôi đang sử dụng nhật ký Yui và đối với chuỗi, tôi sẽ nói
‫hit comp phần trăm s và ngay sau văn bản tôi sẽ gọi tên hit comp get và tôi cần dấu hoa thị này để chuyển
‫đổi từ chuỗi F sang chuỗi kiểu C.
‫Bây giờ tôi sẽ sử dụng cùng một dòng này, chỉ có điều tôi sẽ thay đổi văn bản để nói diễn viên khác và
‫chúng tôi đang gọi tên nó lần này trên diễn viên khác.
‫Và cuối cùng, tôi sẽ in cách gọi comp khác, lấy tên trên comp khác.
‫Vì vậy, hãy biên dịch và quay lại đây trong trình chỉnh sửa, tôi sẽ tiếp tục và nhấn play và bắn một đường đạn
‫và kiểm tra điều này.
‫Chúng tôi thấy rằng hit comp là lưới đạn.
‫Hãy nhớ rằng chúng tôi đã nói rằng đây là thành phần thực hiện cú đánh, là mảnh ghép đường đạn của chúng tôi
‫và bạn sẽ thấy rằng nó đang sử dụng tên mà chúng tôi đã gán cho thành phần này để tạo đối tượng phụ mặc định.
‫Vì vậy, đây là một trong những tình huống mà tên đó đang được sử dụng.
‫Bây giờ bạn sẽ thấy rằng nó cho biết lỗ hổng của diễn viên khác gạch dưới số không.
‫Và đó là bởi vì tác nhân lưới tĩnh này là lỗ hổng có tên lỗ hổng gạch dưới số không.
‫Đôi khi engine sẽ đặt một số ở cuối tên nội bộ của nó cho các tác nhân và thành phần, và bạn sẽ thấy
‫rằng chúng ta cũng có điều tương tự xảy ra khi chúng ta in ra comp khác.
‫Tác nhân lưới tĩnh lỗ hổng có một thành phần lưới tĩnh và tên của nó là thành phần lưới tĩnh bằng không.
‫Vì vậy, điều này cung cấp cho chúng tôi thêm một chút thông tin về các tham số đầu vào đó trong hàm gọi lại khi truy cập của chúng tôi.
‫Và điều này rất hữu ích vì chúng tôi có quyền truy cập vào các đối tượng đó trong C ++ nếu chúng tôi muốn làm điều gì đó để phản ứng với
‫sự kiện truy cập.
‫Vì vậy, tóm lại, chúng tôi đã tìm hiểu về các sự kiện hit và cách những sự kiện này được triển khai với tư cách là đại biểu đa hướng và chúng tôi đã tìm hiểu cách
‫hoạt động của những sự kiện đó.
‫Chúng tôi đã tạo một chức năng gọi là On Hit and Bound, chức năng đó cho đại biểu trên thành phần hit mà lưới đường
‫đạn của chúng tôi đã kế thừa từ lớp thành phần nguyên thủy của bạn.
‫Bây giờ chúng tôi chưa phá hủy đường đạn khi trúng đạn, nhưng giờ chúng tôi biết rằng chúng tôi có thể dễ dàng làm như vậy vì
‫chúng tôi có chức năng gọi lại này và chúng tôi có thể đặt logic trong chức năng này chẳng hạn như phá hủy đường đạn.
‫Vì vậy, chúng tôi sẽ xử lý điều đó trong một video trong tương lai.
‫Hiện tại, hãy tự vỗ về mình vì đây là một trong những lĩnh vực phức tạp hơn của Unreal Engine C ++ mà bạn
‫đã học cho đến nay.
‫Hẹn gặp lại các bạn trong video tiếp theo.