‫Xin chào và chào mừng trở lại.
‫Trong video này, chúng ta sẽ nói về cách chúng ta có thể tăng tốc xe tăng của mình.
‫Chúng tôi muốn kiểm soát chính xác tốc độ di chuyển của xe tăng.
‫Và ngay bây giờ chúng tôi chỉ chuyển vector vị trí đồng bằng này vào hành động bổ sung, một điểm bù cục bộ
‫và chúng tôi không kiểm soát được tốc độ di chuyển của xe tăng.
‫Nó thực sự di chuyển khá chậm.
‫Vì vậy, chúng tôi sẽ tạo một biến tốc độ mà chúng tôi có thể sử dụng để kiểm soát tốc độ đó.
‫Và chúng tôi cũng sẽ tính đến tốc độ khung hình của trò chơi vì trò chơi của chúng tôi đang thay đổi tốc độ khung hình từ khung hình này
‫sang khung hình khác.
‫Chúng tôi thực sự không nhận được chuyển động nhất quán.
‫Vì vậy, để tính đến tốc độ khung hình đó, chúng ta sẽ nói về một thứ gọi là Delta Time.
‫Vì vậy, chúng tôi đang ở đây trong trình chỉnh sửa và nếu tôi chơi và bắt đầu di chuyển xe tăng xung quanh, đó không phải là
‫điều bạn thực sự có thể nhận thấy nhất thiết.
‫Nhưng xe tăng của chúng tôi không di chuyển theo một tốc độ nhất quán từ khung này sang khung khác.
‫Và lý do là bởi vì tốc độ khung hình của chúng tôi thay đổi và ở trên cùng bên trái của chế độ xem là một
‫menu thả xuống nhỏ.
‫Nếu tôi nhấp vào đó, có một hộp kiểm bên cạnh để hiển thị DPS PES có nghĩa là khung hình trên giây.
‫Nếu tôi kiểm tra điều này, thì ở trên cùng bên phải, tôi thấy số khung hình trên giây của mình.
‫Và ngay bên dưới đó, bao nhiêu mili giây đã trôi qua kể từ khung hình cuối cùng?
‫Và các giá trị này thay đổi từ khung này sang khung khác.
‫Nếu tôi nhấn phát, bạn có thể đã bỏ lỡ nó, nhưng tốc độ khung hình giảm và sau đó quay trở lại
‫bởi vì trong giai đoạn đầu của trò chơi, rất nhiều thứ đã xảy ra.
‫Tất cả các diễn viên đều gọi các chức năng bắt đầu chơi của họ và có một số thiết lập hậu trường cho
‫thế giới.
‫Bây giờ, nếu tôi bắt đầu chơi trò chơi, 120 ứng dụng mà tôi nhận được sẽ thay đổi từ khung này sang khung khác, mặc
‫dù nó dao động xung quanh 120.
‫Vì vậy, lý do điều này gây ra chuyển động không nhất quán là vì khi tốc độ khung hình giảm xuống, các bản cập nhật
‫tích tắc đó sẽ ít được gọi hơn.
‫Và nếu chúng ta đang di chuyển chiếc xe tăng này với cùng số lượng cho mỗi khung hình, thì chúng ta sẽ dựa vào tốc độ khung
‫hình đó để duy trì nhất quán, để có được chuyển động nhất quán đó.
‫Và khi trò chơi trở nên phức tạp hơn, các biến thể tốc độ khung hình sẽ ngày càng trở nên tồi tệ hơn.
‫Vì vậy, chúng tôi cần đảm bảo rằng chúng tôi đang điều chỉnh cho điều đó bằng cách sử dụng một thứ gọi là Delta Time.
‫Vậy giờ Delta bí ẩn này là gì?
‫Vâng, giả sử chúng ta có dòng thời gian này ở đây bắt đầu từ 0 giây và tăng dần khi thời gian trôi qua.
‫Bây giờ, khi thời gian trôi qua tích tắc, điều này có nghĩa là hàm đánh dấu đang được gọi.
‫Nhưng lưu ý rằng chức năng đánh dấu không nhất quán cho lắm.
‫Đôi khi nó được gọi rất nhanh và đôi khi nó được gọi ít thường xuyên hơn.
‫Điều này là do máy tính của bạn phải thực hiện các phép tính trên cơ sở từng khung hình và đôi khi những tính toán đó
‫chiếm nhiều tài nguyên hơn từ máy tính của bạn và điều đó có thể làm chậm tốc độ khung hình của chúng tôi.
‫Bây giờ, biến thời gian delta này mà chúng ta có trong hàm đánh dấu là lượng thời gian đã trôi qua
‫kể từ khung cuối cùng.
‫Vì vậy, ở đây nó có thể là 0. 1 giây.
‫Nó thực sự phụ thuộc vào việc sử dụng CPU và điều đó thay đổi như thế nào.
‫Vì vậy, khi mức sử dụng CPU của bạn khác nhau, thời gian delta của bạn cũng sẽ khác nhau.
‫Và điều này có nghĩa là khi chúng ta có nhiều khung hình trên giây hơn, chúng ta có nhiều lệnh gọi hàm hơn.
‫Bây giờ nếu chúng ta đang gọi thêm phần bù cục bộ của tác nhân thường xuyên hơn, thì chúng ta sẽ thấy ao của chúng ta di chuyển nhanh
‫hơn và nó sẽ không có tốc độ di chuyển nhất quán.
‫Vì vậy, giải pháp là mở rộng quy mô chuyển động theo thời gian Delta.
‫Vì vậy, nếu thời gian Delta là 0. 1 và chúng tôi muốn di chuyển ao của mình, chẳng
‫hạn, mười cm mỗi giây, nhân rộng chuyển động đó bằng 0. 1 giây cung cấp cho chúng tôi lượng chuyển động chính xác mà chúng tôi cần cho thời gian cập nhật
‫khung hình bằng 0. 1 giây.
‫Bây giờ hãy xem xét phần này ở đây, nơi chúng ta có thời gian delta nhỏ hơn, có nghĩa là TIC đang được gọi thường
‫xuyên hơn.
‫Giả sử rằng thời gian delta ở đây là 0. 0 1 giây.
‫Vì vậy, TIC đang được gọi thường xuyên hơn mười lần ở đây.
‫Chà, chúng ta có thể tăng quy mô chuyển động của mình bằng 0 một cách đơn giản. 01 cho khung cụ thể này, và theo cách đó, chúng ta sẽ di chuyển
‫ao của mình 10 cm mỗi giây lần lượt, 0. 0 1 giây.
‫Vì vậy, chúng tôi đang di chuyển ao một lượng nhỏ vì TIC đang được gọi thường xuyên hơn nhiều.
‫Làm điều này đảm bảo rằng ao của chúng ta sẽ di chuyển một cách nhất quán độc lập với những thay đổi về tốc độ
‫khung hình.
‫Vì vậy, trở lại đây trong mã VSE, chúng ta hãy nghĩ về cách chúng ta muốn xử lý vấn đề này.
‫Chúng tôi có vectơ vị trí đồng bằng của mình và chúng tôi đang đặt x của nó bằng giá trị, nhưng chúng tôi biết chúng tôi muốn chia
‫tỷ lệ giá trị theo thời gian Delta.
‫Vì vậy, tôi sẽ đưa ra một bình luận nhỏ ở đây và nói X bằng giá trị thời gian, thời gian đồng bằng, có nghĩa là chúng tôi muốn chia tỷ
‫lệ giá trị theo thời gian Delta.
‫Bây giờ một khi chúng tôi làm điều này, chúng tôi sẽ tạo ra giá trị rất nhỏ vì bản thân thời gian Delta là một giá
‫trị rất nhỏ, đặc biệt nếu tốc độ khung hình của bạn rất cao.
‫Vì vậy, chúng tôi cũng sẽ cần phải mở rộng quy mô này theo thứ gì đó.
‫Khác một loại biến tốc độ và chúng ta có thể quyết định giá trị này phải là bao nhiêu để kiểm soát tốc
‫độ xe tăng.
‫Vì vậy, chúng tôi có một chút mã giả ở đây để hướng dẫn chúng tôi và bây giờ chúng tôi chỉ cần thực hiện điều này bằng cách
‫tạo một giá trị cho tốc độ và tìm hiểu cách chúng tôi có thể nhận được giá trị thời gian delta này.
‫Vì vậy, hãy nói về cách chúng ta có thể truy cập thời gian Delta từ hàm di chuyển.
‫Giờ đây, Unreal Engine có nhiều cách để nắm giữ thời gian Delta.
‫Trên thực tế, nếu bạn nhìn vào hàm đánh dấu mà chúng ta có dựa trên Delta, thời gian là một tham số đầu vào float.
‫Vì vậy, nếu chúng ta đang làm việc trong hàm đánh dấu, chúng ta đã có quyền truy cập vào thời gian Delta, nhưng trong DHCP của
‫xe tăng, hàm di chuyển của chúng ta không có tham số đầu vào đó, nhưng động cơ không thực có cách của nó.
‫Một cách là truy cập một chức năng được gọi là get world delta seconds, tồn tại trong một lớp gọi là U
‫gameplay statics.
‫Như tên cho thấy bạn chơi trò chơi tĩnh có rất nhiều chức năng tĩnh hỗ trợ trong việc lập trình trò chơi.
‫Nhận giây đồng bằng thế giới trả về thời gian đồng bằng.
‫Bây giờ nó có một tham số đầu vào.
‫Ở đây nó có một đối tượng bối cảnh thế giới.
‫Bạn sẽ thấy điều này rất nhiều trong Unreal Engine.
‫Rất nhiều hàm tĩnh sẽ yêu cầu một đối tượng ngữ cảnh thế giới.
‫Thế giới là một đối tượng của loại bạn thế giới.
‫Đó là đối tượng cấp cao nhất trong trò chơi của chúng tôi.
‫Nó đại diện cho bản đồ của chúng tôi chứa tất cả các đối tượng liên quan trong trò chơi của chúng tôi.
‫Giờ đây, các hàm tĩnh chẳng hạn như nhận giây đồng bằng thế giới không biết chúng ta đang ở thế giới nào.
‫Chúng ta cần cho chức năng này biết chúng ta đang ở thế giới nào để nó có thể truy cập vào thế giới đó và nhận giá trị thời
‫gian delta đó.
‫Bây giờ, để cho nó biết chúng ta đang ở thế giới nào, chúng ta có thể chuyển một con trỏ đến một đối tượng tồn tại trong
‫thế giới đó.
‫Trong khi chúng tôi đang làm việc trong lớp xe tăng, chúng tôi có thể chuyển từ khóa này.
‫Đây là một từ khóa mà chúng ta có thể sử dụng bên trong bất kỳ lớp nào trong C ++.
‫Từ khóa này là gì, là một con trỏ đến phiên bản của bất kỳ đối tượng cụ thể nào mà chúng ta đang làm việc.
‫Vì vậy, nếu chúng tôi đang làm việc trong lớp xe tăng, đây là một con trỏ chỉ đến chiếc xe tăng mà chúng tôi đang tham gia.
‫Vì vậy, các hàm yêu cầu đối tượng ngữ cảnh thế giới thường có thể nhận đây là tham số đầu vào vì bể chứa chúng
‫ta đang làm việc tồn tại trong thế giới chính xác.
‫Vì vậy, giây đồng bằng thế giới sẽ biết nó ở thế giới nào và có thể lấy cho chúng ta vùng đồng bằng thích hợp.
‫Thời gian cho thế giới đó.
‫Vì vậy, nếu chúng ta đang gọi get world delta seconds từ trong - class, chúng ta sẽ chuyển nó vào làm
‫đối tượng ngữ cảnh thế giới.
‫Vì vậy, bây giờ bạn có tất cả các công cụ bạn cần để kiểm soát tốc độ xe tăng.
‫Vì vậy, những gì bạn sẽ làm là tạo một biến tốc độ, biến nó thành một phao và đặt nó vào một
‫phần riêng tư trong lớp xe tăng.
‫Bây giờ, hãy hiển thị điều này với các bản thiết kế để chúng tôi có thể điều chỉnh nó khi chúng tôi đang phát triển,
‫có nghĩa là bạn sẽ cung cấp cho nó một thuộc tính của bạn và sử dụng các chỉ định thuộc tính thích hợp của bạn tương ứng
‫với mức độ hiển thị mà bạn muốn.
‫Bây giờ trong hàm MOV, chúng ta có bit mã giả mà chúng ta đã đặt dưới dạng nhận xét.
‫Vì vậy, hãy sử dụng nó như một hướng dẫn.
‫Bạn sẽ lấy vị trí đồng bằng, vectơ F và tỷ lệ.
‫Đó là X theo thời gian delta.
‫Chúng tôi vừa xem cách chúng tôi có thể truy cập thời gian đồng bằng bằng cách sử dụng tĩnh trong trò chơi U.
‫Và bạn cũng sẽ chia tỷ lệ X theo biến tốc độ.
‫Bây giờ, vì chúng tôi đang sử dụng một chức năng trong tĩnh trong trò chơi, bạn sẽ cần phải bao gồm tệp tiêu
‫đề cho tĩnh trong trò chơi.
‫Bây giờ tôi đã chỉ cho bạn nhiều lần cách tôi tìm thấy bao gồm cho một lớp cụ thể bằng cách sử dụng tài liệu động
‫cơ không có thật.
‫Vì vậy, tôi sẽ thách thức bạn tìm kiếm các tĩnh trong trò chơi của bạn trong tài liệu Unreal Engine
‫và tìm tệp tiêu đề đó.
‫Và nếu bạn không thể tìm thấy nó, thì chỉ cần tìm liên kết trong tài nguyên cho video này, nó sẽ cung cấp cho
‫bạn tài liệu về các tĩnh trong trò chơi của bạn nhưng hãy cố gắng tự tìm.
‫Đầu tiên, hãy tạm dừng video và kiểm soát tốc độ xe tăng ngay bây giờ.
‫Được chứ.
‫Vì vậy, tôi có mã giả của mình để hướng dẫn và tôi cần chia tỷ lệ giá trị theo thời gian delta và theo tốc độ.
‫Vì vậy, trước tiên tôi sẽ tạo biến tốc độ của mình.
‫Bây giờ trở lại trong bể h.
‫Đây là nơi tôi có thể đặt biến tốc độ.
‫Tuy nhiên, nếu bạn nhớ lại từ một bài tập thực hành trong một bài giảng trước đó, tôi đã thêm một phao có tên là Tốc
‫độ vào lớp Base Pond.
‫Bây giờ tôi không cần biến tốc độ ở đây trong ao cơ sở.
‫Đây chỉ là thực hành, vì vậy tôi không thực sự cần nó ở đây.
‫Trên thực tế, tôi không cần 30 twos khác mà tôi đã tạo này để chứng minh rằng bạn chỉ định thuộc tính.
‫Vì vậy, tôi sẽ đánh dấu tất cả những thứ này và xóa chúng khỏi lớp ao cơ sở.
‫Tôi không muốn chúng nữa.
‫Vì vậy, họ đã biến mất.
‫Bây giờ, bạn cũng có thể nhớ rằng tôi đã tham chiếu biến tốc độ đó trong bản thiết kế bể ao.
‫Vì vậy, tôi sẽ mở bể ao BP.
‫Và đây trong biểu đồ sự kiện, có biến tốc độ mà tôi đã tham chiếu.
‫Vì tôi không còn cần nó nữa, tôi sẽ tiếp tục xóa các nút đó và biên dịch và lưu
‫bể ao BP của tôi.
‫Được chứ.
‫Sau khi dọn dẹp tất cả những thứ đó, tôi sẽ quay trở lại xe tăng để thêm biến tốc độ của mình.
‫Và điều này sẽ có trong phần riêng tư ở đây.
‫Tôi sẽ thêm nó ngay phía trên hàm di chuyển và nó sẽ là một phao có tên là tốc độ.
‫Bây giờ tôi sẽ cung cấp cho nó một giá trị ban đầu ở đây.
‫Tôi nghĩ tôi sẽ thử 200 F và xem nó hoạt động như thế nào.
‫Nhưng vì tôi muốn có thể chỉnh sửa điều này trong trình chỉnh sửa khi tôi đang phát triển, nó sẽ nhận được một macro
‫thuộc tính mới và tôi muốn có thể chỉnh sửa điều này trên các phiên bản và theo mặc định.
‫Vì vậy, tôi sẽ chỉnh sửa nó ở bất cứ đâu.
‫Bây giờ, bạn không cần phải làm điều này, nhưng tôi đang cho nó một danh mục.
‫Tôi sẽ tạo một danh mục mới có tên là chuyển động.
‫Bây giờ, việc hiển thị nó trên biểu đồ sự kiện là tùy chọn.
‫Tôi sẽ tạm dừng việc đó vì tôi không nghĩ rằng mình sẽ cần truy cập nó trong biểu đồ sự kiện.
‫Nếu tôi cần.
‫Trong tương lai, tôi có thể hiển thị nó với bản thiết kế, chỉ đọc, ghi hoặc bản thiết kế và sử dụng meta cho
‫phép truy cập riêng tư chỉ định.
‫Nhưng bây giờ tôi sẽ không.
‫Vì vậy, tôi có một biến tốc độ và ở đây trong DHCP của xe tăng, tôi sẽ lấy giá trị và chia tỷ lệ theo tốc độ.
‫Bây giờ điều cuối cùng cần làm là chia tỷ lệ giá trị theo thời gian đồng bằng, có nghĩa là tôi cần bạn thông tin tĩnh về trò chơi.
‫Vì vậy, đây là tài liệu của Unreal Engine.
‫Tôi sẽ tiếp tục và tìm kiếm cho bạn các tĩnh trong trò chơi và đây chính là bạn cho các tĩnh trong trò chơi.
‫Vì vậy, tôi chỉ cần cuộn xuống dòng bao gồm và sao chép cái này và quay lại CP xe tăng.
‫Tôi có thể dán nó vào.
‫Bây giờ tôi đã có quyền truy cập vào các tĩnh trong trò chơi mới, tôi có thể nhận được thời gian Delta, vì vậy tôi sẽ nhân lên với bạn.
‫Các tĩnh trong trò chơi nhận được giây đồng bằng thế giới và như chúng ta đã thấy, điều này cần một đối tượng bối cảnh thế giới.
‫Bạn thậm chí có thể thấy với cửa sổ bật lên nó yêu cầu một đối tượng ngữ cảnh thế giới.
‫Vì vậy, tôi sẽ vượt qua trong này.
‫Vì vậy, bây giờ tôi đang đặt vị trí Delta X thành giá trị thời gian, tốc độ, thời gian, thời gian delta, tôi sẽ biên
‫dịch điều này.
‫Vậy là chúng ta đã biên dịch thành công.
‫Vì vậy, trở lại đây trong trình chỉnh sửa, tôi có thể đi vào BP Pond Tank và có tốc độ của tôi ngay tại đó.
‫Và nếu tôi chọn trường hợp của xe tăng trên thế giới, tôi có thể tìm kiếm trong bảng chi tiết về chuyển động và tốc độ
‫và tôi có thể đặt nó thành bất kỳ giá trị nào tôi thích.
‫Nếu tôi xoay nó lên và chơi, thì tôi sẽ di chuyển nhanh hơn một chút.
‫Vì vậy, đây là lợi thế của việc hiển thị các biến trong các bản thiết kế.
‫Tôi có thể thử nghiệm và tìm ra một tốc độ tốt phù hợp với mình.
‫Được rồi, vì vậy nó trông rất tuyệt.
‫Tôi sẽ tiếp tục và ngừng hiển thị FPSO ngay bây giờ.
‫Và bây giờ chúng ta có biến tốc độ và chúng ta có thể thay đổi nó.
‫Và sự thay đổi đó sẽ được phản ánh trong chuyển động của con tốt của tôi.
‫Vì vậy, chúng tôi hiện đang kiểm soát tốc độ di chuyển của xe tăng và chúng tôi có một biến tốc độ tuyệt vời mà chúng tôi đưa ra trong
‫các bản thiết kế và chúng tôi có thể đặt điều đó khi chúng tôi đang phát triển một thử nghiệm với giá trị của nó.
‫Chúng tôi cũng đã tìm hiểu về thời gian Delta và lý do tại sao điều quan trọng là phải mở rộng quy mô chuyển động của chúng tôi theo thời gian Delta.
‫Vì vậy, nó không phụ thuộc vào tốc độ khung hình vì những thay đổi về tốc độ khung hình sẽ vẫn có được chuyển động mượt mà, nhất quán với xe
‫tăng của chúng tôi.
‫Vì vậy, nhìn lại kế hoạch phần của chúng tôi, chúng tôi gần như đã hoàn thành gạch đầu dòng đầu tiên của mình.
‫Chúng tôi đã tạo ra một chiếc xe tăng và nó có thể di chuyển khắp thế giới.
‫Điểm thứ hai của chúng tôi là xử lý đầu vào bằng chuyển động bàn phím WASD và đầu vào chuột.
‫Chúng tôi đã giảm phần W và SW, nhưng chúng tôi vẫn cần có thể sử dụng các phím A và D và chúng tôi sẽ
‫sử dụng chúng để xoay xe tăng.
‫Vì vậy, chúng tôi đang tiến bộ tốt trong các video tiếp theo.
‫Chúng tôi sẽ hoàn thiện khả năng di chuyển xe tăng của mình.
‫Tôi sẽ gặp bạn sớm.