logo
Khóa học lập trình game server - smartfox - game đa người chơi Học lập trinh game online 3dvietpro Sửa chữa và thiết kế website .net
Welcome Guest! To enable all features please Đăng nhập or Đăng ký.

Thông báo

Icon
Error

Tùy chọn
Xem
Xem bài viết cuối Go to first unread
JungJinHyuk  
#1 Đã gửi : 20/08/2014 lúc 11:26:22(UTC)
JungJinHyuk

Danh hiệu: Administration

Nhóm:
Gia nhập: 20-08-2014(UTC)
Bài viết: 60

Cảm ơn: 2 lần
Được cảm ơn: 2 lần trong 2 bài viết
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
https://tuananhict.files.wordpress.com/2014/04/snap13.jpg?w=665&h=564
Sau khi tạo xong thì bạn có được hình như dưới
https://tuananhict.files.wordpress.com/2014/04/snap22.jpg?w=665&h=384
-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á :D

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

-Sau khi xong ta có một hình như dưới
https://tuananhict.files.wordpress.com/2014/04/snap32.jpg?w=665&h=488
-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 đã
https://tuananhict.files.wordpress.com/2014/04/snap42.jpg?w=665&h=467
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 đó.
https://i0.wp.com/vietgamedev.net/file/attachment/2012/08/43197d85e7ef81478742f60b6156a709_view.png
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
https://i0.wp.com/vietgamedev.net/file/attachment/2012/08/831eeed9d47bc049d197d91e6c263fff_view.png
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.
https://tuananhict.files.wordpress.com/2014/04/snap5.jpg?w=665&h=560
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é
https://tuananhict.files.wordpress.com/2014/04/snap61.jpg?w=665
Bạn bình luận ngay tại đây
Ai đang xem chủ đề này?
Guest (4)
Di chuyển  
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.

Powered by YAF 2.1.0 | YAF © 2003-2024, Yet Another Forum.NET
Thời gian xử lý trang này hết 0.142 giây.