Bài giảng Thiết kế và phát triển trò chơi máy tính - Bài 3: Làm quen với Unity - Trương Xuân Nam

pdf 49 trang Gia Huy 16/05/2022 2830
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế và phát triển trò chơi máy tính - Bài 3: Làm quen với Unity - Trương Xuân Nam", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_thiet_ke_va_phat_trien_tro_choi_may_tinh_bai_3_lam.pdf

Nội dung text: Bài giảng Thiết kế và phát triển trò chơi máy tính - Bài 3: Làm quen với Unity - Trương Xuân Nam

  1. THIẾT KẾ VÀ PHÁT TRIỂN GAME Bài 3: Làm quen với Unity
  2. Nội dung 1. Giới thiệu về unity 2. Cài đặt unity 3. Bắt đầu một project unity 4. Giao diện của unity 5. Các khái niệm cơ bản của unity 6. Kiến trúc engine unity 7. Thử một project đơn giản TRƯƠNG XUÂN NAM 2
  3. Phần 1 Giới thiệu về unity TRƯƠNG XUÂN NAM 3
  4. Giới thiệu về unity ▪ Unity là một phần mềm làm game đa nền tảng, ra đời năm 2005 trên OS X bởi Unity Technologies ▪ Dự án bắt đầu từ năm 2001 ▪ Unity hỗ trợ viết game trên hầu hết các nền tảng lớn: Windows, Android, iOS, Linux, Mac OS, TRƯƠNG XUÂN NAM 4
  5. Giới thiệu về unity ▪ Unity chỉ xác lập được vị thế của một platform hàng đầu về phát triển game từ bản 4 ▪ Từ bản unity 5, trở thành phần mềm chính cho việc phát triển game đa nền tảng ▪ Chi phí thấp (nếu so với các engine cạnh tranh) ▪ Cộng đồng rất lớn và nhiệt tình ▪ Phù hợp ngay cả với người không chuyên nghiệp ▪ Kết hợp rất tốt với các công cụ làm đồ họa như 3DSmax, Maya, Cinema4D, Blender, Cheetah3D, ▪ Nhưng cũng bị chê trách vì loại bỏ Boo và UnityScript ▪ Và chất lượng phần mềm còn thấp TRƯƠNG XUÂN NAM 5
  6. Giới thiệu về unity ▪ Unity có nhiều loại giấy phép khác nhau, trong đó có bản free cho các nhà phát triển cá nhân ▪ Nếu game của bạn bán được nhiều tiền (trên 100k USD) thì unity bắt đầu thu tiền ▪ Unity cũng xây dựng hệ sinh thái xoay quanh việc phát triển game bao gồm chợ bán các tài nguyên dùng cho việc phát triển game và các dịch vụ kèm theo (analytics, quảng cáo, multiplayer, performance report, ) ▪ Có nhiều tài nguyên dùng cho unity trôi nổi trên mạng, nhưng chỉ nên sử dụng cho mục đích cá nhân hoặc nghiên cứu. Nếu sử dụng cho ứng dụng được public có thể bị kiện (kể cả trường hợp ứng dụng là miễn phí) TRƯƠNG XUÂN NAM 6
  7. Phần 2 Cài đặt unity TRƯƠNG XUÂN NAM 7
  8. Cài đặt unity TRƯƠNG XUÂN NAM 8
  9. Cài đặt unity TRƯƠNG XUÂN NAM 9
  10. Cài đặt unity TRƯƠNG XUÂN NAM 10
  11. Cài đặt unity TRƯƠNG XUÂN NAM 11
  12. Cài đặt unity TRƯƠNG XUÂN NAM 12
  13. Cài đặt unity TRƯƠNG XUÂN NAM 13
  14. Cài đặt unity TRƯƠNG XUÂN NAM 14
  15. Cài đặt unity TRƯƠNG XUÂN NAM 15
  16. Cài đặt unity TRƯƠNG XUÂN NAM 16
  17. Phần 3 Bắt đầu một project unity TRƯƠNG XUÂN NAM 17
  18. Bắt đầu một project unity TRƯƠNG XUÂN NAM 18
  19. Bắt đầu một project unity TRƯƠNG XUÂN NAM 19
  20. Bắt đầu một project unity TRƯƠNG XUÂN NAM 20
  21. Bắt đầu một project unity TRƯƠNG XUÂN NAM 21
  22. Phần 4 Giao diện của unity TRƯƠNG XUÂN NAM 22
  23. Giao diện của unity TRƯƠNG XUÂN NAM 23
  24. Giao diện của MonoDevelop TRƯƠNG XUÂN NAM 24
  25. Giao diện của unity TRƯƠNG XUÂN NAM 25
  26. Giao diện: Scene ▪ Tab Scene: nơi xây dựng các màn trong game ▪ Cung cấp nhiều góc nhìn khác nhau, giúp người thiết kế có cái nhìn tổng thể về cả màn chơi ▪ Hệ thống các nút tương tác và hiệu chỉnh trực quan tới từng đối tượng TRƯƠNG XUÂN NAM 26
  27. Giao diện: Project & Hierarchy ▪ Tab Project: mọi thành phần vật lý của game ▪ Cấu trúc của project cũng tương đương với lưu trữ vật lý của game trên máy tính hoặc bản deploy ▪ Tab Hierarchy: các GameObject trong scene hiện tại ▪ Có thể nhóm một số lại với nhau (parenting) TRƯƠNG XUÂN NAM 27
  28. Giao diện: Inspector ▪ Tab Inspector: ▪ Thông tin chi tiết về GameObject hiện tại, bao gồm các giá trị thuộc tính và các thành phần con (component) ▪ Việc thay đổi thuộc tính sẽ tác động tức thời tới đối tượng trên tab Scene ▪ Đây là cửa sổ rất quan trọng cho phép ta thực hiện các thao tác thiết lập ban đầu tới các đối tượng của trò chơi và sự liên quan giữa chúng (sau đó mới code) TRƯƠNG XUÂN NAM 28
  29. Giao diện: một số tab khác ▪ Tab Animation ▪ Tab Audio Mixer ▪ Tab Asset Store ▪ Tab Console: hiện thị các thông báo logs ▪ Dùng khi gỡ lỗi hoặc tìm hiểu hoạt động của game ▪ Tab Lighting ▪ Tab Occlusion Culling ▪ Tab Profiler ▪ Tab Services TRƯƠNG XUÂN NAM 29
  30. Phần 5 Các khái niệm cơ bản của unity TRƯƠNG XUÂN NAM 30
  31. Các khái niệm cơ bản của unity ▪ Scene: màn chơi, cấp độ riêng lẻ hoặc một vùng nội dung của trò chơi (main menu, options, about, ) TRƯƠNG XUÂN NAM 31
  32. Các khái niệm cơ bản của unity ▪ Game object: bất kỳ đối tượng nào trong scene đều là game object ▪ Kể cả các đối tượng vô hình (không được vẽ lên hoặc trong suốt) trong scene cũng là các game object ▪ Game object luôn chứa thành phần Transform là thông số về vị trí, góc quay và tỉ lệ co dãn của đối tượng trong không gian của scene • Unity dựa vào thông số này và vị trí camera để tính toán xem vẽ game object trên scene như thế nào ▪ Game object không nhất thiết phải được đặt sẵn trên scene mà có thể được tạo ra và thêm vào scene trong quá trình thực thi game TRƯƠNG XUÂN NAM 32
  33. Các khái niệm cơ bản của unity ▪ Component: các thành phần của một game object ▪ Ví dụ: một nhân vật trong game có các component chứa thông tin hoặc các phản ứng của nhân vật đó: • Hình ảnh (sprite render) • Tập hợp các hành động (animator) • Thành phần xử lý va chạm (collision) • Tính toán vật lý (physical) • Mã điều khiển (script) ▪ Bằng cách gắn thêm các component vào game object, lập trình viên có thể làm phong phú thêm các tính chất của game object nhằm đáp ứng yêu cầu của gameplay ▪ Tags: các từ (word) mô tả một game object TRƯƠNG XUÂN NAM 33
  34. Các khái niệm cơ bản của unity ▪ Script: các file kịch bản, viết bằng C# hoặc javascript ▪ Các script cũng là component ▪ Một class C# bao giờ cũng kế thừa từ MonoBehaviour ▪ Tên class phải trùng với tên file script ▪ Có thể soạn thảo bằng MonoDevelop hoặc Visual Studio ▪ Prefab: các khuôn mẫu (preconfigured) của game object, có thể lưu lại và tái sử dụng ▪ Layer: một scene có thể được cắt thành nhiều layer, mỗi layer chứa một số game object ▪ Việc này giúp dễ dàng xử lý các game object theo loạt TRƯƠNG XUÂN NAM 34
  35. Các khái niệm cơ bản của unity ▪ Sprite: một hình ảnh 2D của một game object ▪ Có thể là hình ảnh đầy đủ, hoặc chỉ một bộ phận của nhân vật ▪ Animation: hình ảnh động dựa trên sự thay đổi liên tục của nhiều sprite khác nhau ▪ Frame: một trạng thái của một animation, có thể được tạo nên từ một hay nhiều sprite ▪ Asset: kho chứa tất cả các loại tài nguyên làm nên game; các tài nguyên này có thể là hình ảnh, âm thanh, mô hình 3D, TRƯƠNG XUÂN NAM 35
  36. Các khái niệm cơ bản của unity ▪ Camera: là game object trong scene, dùng để xác định tầm nhìn, góc quan sát các game object khác ▪ Transform: là phép biến đổi hình ảnh trong không gian 3 chiều, là tổ hợp của các phép tịnh tiến, quay theo các trục và thu/phóng đối tượng ▪ Shader: quy cách render vật liệu lên bề mặt vật thể ▪ Material: sử dụng các shader để làm chất liệu cho mô hình TRƯƠNG XUÂN NAM 36
  37. Phần 6 Kiến trúc engine unity TRƯƠNG XUÂN NAM 37
  38. Unity API Animation Audio Camera CharacterController Collider Component GameObject GUI Input Light MonoBehaviour ParticeEmitter Rigidbody Projector Transform TRƯƠNG XUÂN NAM 38
  39. Unity API ▪ Animation: thực hiện chạy chuyển động của mô hình nhân vật ▪ Audio: hỗ trợ lập trình với âm thanh ▪ Camera: giúp lập trình camera ▪ CharacterController: giúp điều khiển nhân vật di chuyển (địa hình) ▪ Collider: hỗ trợ lập trình va chạm giữa các vật thể ▪ Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng TRƯƠNG XUÂN NAM 39
  40. Unity API ▪ GameObject: lớp cha của tất cả các thực thể trong scene ▪ GUI: giúp lập trình giao diện người dùng trên unity ▪ Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc ▪ Light: giúp tạo ánh sáng trong game ▪ MonoBehaviour: lớp cha của tất cả các script muốn gắn vào một đối tượng game TRƯƠNG XUÂN NAM 40
  41. Unity API ▪ ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt ▪ Rigidbody: giúp tạo hiệu ứng vật lý liên quan đến trọng lực như bóng nẩy, lăn, ▪ Projector: giúp chiếu texture lên bề mặt vật thể ▪ Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình TRƯƠNG XUÂN NAM 41
  42. Game loop ▪ Kiến trúc chung cho mọi loại Start Game game, không chỉ unity Awake() ▪ Gồm các bước chính sau: 1. Khởi tạo game global statements 2. Nạp các biến toàn cục 3. Bắt đầu chạy game Start() 4. Một vòng lặp vô tận: • (hoặc) Update FixedUpdate() Update() loop • (hoặc) FixedUpdate loop 5. Kết thúc game Exit Game TRƯƠNG XUÂN NAM 42
  43. Vòng đời của GameObject ▪ Awake: chạy khi mọi thứ đã được load xong ▪ Start: chạy nếu game object không bị disable ▪ Update/FixedUpdate: chạy liên tục từng theo frame ▪ OnGUI: tạo / cập nhật giao diện người dùng (của UnityAPI) nếu thấy cần thiết ▪ OnDestroy: hủy game object TRƯƠNG XUÂN NAM 43
  44. Vòng đời của GameObject TRƯƠNG XUÂN NAM 44
  45. Phần 7 Thử một project đơn giản TRƯƠNG XUÂN NAM 45
  46. Tạo project TRƯƠNG XUÂN NAM 46
  47. Thêm một đối tượng Sprite TRƯƠNG XUÂN NAM 47
  48. Thiết lập thuộc tính và thêm code ▪ Tìm kiếm ảnh trên google (chẳng hạn search hình ảnh: sprite 2d air force), lấy về dạng png TRƯƠNG XUÂN NAM 48
  49. Viết code xử lý TRƯƠNG XUÂN NAM 49