vật lý

Hệ thống vật lý giúp bạn mô phỏng các hành vi vật lý trong thế giới thực như va chạm và lực.

Mô-đun Vật lý

Vật lý là bản mod được tải theo mặc định.

image-20240923155343336

Bạn có thể sửa đổi cài đặt vật lý toàn cầu tại đây:

  1. Hướng và độ lớn của trọng lực.
  2. Vật liệu vật lý mặc định. Vui lòng tham khảo phần Va chạm - Vật liệu vật lý bên dưới.
  3. Ngưỡng năng lượng toàn cục. Tính động năng của một vật thể bằng công thức:
Ek=1/2<em>m</em>v2
m biểu thị khối lượng của một vật tính bằng kg.

v biểu thị vận tốc vật lý tính bằng m/s.

Khi động năng của một vật nhỏ hơn ngưỡng này, vật sẽ dừng chuyển động. Ví dụ, nếu ngưỡng được đặt thành 0,5, vật nặng 1kg sẽ dừng chuyển động khi tốc độ nhỏ hơn 1m/s.
  1. Ngưỡng va chạm của bộ điều khiển nhân vật. Chỉ áp dụng cho các bản mod của người chơi đã bật [Sử dụng bộ điều khiển của người chơi với Vật lý] hoặc bộ điều khiển nhân vật tùy chỉnh hoàn toàn.

Công thức động lượng là:

p=mv

m là khối lượng, đơn vị là kg.

v là vận tốc tính bằng m/s.

Khi xảy ra va chạm, động lượng của người chơi và vật thể cứng bị va chạm sẽ bị trừ đi, và mô đun của chênh lệch động lượng trên pháp tuyến va chạm được lấy và so sánh với ngưỡng va chạm của bộ điều khiển nhân vật. Nếu nhỏ hơn ngưỡng này, vật thể cứng sẽ bị đẩy đều, nếu không sẽ xảy ra va chạm dữ dội.

Nói một cách đại khái, các thông số ảnh hưởng đến việc một vụ va chạm có dữ dội hay không là:

  1. Khối lượng của người chơi hoặc nhân vật càng lớn thì khả năng xảy ra va chạm dữ dội càng cao.

  2. Tốc độ tương đối giữa người chơi hoặc nhân vật và vật thể cứng bị va chạm càng nhanh thì khả năng xảy ra va chạm dữ dội càng cao.

  3. Ngưỡng va chạm của bộ điều khiển nhân vật càng lớn thì khả năng va chạm dữ dội càng thấp.

Ví dụ, khi ngưỡng va chạm của bộ điều khiển nhân vật được đặt thành 50, một người chơi nặng 50kg di chuyển với tốc độ 1m/giây có thể va chạm mạnh với bất kỳ vật thể cứng đứng yên nào có khối lượng tương tự như người chơi hoặc nhân vật trong một vụ va chạm trực diện.

  1. Cấp độ vật lý. Việc va chạm có xảy ra ở các cấp độ khác nhau hay không phụ thuộc vào cấu hình vật lý.

Để cấu hình lớp vật lý không phải mặc định cho người chơi:

image-20240717181446557

Vô hiệu hóa sự va chạm giữa các cấp độ Tùy chỉnh và Mặc định trong Cấu hình Vật lý:

image-20240717181534541

Bạn sẽ thấy rằng người chơi có thể đi qua bất kỳ vật thể nào có cấp độ vật lý mặc định mà không cảm thấy:

image-20240923163608324

Các đối tượng dựa vào kích hoạt va chạm sẽ không kích hoạt:

image-20240923163636790

Hình dạng va chạm và va chạm

Có hai thành phần cơ bản cần thiết để áp dụng các đối tượng tùy chỉnh vào hệ thống vật lý:

Thành phần hình dạng va chạmThành phần va chạm.

image-20240923150401236

Đối với hầu hết các đối tượng, bạn sẽ chỉ tìm thấy một thành phần va chạm trên chúng.

Bởi vì chúng thường không phải là các đối tượng tùy chỉnh:

image-20240923150521786

Đối với hình dạng va chạm tùy chỉnh và vật liệu vật lý, chúng tôi khuyên bạn nên tạo một nút trống mới và thao tác trên nút đó:

image-20240923150725335

image-20240923150807166

Hình dạng va chạm

Thành phần hình dạng va chạm xác định ranh giới mà các vật thể va chạm.

Loại va chạm:

image-20240923153336796

Kiểu va chạm xác định hình dạng cơ bản của va chạm. Chúng tôi cung cấp ba hình dạng cơ bản: khối lập phương, hình cầu, hình nang và va chạm dạng lưới.

Bộ va chạm lưới là hình dạng va chạm được mô phỏng dựa trên ranh giới của mô hình và gần giống với hình ảnh trực quan của mô hình.

Đối với nút trống đã tạo, bạn cần thêm thành phần kết xuất tùy chỉnh để chỉ định hình dạng và kích thước lưới của nút đó.

image-20240923153752769

Đối với các hình dạng va chạm cơ bản, bạn có thể sửa đổi vị trí, kích thước hoặc điều chỉnh hình dạng theo cách thủ công:

image-20240923153907205

Kéo chấm vàng trên hộp va chạm để điều chỉnh hình dạng va chạm

Hình dạng va chạm của lưới có tùy chọn lồi hoặc không

image-20240923154035083

Convex Polygons: Có nên va chạm với Mesh Colliders khác không. Mesh Colliders không bật Convex Polygons chỉ được hỗ trợ trên GameObjects không có thành phần Rigidbody. Để sử dụng Mesh Collider với thành phần Rigidbody, hãy kiểm tra tùy chọn Convex Polygons.

Va chạm

Vật liệu vật lý

Vật liệu vật lý quyết định một số tính chất vật lý của vật thể va chạm.

Đối với các đối tượng tùy chỉnh, vật liệu vật lý của va chạm có thể được tùy chỉnh. Tuy nhiên, đối với hầu hết các đối tượng không tùy chỉnh được cung cấp chính thức, vật liệu vật lý không hỗ trợ sửa đổi.

image-20240923154559903

Có thể tạo các tập tin vật lý.

image-20240923154405512

Bạn có thể sửa đổi các thuộc tính sau trong bảng kiểm tra của tệp vật liệu vật lý để tất cả các đối tượng được gắn với vật liệu vật lý sẽ có được các thuộc tính vật lý tương ứng.

image-20240923154620475

Đây có phải là tác nhân kích hoạt không?

Khi hộp kiểm Is It a Trigger được chọn, trình va chạm sẽ bỏ qua các va chạm vật lý nhưng có thể kích hoạt các sự kiện.

Điều này có nghĩa là đối tượng sẽ không tham gia vào logic va chạm vật lý mặc định:

image-20240923154941118

Nhưng sự kiện va chạm có thể xảy ra:

image-20240923155036397

image-20240923155220723

Mức độ vật lý

Xác định mức độ vật lý. Việc va chạm ở các mức độ khác nhau có xảy ra hay không phụ thuộc vào cấu hình trong mô-đun vật lý.

Vật rắn

Thành phần Rigidbody giúp vật thể được điều khiển về mặt vật lý, cho phép vật thể chịu tác động của các lực.

Để thêm thành phần Rigidbody, trước tiên bạn phải có thành phần Collision.

Vật rắn được chia thành vật tĩnh, vật động và vật động học.

image-20240924112556743

Vật thể rắn tĩnh chủ yếu được sử dụng cho các vật thể không có tốc độ và không chịu tác động của lực, chẳng hạn như mặt đất, tường và các vật thể khác không chuyển động. Việc thay đổi vị trí và tỷ lệ của các vật thể này sẽ làm tăng hiệu suất.

Vật rắn động chủ yếu được sử dụng cho các vật thể có các đặc tính cơ học như khối lượng và vận tốc, có thể bị ảnh hưởng bởi lực.

image-20250630165950663

Bạn có thể sửa đổi các thông số liên quan đến vật lý như trọng tâm và khối lượng trong tùy chọn Dynamic Rigid Body. Bạn cũng có thể chọn khóa một trục cụ thể để vật thể cứng không bị dịch chuyển hoặc quay cụ thể.

Các vật thể rắn động học có thể được điều khiển thủ công để di chuyển và quay, nhưng không bị ảnh hưởng bởi va chạm hoặc lực từ các vật thể rắn khác. Chúng thường được sử dụng trong hoạt hình và sản xuất hiệu ứng đặc biệt.

Bộ điều khiển nhân vật

##Bộ điều khiển máy nghe nhạc FF

Theo mặc định, hành động của người chơi trên nhân vật sẽ được kế thừa từ bộ điều khiển của người chơi FreeFire.

Bộ điều khiển người chơi có vật lý

Trong mô-đun người chơi, sau khi kiểm tra [Có nên sử dụng bộ điều khiển người chơi có hiệu ứng vật lý hay không], bạn có thể sửa đổi các tham số vật lý của một số bộ điều khiển người chơi. Trong trường hợp này, người chơi bắt đầu tham gia vào mô phỏng vật lý trong trò chơi ở một mức độ nhất định, chẳng hạn như cấu hình [Ngưỡng va chạm của bộ điều khiển nhân vật] trong mô-đun vật lý sẽ bắt đầu có hiệu lực.

image-20240924115708102

<strong>Có nên sử dụng bộ điều khiển của người chơi có hiệu ứng vật lý hay không: </strong>Chọn sử dụng bộ điều khiển có hiệu ứng vật lý tùy chỉnh và mở rộng các cấu hình liên quan.

<strong>Chiều cao tổng thể, bao gồm cả bán cầu trên và dưới:</strong> Chiều cao của cơ thể va chạm của nhân vật.

<strong>Bán kính của bán cầu trên và dưới: </strong>Bán kính của viên nang không được vượt quá 1/2 chiều cao.

<strong>Chất lượng:</strong> Chất lượng người chơi.

<strong>Góc lên dốc tối đa:</strong> Không thể leo lên những con dốc vượt quá góc này và người chơi sẽ bắt đầu trượt xuống.

<strong>Bước lệch theo chiều dọc:</strong> Khoảng cách người chơi có thể đi chệch khỏi cấu hình mà không rời khỏi mặt đất hoặc bị chặn, thường được sử dụng khi di chuyển lên và xuống cầu thang.

<strong>Khoảng cách di chuyển tối thiểu:</strong> Nếu khoảng cách mà nhân vật điều khiển phải di chuyển nhỏ hơn giá trị này, người chơi sẽ đứng yên.

Độ dày của da: Độ sâu mà các đối tượng khác được phép nhúng vào bộ phận va chạm của nhân vật, được sử dụng để tránh hiện tượng rung hoặc kẹt.

<strong>Gia tốc trọng trường bạn nhận được:</strong> Gia tốc trọng trường bạn nhận được trong ba chiều. Đối với nhân vật người chơi, thiết lập này sẽ ghi đè lên thiết lập vật lý toàn cục.

<strong>Bật tùy chỉnh đẩy:</strong> Khi bật, lực tác dụng của nhân vật khi đẩy vật thể cứng có thể được tùy chỉnh. Mở rộng cấu hình có liên quan sau khi bật.

<strong>Sức đẩy tùy chỉnh:</strong> Lượng lực tác dụng khi nhân vật đẩy vật thể cứng.

<strong>Chiều cao nhảy nhiều lần:</strong>Chiều cao của cú nhảy khi thực hiện nhiều lần nhảy.

<strong>Số lượng bước nhảy đa điểm tối đa: </strong>Số lượng bước nhảy tối đa được hỗ trợ bởi mỗi bước nhảy đa điểm.

<strong>Di chuyển trên không:</strong> Khi được bật, người chơi có thể thay đổi tốc độ và hướng di chuyển trên không.

Bộ điều khiển nhân vật có thể tùy chỉnh hoàn toàn

Trong bộ điều khiển nhân vật tùy chỉnh hoàn toàn, bạn có thể tùy chỉnh hoàn toàn bộ điều khiển nhân vật mà không có bất kỳ hạn chế nào, nhưng bộ điều khiển này không có bất kỳ chức năng mặc định nào.

Để sử dụng bộ điều khiển nhân vật hoàn toàn tùy chỉnh, bạn cần sử dụng thành phần bộ điều khiển nhân vật và đối tượng được sử dụng làm nhân vật được điều khiển không thể có va chạm, hình dạng va chạm, vật thể cứng và các thành phần khác.

image-20240924120030311

Vui lòng tham khảo ví dụ bên dưới để biết cách sử dụng cụ thể.

Ví dụ

Chúng tôi sẽ giải thích cách sử dụng bộ điều khiển ký tự tùy chỉnh bằng cách tạo một bộ điều khiển ký tự chế độ ngang đơn giản.

Thiết lập bối cảnh

Chỉ cần xây dựng một bối cảnh.

image-20240926150721110

Tạo nhân vật người chơi

Ở đây chúng ta chỉ tạo một nhân vật người chơi đơn giản.

Tạo một đối tượng rỗng:

image-20240926150911348

Thêm thành phần Bộ điều khiển ký tự vào đối tượng này.

image-20240926151012964

Thêm thuộc tính tùy chỉnh vào bộ điều khiển nhân vật: trạng thái. Chúng ta sẽ sử dụng trạng thái để điều khiển chuyển động trái và phải của nhân vật người chơi sau.

image-20240926151107697

Hiện tại nhân vật chưa có giao diện, vì vậy hãy thêm một nút con trống vào nút trống này để hiển thị giao diện.

image-20240926151307907

Thêm thành phần kết xuất tùy chỉnh cho các nút con trống.

image-20240926151344936

Chọn Mesh làm Cylinder.

image-20240926151443376

Lúc này, hãy chọn nút cha và quan sát nhân vật của chúng ta trong trình chỉnh sửa cảnh.

image-20240926151546844

Lưới capsule là thành phần điều khiển nhân vật của đối tượng cha, và hình trụ là thành phần kết xuất tùy chỉnh của đối tượng con. Chúng tôi thấy rằng bộ điều khiển nhân vật có vẻ cao hơn một chút so với vẻ ngoài của nó, và có phạm vi nhỏ hơn so với mô hình.

Điều chỉnh chiều cao tương đối của các đối tượng con và giao diện bộ điều khiển nhân vật sao cho chúng gần giống nhau.

image-20240926151803081

image-20240926151903119

Vui lòng đặc biệt lưu ý rằng đối với bộ điều khiển nhân vật, chiều cao của nó phải lớn hơn gấp đôi bán kính.

Đặt nhân vật đã tạo thành prefab và đổi tên thành New_player (hoặc bất kỳ tên nào bạn thích). Xóa đối tượng trống được sử dụng trong cảnh.

image-20240926152126406

Khởi tạo

Tạo một tập lệnh toàn cục để chặn trình phát mặc định, tạo trình phát mới và thiết lập phương pháp di chuyển.

image-20240926153801533

1. Xóa giao diện người dùng mặc định

Để sử dụng bộ điều khiển nhân vật tùy chỉnh, trước tiên bạn phải giải quyết bộ điều khiển người chơi tích hợp. Nhân vật người chơi không thể bị xóa khỏi trò chơi, nhưng chúng ta có thể sử dụng một số phương pháp để khiến nhân vật người chơi không thể bị điều khiển hoặc nhìn thấy.

Bằng cách đóng giao diện UI mặc định, chúng ta có thể chặn tất cả các UI có thể trực tiếp thao tác với trình phát mặc định.

image-20240926152534232

2. Sử dụng camera tùy chỉnh

Camera mặc định sẽ theo dõi nhân vật người chơi mặc định, vì vậy chúng ta cần sử dụng camera tùy chỉnh mới để chỉ quan sát nhân vật người chơi mới mà chúng ta tạo.

image-20240926152824590

3. Lưu trữ dữ liệu người chơi

Tạo một biến toàn cục để lưu trữ bộ điều khiển nhân vật tùy chỉnh của mỗi người chơi.

image-20240926153846600

image-20240926153853898

image-20240926153934182

4. Thiết lập phương pháp di chuyển

Chúng tôi điều khiển chuyển động bằng cách đánh giá trạng thái của bộ điều khiển nhân vật, đặt 0 nếu không chuyển động, 1 nếu chuyển động sang trái và 2 nếu chuyển động sang phải.

Mỗi lần cập nhật được thực hiện, tất cả các bộ điều khiển tùy chỉnh đều thực hiện một phương thức di chuyển. Phương thức di chuyển sẽ kiểm tra trạng thái của bộ điều khiển người chơi. Nếu nó ở trạng thái di chuyển, nó sẽ di chuyển một khoảng dịch chuyển nhỏ theo hướng tương ứng.

image-20240926154524350

Khi khung cố định được cập nhật, sự kiện được kích hoạt ở tần suất 30 lần mỗi giây, tương đương với bộ điều khiển nhân vật di chuyển với tốc độ 30*0,1=3m/s.

Tạo giao diện người dùng hành động tùy chỉnh

Tạo giao diện người dùng (UI) để điều khiển chuyển động của bộ điều khiển nhân vật tùy chỉnh.

image-20240926154930426

Ba nút được sử dụng để di chuyển người chơi sang trái, phải và nhảy.

Thêm tập lệnh vào các thực thể UI và sử dụng logic xử lý gọi lại:

  1. Nhảy

Có thể nhảy bằng cách tác dụng lực vào bộ điều khiển nhân vật tùy chỉnh.

image-20240926155224218

Giao diện ứng dụng lực có thể trực tiếp chọn tốc độ ứng dụng, tránh việc tính toán lực và khối lượng.

  1. Di động

Chúng tôi điều khiển chuyển động bằng cách thay đổi trạng thái, xử lý trạng thái của người chơi khi nhấn và nhả nút riêng biệt.

image-20240926155731649

image-20240926155753513

Thêm lệnh gọi lại vào các nút để gọi các phương thức này tương ứng.

  1. Nhảy

image-20240926155857104

  1. Di động

image-20240926155911048

image-20240926155924485

gỡ lỗi

image-20240926160400721

Logic hoạt động bình thường.

Đã thêm: Gỡ lỗi ống kính

Khi sử dụng ống kính tùy chỉnh, đôi khi rất khó để xác định thông số ống kính phù hợp.

Chúng ta có thể điều chỉnh camera trong giai đoạn phát triển bằng cách thêm UI để điều khiển camera. Sử dụng cùng một ý tưởng có thể giúp bạn liên tục tối ưu hóa hiệu suất bộ điều khiển nhân vật của mình trong giai đoạn gỡ lỗi.

Tạo giao diện người dùng

Chúng tôi sử dụng các nút để điều khiển chuyển động của ống kính lên, xuống, trái, phải, tiến và lùi, và in độ lệch ống kính hiện tại thông qua một nút.

image-20240926160759275

Viết kịch bản

Thêm tập lệnh cho các thực thể UI.

Di chuyển ống kính, lấy chuyển động hướng lên làm ví dụ:

image-20240926160942701

Thông số ống kính in:

image-20240926161034212

Thêm lệnh gọi lại

Thêm lệnh gọi lại cho mỗi nút:

Hãy lấy việc di chuyển lên làm ví dụ:

image-20240926161123354

Thông số ống kính in:

image-20240926161149538

Bằng cách này, bạn có thể điều chỉnh camera để đạt được hiệu ứng mong muốn khi gỡ lỗi trò chơi:

image-20240926161255378