Bài 3: Khái niệm về Mass / Gravity trong Unity3D

Chào các bạn, hôm nay mình sẽ đi sâu hơn về một số kiến thức cơ bản trong Unity, bài của mình sẽ sử dụng một số nguồn tham khảo từ trang vietgamedev.net hy vọng sẽ giúp các bạn hiểu vấn đề.

Việc đầu tiên là chúng ta cần tạo 1 scene, mặc định sẽ có cho chúng ta rồi

-Tiếp theo ta cần tạo một Plane, làm như hình dưới

Snap1

Sau khi tạo xong thì bạn có được hình như dưới

Snap2

-Tiếp theo là ta tạo một Cube tương tự như bước tạo Plane, sau khi tạo xong cube đồng thời ta thêm một cái đèn vào cho nó sáng, tối quá 😀

-Nhấn Game Object -> Create Other -> Directional Light.

-Sau khi xong ta có một hình như dưới

Snap3

-Vậy là chúng ta đã có một bối cảnh gồm các object như Plane, Cube, Directional light, và Main camera, tiếp theo chúng ta sẽ tìm hiểu khái niệm về Rigidbody và Collider.

-Nhưng trước khi tìm hiều về 2 cài này thì bạn chọn Cube và kéo nó lên cao cái đã

Snap4

Bây giờ hãy chọn Cube, vào menu: Component -> Physics -> Rigidbody. Nhìn qua tab Inspector, chúng ta thấy thành phần Rigidbody đã được thêm vào đối tượng Cube. Khoan hãy nói nhiều về nó, hãy nhấn Play để xem điều gì xảy ra!

Cube rơi, lý do vì sao thì các bạn đã biết, chính là component Rigidbody đã gây ra điều đó.

Bây giờ hãy chọn và quan sát Cube ở của sổ Inspector, chúng ta thấy một Component có tên là Box Collider, hãy thử bỏ check nó và nhấn play, chúng ta sẽ thấy đối tượng Cube rơi xuyên qua Plane và cứ thế rơi mãi! Tương tự vậy ở Plane cũng có một Box Collider, bỏ check nó chúng ta cũng sẽ thấy kết quả tương tự khi test. Lý do là vì Rigidbody quy định khối lượng và áp dụng trọng lực vào Object, nhưng không kiểm soát về sự va chạm của Object với vật khác. Thay đó Box Collider sẽ quyết định việc này.

Trong Unity Collider sẽ được biểu thị bởi những đường kẻ màu xanh bao quanh vật, có rất nhiều loại Collider với những hình dáng khác nhau từ hình hộp (Box Collider), hình viên nang (Capsule Collider), hình tròn (Sphere Collider), theo hình dáng của Mesh (Mesh Collider), … Các thành phần này khi gán vào đối tượng sẽ đảm nhận chức năng phát hiện và xử va chạm cho đối tượng đó. Trong Unity API cũng có đầy đủ các Function và Class giành cho việc xử lý trên các Component dạng này

Ảnh. Một số Collider trong Unity

Collider không tự nhiên có, đối với những đối tượng cơ bản như Cube, Plant, Sphere, Cylinder… là những đối tượng built-in của Unity, khi tạo ra, chúng được Unity gán sẵn các Collider tương ứng, nhưng đối với một mô hình được nhập (Import) từ bên ngoài, chúng ta phải tự gán cho chúng thông qua các lựa chọn ở menu: Component -> Physics. Tùy vào hình dáng, kích thước và vai trò của Object trong game mà chúng ta có những lựa chọn hay kết hợp các lựa chọn sao cho phù hợp. Và không phải đối tượng nào cũng buộc phải có Collider, như đã đề cập thì Colldier liên quan đến va chạm, liên quan đến vật lí, đây là những thành phần sẽ ảnh hương rất nhiều đến FPS của game, cụ thể là càng có nhiều Collider thì game sẽ càng nặng, nên chúng ta phải lưu ý chỉ nên attach Collider vào những đối tượng mà chúng ta muốn chúng có thể tương tác, đồng thời nên hạn chế sử dụng Mesh Collider – loại Collider dễ gây nặng game nhất.

Chúng ta có thể lưu ý những thông số cơ bản sau:

– Mass: Khối lượng

– Drag và Angular Drag: Độ ma sát khi di chuyển và khi xoay

– Use gravity (boolean): Vật có chịu tác động của trọng lực không? Hãy thử bỏ check giá trị này, chúng ta sẽ thấy đối tượng Cube không rơi, cho dù chúng ta có cho khối lượng nó lớn đến mức nào cũng thế.

Rigidbody còn là một Class trong Unity API, Class này sẽ cung cấp cho chúng ta chủ yếu các Function về lực, vận tốc, gia tốc để chúng ta xử lí các vấn đề về vận tốc, va chạm, các vụ nổ, … trong game.

-Tiếp theo chúng ta sẽ tìm hiểu về Physic Meterials

Unity mang đến cho chúng ta một khái niệm là “Physic material – vật liệu vật lý” cho phép chúng ta quy định Object được làm từ chất liệu gì, ví dụ như cao su, gỗ, kim loại, … Physic material gắn liền với Collider hay cụ thể nó là một giá trị của Component Collider. Mặc định Unity cung cấp chúng ta một vài built-in Physic material, tuy nhiên chúng ta hoàn toàn có thể tạo thêm bất kỳ cái nào mà chúng ta muốn thông qua hỗ trợ của Unity. Ở đây tôi sẽ không đề cập làm thế nào để tạo ra Physic material, mà chỉ muốn chúng ta lưu ý đến tác dụng của chúng, khi gán Physic material vào Object, các hiện tượng vật lý diễn ra với đối tượng  sẽ tuân theo vật liệu đó, ví dụ như khi gán Bouncy cho Cube, khi rơi và va chạm với Floor, Cube sẽ tâng lên như một quả bóng.

Lưu ý: Để Import Physic material vào dự án làm như sau: Click phải ở cửa sổ Project -> Import Package -> Physic material hoặc chọn tương tự ở menu Asset.

Snap5

Sau khi import xong thì bạn chọn Cube, bên tab Inspector tại Box Collider->Material bạn chọn Bouncy, sau đó Play xem có kết quả như nào nhé 🙂

Snap6

Nguồn: http://vietgamedev.net/

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s