‫Xin chào và chào mừng trở lại.
‫Bây giờ chúng tôi đã sẵn sàng để bắt đầu xử lý thông tin nhập của người dùng.
‫Điều đó có nghĩa là chúng tôi muốn nhấn các phím bàn phím và di chuyển chuột và nhấp chuột và xem xe tăng của chúng
‫tôi phản ứng với đầu vào đó.
‫Bây giờ, để làm được điều đó, trước tiên chúng ta cần thực sự nhận được đầu vào đó và trước tiên chúng ta sẽ bắt đầu
‫làm điều đó bằng cách sử dụng ánh xạ trục.
‫Vì vậy, chúng ta hãy nói về điều này.
‫Bây giờ ở đây trong dự án, chúng ta hãy chuyển sang cài đặt chỉnh sửa và chiếu.
‫Và nếu chúng ta cuộn xuống và chọn đầu vào, thì chúng ta sẽ thấy các ràng buộc của chúng ta ở đây.
‫Và dưới các ràng buộc có ánh xạ hành động và ánh xạ trục.
‫Đầu tiên chúng ta sẽ đi vào ánh xạ trục.
‫Bây giờ bạn có thể có một số kinh nghiệm với những thứ này, nhưng chúng ta sẽ đi sâu hơn một chút
‫về những gì chúng làm và cách chúng hoạt động.
‫Vì vậy, chúng tôi có ba trong số họ.
‫Và nếu tôi nhấp vào mũi tên thả xuống, tôi sẽ thấy ở đây W và SW và chúng đang nói về các phím
‫W và SW trên bàn phím.
‫Chúng được gán cho ánh xạ trục cụ thể này, được gọi là Move Forward.
‫Vì vậy, hãy thảo luận về cách ánh xạ trục này hoạt động.
‫Vì vậy, chúng tôi đã thấy trong The Unreal Editor rằng chúng tôi có ánh xạ trục này được gọi là Move Forward và
‫nó được gán W và SCS cho ánh xạ trục này.
‫Vậy điều này có nghĩa chính xác là gì?
‫Chà, trong Unreal Engine, chúng ta có một thứ gọi là ánh xạ trục.
‫Và ánh xạ trục là thứ được xử lý từng khung hình của trò chơi.
‫Bạn chỉ định các khóa cho một ánh xạ trục.
‫Trong trường hợp của chúng tôi, chúng tôi đã chỉ định W và S.
‫Bây giờ hãy xem bên cạnh phím W ở đây.
‫Trong mẫu ảnh chụp màn hình nhỏ của tôi ở bên phải, nó cho biết tỷ lệ.
‫Và bên cạnh quy mô có một số 1. 0.
‫Và bạn có thể nhận thấy bên cạnh SQ, thang đo là -1. 0.
‫Vì vậy, đây là những giá trị sẽ ảnh hưởng đến thông tin đầu vào đó.
‫Đây là cách một ánh xạ trục hoạt động.
‫Ánh xạ trục của chúng ta tiến về phía trước có khả năng được liên kết với một hàm trong C ++.
‫Bây giờ, khi nói đến ánh xạ Axis, nếu chúng ta kết hợp một hàm với một ánh xạ Axis, nó cần phải
‫nhận một tham số đầu vào là kiểu float để chúng ta có thể tạo một hàm trên ao của chúng ta có tên MOVE lấy
‫một float.
‫Chúng tôi sẽ chỉ gọi giá trị tham số đầu vào này.
‫Bây giờ có một cách để sử dụng hàm này và kết hợp nó với ánh xạ trục tiến của chúng ta.
‫Nó nói rằng chúng ta liên kết hàm di chuyển với ánh xạ trục.
‫Vì vậy, mọi khung hình của trò chơi, hệ thống đầu vào của Unreal Engine sẽ kiểm tra xem chúng ta
‫đang nhấn phím W hay phím này.
‫Và nó sẽ tính toán một giá trị trục tùy thuộc vào việc chúng ta có nhấn các phím đó hay không và mọi khung
‫hình đơn lẻ.
‫Nó sẽ gọi hàm này mà chúng ta đã buộc phải di chuyển về phía trước và chuyển giá trị trục đó vào.
‫Bất cứ điều gì xảy 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 C ++.
‫Bây giờ đây là cách nó hoạt động.
‫Nếu chúng ta không nhấn phím W hoặc các phím, giá trị trục này có giá trị bằng không.
‫Vì vậy, hàm di chuyển được liên kết với ánh xạ trục tiến được gọi là mọi khung đơn và
‫giá trị float được chuyển vào bằng 0.
‫Bây giờ giả sử chúng ta đang nhấn phím W.
‫Phím W có thang đo được đặt thành 1. 0.
‫Điều này có nghĩa là giá trị trục của chúng ta sẽ là 1. 0 và đó là những gì được chuyển vào hàm MOV.
‫Vì vậy, mỗi khung đơn, hàm di chuyển được gọi với giá trị là 1. 0 được đưa vào.
‫Bây giờ, hãy giả sử thay vào đó chúng ta đang nhấn SRC có giá trị thang đo là -1. 0.
‫Điều này có nghĩa là mỗi khung đơn lẻ, hàm di chuyển sẽ được gọi và -1. 0 sẽ được chuyển vào.
‫Bây giờ, trong trường hợp chúng ta nhấn cả W và S, thì cả hai giá trị này sẽ được cộng lại với nhau.
‫Vì vậy, chúng tôi nhận được 1. 0 khi nhấn phím W và chúng tôi nhận được -1. 0 từ việc nhấn SRC.
‫Bây giờ cả hai loại bỏ lẫn nhau.
‫Vì vậy, nếu chúng ta nhấn cả hai cùng một lúc, hàm di chuyển sẽ được gọi với số 0 được truyền vào.
‫Vì vậy, tùy thuộc vào tổ hợp phím nào chúng ta đang nhấn, chúng ta sẽ nhận được một giá trị khác nhau được chuyển
‫vào hàm MOVE và chúng ta có thể làm bất cứ điều gì chúng ta muốn với giá trị đó, chẳng hạn như sử dụng nó để di chuyển cầm đồ.
‫Chúng ta sẽ nói về việc thực sự chuyển cầm đồ đủ sớm.
‫Hiện tại, chúng ta hãy thực sự thiết lập bản thân để chúng ta có thể xử lý thông tin này
‫từ hệ thống ánh xạ Axis.
‫Được rồi, bây giờ chúng ta đã biết cách ánh xạ trục hoạt động, đã đến lúc tạo một hàm gọi lại mà
‫chúng ta có thể liên kết với ánh xạ trục tiến.
‫Vì vậy, tôi sẽ đóng cài đặt dự án và quay lại mã VS.
‫Vì vậy, ở đây trong mã VS, chúng tôi muốn tạo một hàm mà chúng tôi có thể liên kết với ánh xạ trục tiến.
‫Vì vậy, ở đây trong bể H, chúng ta có thể tạo một hàm riêng.
‫Bây giờ nó sẽ có.
‫Kiểu trả về void, và tôi muốn gọi đây là bước di chuyển.
‫Bây giờ nó cần có một tham số đầu vào float và chúng ta sẽ gọi giá trị này.
‫Vì vậy, hãy lấy chức năng di chuyển của chúng tôi và xác định nó ở đây trong Tank.
‫CP Tôi sẽ gắn nó ở đây ngay dưới hàm tạo và chúng ta cần một bể chứa toán tử phân giải phạm
‫vi trước tên hàm.
‫Vì vậy, chúng tôi có hàm di chuyển này và chúng tôi đã sẵn sàng liên kết nó với ánh xạ trục tiến của chúng tôi.
‫Và điều đó được thực hiện bên trong một chức năng được gọi là thành phần đầu vào trình phát thiết lập.
‫Điều đó nghe có vẻ quen thuộc.
‫Trên thực tế, nếu chúng ta mở trình thám hiểm của mình và quay lại Base Pont H, chúng ta có thể cuộn xuống và xem trong
‫phần công khai thành phần đầu vào trình phát thiết lập chức năng.
‫Chúng ta sẽ thấy rằng đây là sự ghi đè của một chức năng ảo được kế thừa.
‫Giờ đây, lớp sinh sản cơ sở không thực sự cần thiết lập bất kỳ đầu vào nào và đó là chức năng này
‫dùng để xử lý đầu vào từ người chơi.
‫Bây giờ, lớp liên kết cơ sở của chúng tôi không cần xử lý đầu vào, nhưng lớp xe tăng của chúng tôi thì có.
‫Vì vậy, những gì chúng ta có thể làm là lấy chức năng này ra khỏi ao cơ sở h nhưng tôi sẽ sao chép nó vì chúng ta
‫cần nó trong bể.
‫Vì vậy, sao chép chức năng này, tôi sẽ đến với Tank H và ở đây trong phần công khai, tôi sẽ
‫dán nó.
‫Và vì chúng ta không cần nó trong ao gốc, tôi sẽ loại bỏ nó khỏi lớp ao cơ sở.
‫Và trên thực tế, tôi sẽ đi vào CP ao cơ bản và xóa nó khỏi đây.
‫Vì vậy, hãy tiếp tục và xóa thành phần đầu vào trình phát thiết lập khỏi Base Pond.
‫CP Và bây giờ nó không còn nằm trong lớp ao cơ sở nữa.
‫Vì vậy, hãy tiếp tục và lưu các thay đổi của chúng tôi và đóng Pond H và CP cơ sở.
‫Và bây giờ chúng tôi đã thiết lập thành phần đầu vào trình phát được khai báo trong Xe tăng H, nhưng chúng tôi cũng muốn xác định nó và xe
‫tăng.
‫CP Vì vậy, ở đây trong Tank.
‫CP Tôi sẽ thêm định nghĩa ngay trên hàm di chuyển.
‫Vì vậy, đây là khoảng trống và nó là một thành phần đầu vào của người chơi thiết lập xe tăng.
‫Bây giờ chúng ta hãy quay lại Tank H và xem kiểu tham số đầu vào của nó là gì.
‫Bạn sẽ thấy rằng nó chuyển tiếp được khai báo ở đây bên trong dấu ngoặc đơn.
‫Đây là điều bạn có thể làm nếu muốn chuyển tiếp, khai báo một loại lớp trong tệp tiêu đề.
‫Vì vậy, nó được khai báo ở đây và chúng ta cần bạn nhập loại con trỏ thành phần này và tham số được gọi là thành
‫phần đầu vào của trình phát.
‫Vì vậy, chúng ta cần tham số đầu vào này trong bể.
‫CP Vì vậy, trong dấu ngoặc đơn cho thành phần đầu vào trình phát thiết lập, chúng ta sẽ có một thành phần đầu vào
‫U là một con trỏ và nó được gọi là thành phần đầu vào trình phát.
‫Vì vậy, bây giờ chữ ký hàm khớp với chữ ký đó trong khai báo hàm.
‫Bây giờ quay lại tệp CP, hãy cung cấp cho hàm này một phần thân hàm và chúng tôi đang ghi
‫đè hàm này và bạn nên gọi thành phần đầu vào trình phát siêu thiết lập.
‫Bây giờ, vì chúng tôi đang gọi phiên bản chính của thành phần đầu vào trình phát thiết lập, chúng tôi phải chuyển một
‫đầu vào thuộc loại thành phần đầu vào của bạn.
‫Chúng ta sẽ chuyển tham số đầu vào cho hàm này ở đây.
‫Vì vậy, theo cách này, lớp cha sẽ gọi phiên bản của nó.
‫Bây giờ bể ao cơ sở không thực hiện chức năng này.
‫Chúng tôi vừa gỡ bỏ nó.
‫Nhưng lớp cha đối với cơ sở - sẽ gọi phiên bản của nó.
‫Và bất cứ khi nào bạn ghi đè một chức năng ảo như thế này, việc gọi phiên bản siêu cấp là một ý kiến hay.
‫Vì vậy, chúng tôi không bỏ lỡ bất kỳ chức năng nào được triển khai trong phiên bản chính.
‫Vậy tại sao chúng ta lại làm điều này?
‫Thành phần đầu vào trình phát thiết lập tốt cho điều gì?
‫Chà, một trong những điều tốt là ràng buộc các hàm để truy cập các ánh xạ.
‫Chúng tôi muốn liên kết hàm di chuyển của mình với ánh xạ trục tiến.
‫Và chúng tôi làm điều đó ở đây.
‫Chúng tôi làm điều đó bằng cách sử dụng thành phần đầu vào trình phát tham số đầu vào này.
‫Đó là những gì đối tượng này được thiết kế cho.
‫Chúng tôi lấy thành phần đầu vào của trình phát và trên con trỏ này, chúng tôi sử dụng toán tử mũi tên để truy cập một hàm
‫được gọi là trục liên kết.
‫Bây giờ Bind Axis nhận một vài tham số đầu vào.
‫Đầu tiên là một chuỗi ký tự, có nghĩa là chúng ta sẽ sử dụng macro văn bản.
‫Bây giờ chúng ta đặt những gì trong dấu ngoặc kép?
‫Chúng tôi đặt tên của ánh xạ trục.
‫Chúng tôi đã thấy trong trình chỉnh sửa rằng ánh xạ trục này được gọi là di chuyển về phía trước.
‫Vì vậy, chúng tôi đang chọn ánh xạ trục đó để liên kết với tham số đầu vào thứ hai.
‫Đây sẽ là một con trỏ đến đối tượng mà ở đó ràng buộc hàm cho đây là một con trỏ đến thể
‫hiện của lớp cụ thể trong đó n và vì chúng ta đang ở trong lớp xe tăng, điều này sẽ trỏ đến
‫thể hiện của con tốt trong trò chơi.
‫Bây giờ tham số thứ ba là địa chỉ của hàm mà chúng ta đang ràng buộc.
‫Vì vậy, chúng tôi có một động thái xe tăng.
‫Rất quan trọng mà chúng ta cần phải đầy đủ.
‫Xác định điều kiện tên hàm với tên của lớp.
‫Và ngay trước tên hàm, chúng ta cần địa chỉ của toán tử.
‫Bây giờ, nếu bạn không quen với việc làm như thế này, thì đây chỉ đơn giản là lấy địa chỉ
‫của một hàm.
‫Các hàm có thể có địa chỉ giống như các biến có thể.
‫Vì vậy, sử dụng địa chỉ của toán tử là một cách để truyền các hàm vào các hàm khác.
‫Vì vậy, đó là lý do tại sao chúng ta cần địa chỉ của nhà điều hành.
‫Vì vậy, chúng tôi có lời gọi hàm để ràng buộc quyền truy cập.
‫Bây giờ bạn có thể nhận thấy con trỏ lỗi IntelliSense cho loại lớp không đầy đủ mà bạn nhập thành phần
‫không được phép.
‫Bây giờ chúng ta biết những gì có thể gây ra điều này.
‫Đối với một, nó có thể có nghĩa là chúng ta cần bao gồm một tệp tiêu đề.
‫Một khả năng khác là đó là một lỗi sai.
‫Bạn có thể dễ dàng tìm ra bằng cách biên dịch, vì vậy hãy cố gắng biên dịch.
‫Chúng tôi sẽ thấy rằng chúng tôi đã biên dịch thành công.
‫Vì vậy, chúng tôi biết đây là một lỗi sai.
‫Nhưng một lần nữa, nếu bạn muốn, bạn có thể thêm bao gồm chỉ để loại bỏ điều đó.
‫Vì vậy, nó không làm phiền bạn.
‫Bây giờ chúng ta biết rằng loại lớp mà nó phàn nàn là thành phần đầu vào của bạn.
‫Vì vậy, đây là bạn nhập thành phần trong tài liệu và đây là thành phần bao gồm.
‫Và nếu chúng tôi thêm điều này vào đây ở đầu tệp CP bể, chúng tôi sẽ loại bỏ lỗi sai khó chịu đó.
‫Và một lần nữa, bởi vì những thứ này có pragya muốn bao gồm các bảo vệ, chúng ta biết rằng các thành phần đầu
‫vào sẽ không được đưa vào nhiều lần và sẽ có những biến cố mà chúng biến mất.
‫Vì vậy, bây giờ chúng ta biết rằng hàm di chuyển này sẽ được gọi là mọi khung và giá trị sẽ
‫có một giá trị float cụ thể tùy thuộc vào việc chúng ta nhấn W hay hỏi.
‫Bây giờ, chỉ cần biết rằng hàm di chuyển bị ràng buộc để di chuyển về phía trước là không đủ.
‫Là nhà phát triển, thật tuyệt khi có một số xác nhận rằng mọi thứ đang hoạt động.
‫Vì vậy, những gì tôi muốn bạn làm khi thử thách của bạn là sử dụng đăng nhập YUI trong hàm MOV để in giá
‫trị đang được chuyển vào di chuyển giá trị được gọi là float đó.
‫Vì vậy, hãy sử dụng phần trăm f trong nhật ký uiy để ghi giá trị của giá trị float vào nhật ký đầu ra và sau đó chơi thử trò chơi
‫và nhấn các phím đó và xem những gì bạn được in ra nhật ký.
‫Tạm dừng video và thêm video này vào chức năng di chuyển ngay bây giờ.
‫Được chứ.
‫Vì vậy, ở đây trong hàm mov, tôi sẽ thêm một nhật ký uii.
‫Và đây có thể là cảnh báo tạm thời nhật ký.
‫Và đối với macro văn bản.
‫Tôi chỉ đơn giản là sẽ đặt giá trị phần trăm F và giá trị.
‫Bây giờ thì không sao.
‫Nếu bạn đã sử dụng một loại cảnh báo hoặc độ dài khác, nếu bạn biết cách thực hiện những điều đó.
‫Điều đó hoàn toàn ổn.
‫Tôi chỉ sử dụng một cảnh báo ở đây và tôi biết bạn đã sử dụng những thứ như phần trăm se và định dạng nhật
‫ký của bạn bằng một giá trị chuỗi.
‫Phần trăm F, nếu bạn không biết, là cách bạn có thể định dạng nhật ký giao diện người dùng của mình với giá trị float.
‫Vì vậy, hãy biên dịch cái này và quay lại trình chỉnh sửa, tôi sẽ mở nhật ký đầu ra và nhấn play và kiểm tra xem nơi
‫gửi thư rác nhật ký đầu ra với vô số tin nhắn.
‫Bây giờ tôi sẽ nhấp vào khung nhìn và nhấn phím W.
‫Tôi sẽ phát hành một giá trị của tôi.
‫Nó trở lại con số không.
‫Tôi sẽ nhấn phím và nó là phím âm.
‫Và nếu chúng ta nhấn cả hai cùng một lúc, chúng ta sẽ nhận được số không.
‫Và vì vậy nó chính xác như chúng tôi mong đợi.
‫Hoàn hảo.
‫Được rồi.
‫Vì vậy, trong video này, chúng tôi đã thiết lập ao của mình để xử lý một số đầu vào của người dùng.
‫Chúng tôi đã nói về ánh xạ truy cập và chúng tôi ràng buộc chức năng di chuyển của mình với ánh xạ truy cập tiến về phía trước.
‫Sau đó, chúng tôi in giá trị truy cập đó bằng cách sử dụng nhật ký YUI trong chức năng MOVE, nhưng chúng tôi thực sự muốn di chuyển bể
‫chứa của mình hơn là chỉ in một số giá trị vào nhật ký đầu ra.
‫Vì vậy, trong các bài giảng sắp tới, chúng tôi sẽ thiết lập nó để chúng tôi có thể thực sự bắt đầu di chuyển xe tăng của mình.
‫Tôi sẽ gặp bạn sớm.