1. Trang chủ
  2. » Luận Văn - Báo Cáo

Sử dụng thuật toán a để xây dựng trò chơi tower defense bằng unity

52 27 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Sử dụng thuật toán a* để xây dựng trò chơi tower defense bằng unity
Tác giả Nguyễn Văn Huấn
Người hướng dẫn TS. Nguyễn Đình Lầu
Trường học Trường Đại Học Sư Phạm - Đại Học Đà Nẵng
Chuyên ngành Cử nhân công nghệ thông tin
Thể loại Báo cáo đồ án tốt nghiệp
Năm xuất bản 2017
Thành phố Đà Nẵng
Định dạng
Số trang 52
Dung lượng 11,28 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khách thể và đối tượng nghiên cứu  Người dùng sử dụng các thiết bị điện thoại thông minh  Phần mềm Unity3D  Quy trình phát triển trò chơi di động 3.. Mục đích nghiên cứu Mục đích của

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM – ĐẠI HỌC ĐÀ NẴNG

KHOA TIN HỌC

BÁO CÁO

ĐỒ ÁN TỐT NGHIỆP

TÊN ĐỀ TÀI

SỬ DỤNG THUẬT TOÁN A* ĐỂ XÂY DỰNG TRÒ CHƠI

TOWER DEFENSE BẰNG UNITY

Giảng viên hướng dẫn: TS Nguyễn Đình Lầu

MSSV: 312022131130 Lớp sinh hoạt: 13CNTT

ĐÀ NẴNG, 04/2017

Trang 2

LỜI CẢM ƠN Lời đầu tiên, em xin chân thành cảm ơn quý thầy cô trong khoa Tin học cũng như các quý thầy cô đang giảng dạy và công tác tại trường Đại học Sư Phạm - Đại học Đà Nẵng đã truyền đạt những kiến thức quý báu cho chúng

em trong những năm học vừa qua

Đặt biệt, em xin chân thành cảm ơn thầy TS Nguyễn Đình Lầu và các thầy cô giáo của Khoa Tin học, Trường Đại học Sư Phạm Đà Nẵng xin cảm

ơn quý thầy cô đã tận tình dạy bảo, giúp đỡ em trong suốt thời gian em thực hiện đề tài

Và cho em được gửi lời cảm ơn đến Công Ty Gameloft chi nhánh Đà Nẵng,Công Ty Asian Tech đã tạo điều kiện cho em được tham gia thực tập tại đơn vị cũng như cung cấp tất cả các cơ sở vật chất và trang thiết bị có thể cho em trong thời gian vừa qua Xin cảm ơn các anh chị trong công ty, đặc biệt là anh Đinh Bá Trí (Công ty GameLoft), anh Trương Văn Hoàn và anh Giang Hải Anh (Công ty Asian Tech) đã tận tình hướng dẫn giúp đỡ em trong suốt thời gian chúng em tham gia thực tập

Xin trân trọng cảm ơn!

Đà Nẵng, ngày 20 tháng 04 năm 2017

Sinh viên thực hiện

Nguyễn Văn Huấn

Trang 3

LỜI CAM ĐOAN

Em xin cam đoan:

1 Những nội dung trong báo cáo này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của TS Nguyễn Đình Lầu và các anh chị trong Công ty Asian Tech

2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn toàn trách nhiệm

Sinh viên thực hiện

Nguyễn Văn Huấn

Trang 4

NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN

Đà Nẵng, ngày tháng năm 2017

Cán bộ hướng dẫn

Trang 5

NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN

Đà Nẵng, ngày tháng năm 2017

Hội đồng phản biện

Trang 6

MỤC LỤC

LỜI CẢM ƠN 2

LỜI CAM ĐOAN 3

DANH MỤC HÌNH ẢNH 8

DANH MỤC BẢNG 9

MỞ ĐẦU 10

1 Lý do chọn đề tài 10

2 Khách thể và đối tượng nghiên cứu 10

3 Giới hạn và phạm vi nghiên cứu 10

4 Mục đích nghiên cứu 11

5 Nhiệm vụ nghiên cứu 11

6 Phương pháp nghiên cứu 11

7 Bố cục đề tài 11

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 12

1.1 Game và các thành phần cơ bản 12

1.2 Sử dụng cơ bản cho Unity 14

1.2.1 Giao diện cơ bản của Unity 14

1.2.2 Các đối tượng cơ bản 16

1.3 Hệ thống đồ họa 17

1.4 Hệ thống vật lý 18

1.4.1 Rigidbody2D 18

1.4.2 Collider2D 20

1.4.3 Joint2D 20

1.4.4 Constant Force 2D 20

1.4.5 Effectors 2D 20

1.4.6 2D Raycaster 21

1.4.7 Physic Material 2D 21

1.5 Lập trình 22

1.6 Giao diện người dùng 23

1.6.1 Canvas 23

1.6.2 Layout 24

1.6.3 Các đối tượng UI cơ bản Unity cung cấp 25

1.7 Thủ thuật tối ưu và xuất bản trò chơi lên Android 26

1.7.1 Hình ảnh 26

1.7.2 Âm thanh 26

1.7.3 Mã 27

Trang 7

1.7.4 Xuất bản trên nền tảng Android 27

1.8 Thuật toán tìm đường A* 28

1.8.1 Giới thiệu về thuật toán: 28

1.8.2 Ý tưởng trực quan : 28

1.8.3 Các thành phần của thuật toán : 28

1.8.4 Mô tả thuật toán : 29

CHƯƠNG 2 : PHÂN TÍCH THIẾT KẾ 38

2.1 Mục tiêu đề tài : 38

2.2 Yêu cầu chức năng : 38

2.3 Yêu cầu phi chức năng : 38

2.4 Phân tích thiết kế hệ thống : 38

2.4.1 Ý tưởng của trò chơi : 38

2.4.2 Thể loại trò chơi : 38

2.4.3 Đối tượng người chơi : 38

2.4.4 Lối chơi cơ bản : 38

2.4.5 Phong cách đồ họa và âm thanh : 39

2.4.6 Gameplay 39

2.4.7 Cơ chế của trò chơi : 39

2.5 Sơ đồ ca sử dụng của trò chơi (Usecase diagram) : 45

2.6 Sơ đồ lớp : 46

2.7 Sơ đồ tuần tự 48

CHƯƠNG 3 : TRIỂN KHAI VÀ KẾT QUẢ ĐẠT ĐƯỢC 48

3.1 Môi trường triển khai : 48

3.2 Sản phẩm đạt được : 49

3.2.1 Màn hình trò chơi : 49

3.2.2 Màn hình trò chơi khi quái vật xuất hiện : 49

3.2.3 Màn hình thua cuộc : 50

KẾT LUẬN VÀ KIẾN NGHỊ 50

1 Ưu điểm : 50

2 Hạn chế : 51

3 Hướng phát triển : 51

TÀI LIỆU THAM KHẢO 52

Trang 8

DANH MỤC HÌNH ẢNH

Hình 1 Logo của Unity 14

Hình 2 Giao diện chính của Unity 15

Hình 3 Giao diện của một Scene 16

Hình 4 Một số GameObject 16

Hình 5 Các component của Camera 17

Hình 6 Component Rigidbody2D 18

Hình 7 Một Capsule Collider 2D 20

Hình 8 Minh họa sử dụng Joint2D 20

Hình 9 Component Constant Force 2D 20

Hình 10 Angry Birds - một tựa game sử dụng mô phỏng vật lý 2D 21

Hình 11 Vòng đời cơ bản của một GameObject 22

Hình 12 Một UI đơn giản trong Unity 23

Hình 13 Các thông số của một Layout 24

Hình 14 Component Text 25

Hình 15 Component Image 25

Hình 16 Theo thứ tự: Button, Toggle, Slider, ScrollBar, Dropdown và InputField 25

Hình 17 Một spritesheet chưa hình động một nhân vật 26

Hình 18 Giao diệp export ra Android 27

Hình 19 Thuật toán A* (H1) 29

Hình 20 Thuật toán A* (H2) 30

Hình 21 Thuật toán A* (H3) 31

Hình 22 Thuật toán A* (H4) 33

Hình 23 Thuật toán A* (H5) 34

Hình 24 Thuật toán A* (H6) 35

Hình 25 Thuật toán A* (H7) 36

Hình 26 Vòng đời một màn chơi 39

Hình 27 Vị trí biểu tượng xây tháp pháo 40

Hình 28 Chuẩn bị xây dựng tháp pháo 41

Hình 29 Hệ thống tiền tệ của trò chơi 41

Hình 30 Hệ thống lượt quái vật của trò chơi 42

Hình 31 Sơ đồ ca sử dụng của trò chơi 45

Hình 32 Sơ đồ lớp Tower, Monster và các lớp thừa kế 46

Hình 33 Sơ đồ lớp Debuff và các lớp thừa kế 47

Hình 34 Sơ đồ tuần tự 48

Hình 35 Màn hình trò chơi 49

Hình 36 Màn hình trò chơi khi quái vật xuất hiện 49

Hình 37 Màn hình thua trò chơi 50

Trang 9

DANH MỤC BẢNG

Bảng 1 Danh sách quái vật 43 Bảng 2 Danh sách tháp pháo 44

Trang 10

MỞ ĐẦU

1 Lý do chọn đề tài

Ngày nay, các thiết bị di động thông minh ngày càng phổ biến, ai ai cũng có cho riêng mình một điện thoại thông minh bên cạnh Hàng ngày mọi người sử dụng điện thoại thông minh để liên lạc, làm việc và đặc biệt là giải trí Theo thống kê của thì hàng ngày cửa hàng Play Store của Google có hơn 1300 lượt tải ứng dụng, thống kê trong năm 2015 thì loại hình ứng dụng được tải nhiều nhất trên trên các cửa hàng trực tuyến là game với các số liệu là 22% ở Appstore, 21% ở CHPlay và 60% ở AmazonStore Điều đó cho thấy ngành công nghiệp game trên thiết bị di động đang ngày càng phát triển và trong tương lại sẽ là một ngành công nghiệp đi đầu

Trước đây, việc phát triển trò chơi điện tử đòi hỏi nhiều công sức và qua rất nhiều giai đoạn phức tạp cũng như vốn đầu tư lớn Nhưng các chi phí đó đang ngày càng nhỏ lại, hoàng loạt các công cụ làm game được miễn phí trên thị trường, giúp bất cứ ai có niềm đam mê làm game có thể bắt đầu thực hiện dễ dàng

2 Khách thể và đối tượng nghiên cứu

 Người dùng sử dụng các thiết bị điện thoại thông minh

 Phần mềm Unity3D

 Quy trình phát triển trò chơi di động

3 Giới hạn và phạm vi nghiên cứu

 Tất cả người dùng sử dụng điện thoại thông minh, máy tính bảng

 Các trò chơi di động tương đương

 Các tài liệu về phát triển trò chơi trên di động

 Các tài liệu về Unity

Trang 11

4 Mục đích nghiên cứu

Mục đích của đề tài nhằm nghiên cứu quy trình phát triển một trò chơi trên di động bằng công nghệ Unity3D, nắm được một game trên di động bao gồm những thành phần nào và quy trình hoạt động của một game trên di động là như thế nào và đồng thời mục tiêu lớn nhất là làm được một game với phong cách

“phòng thủ công trình” chạy trên hệ điều hành Android

5 Nhiệm vụ nghiên cứu

 Nắm được quy trình phát triển một trò chơi trên di động bằng Unity

 Nắm được cách hoạt động và các thành phần cùa một trò chơi trên di động

 Hoàn thiện được một trò chơi hoàn chỉnh chạy trên hệ điều hành Android

6 Phương pháp nghiên cứu

 Phương pháp nghiên cứu tài liệu

 Phương pháp khảo sát

 Phương pháp phân tích số liệu

7 Bố cục đề tài

 MỞ ĐẦU

 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

 CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ

 CHƯƠNG 3: GIỚI THIỆU TRÒ CHƠI, PHÂN TÍCH CÁC THÀNH PHẦN CỦA TRÒ CHƠI

 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Trang 12

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1 Game và các thành phần cơ bản

Game là một dạng trò chơi điện tử liên quan đến tính tương tác với một giao diện người sử dụng để tạo ra một phản hồi hình ảnh trên một thiết bị hiển thị

Game engine là một thành phần cơ bản không thể thiếu trong quá trình hoàn thành một tựa game Game engine là một khung phần mềm (software framework) chuyên dụng để phát triển game trên các nền tảng khác nhau Đứng vai trò giữa nền tảng ứng dụng và các mã logic và tài nguyên để xây dựng nên thế giới game phức tạp Thông thường, một game engine hoàn chỉnh phải đảm bảo các phương thức, tác vụ để xây dựng nên một môi trường đồ họa 2D hoặc 3D Ngày nay, các game engine nổi tiếng đều có thể tích hợp cả 2 môi trường này vào một engine

Bằng việc sử dụng đặc dụng cho lập trình game, các game engine sẽ mang nhiều thành phần hữu dụng khi làm game mà các framework ứng dụng khác thường không chú trọng tới Như thay vì có các đối tượng xây dựng nên các cửa sổ, thanh sổ, menu, game engine được tối ưu hóa để hiển thị các giao diện pop-up trên môi trường đồ họa cập nhật liên tục hay xử lý âm thanh sao cho giống thật nhất trong không gian 3D Sau đây là danh sách các thành phần

cơ bản thường gặp ở các phần mềm game:

 Bộ xử lý đầu vào: phần mềm game đặc thú khác biệt so với các phần mềm máy tính khác ở tính yêu cầu người chơi tương tác cao, liên tục với trò chơi Và trong nhiều trò chơi, khả năng xử lý tình huống nhanh nhạy của người chơi chính là chìa khóa để đạt được mục tiêu của trò chơi đó

Vì vậy việc đảm bảo các thao tác của người chơi được nhận chính xác và

xử lý nhanh nhất luôn là một yếu tố cơ bản bắt buộc đối với game engine Các xử lý đầu vào này có thể là từ nhiều thiết bị khác nhau như phím, chuột, bàn điều khiển game, tay cầm điều khiển,v.v nhưng mô hình

Trang 13

chung đều được mapping với các chức năng trong game sao cho hợp lý

và đồng bộ giữa các nền tảng

 Đồ họa: đồ họa chính là điểm hấp dẫn người chơi ngay khi nhìn vào một tựa game Dù trò chơi được định hình phong cách đồ họa 2D hay 3D phức tạp thì việc xử lý đồ họa là cuộc việc đòi hỏi xảy ra thường xuyên

và cập nhật liên tục từng mili giây trong quá trình ứng dụng game khởi chạy Bộ xử lý đồ họa chịu trách nhiệm render các thành phần đồ họa đồng thời tiết kiệm tài nguyên máy tính nhất có thể để đảm bảo một trải nghiệm tốt nhất cho người chơi

 Âm thanh: bên cạnh đồ họa đẹp thì âm thanh hấp dẫn chính là điều tạo nên cảm xúc cho người chơi Bộ xử lý âm thanh đảm nhận tái tạo những

âm thanh chính xác, đặc biệt là ở môi trường 3D Bằng các kỹ thuật xử lý

âm thanh, như tăng giảm âm lượng xa gần, hòa âm, nhiễu âm… và chất lượng các bài nhạc nền, hiệu ứng tốt có thể làm cho người chơi như đang hòa vào thế giới thật

 Bộ xử lý mạng: rất nhiều trò chơi ngày nay có tính năng đa người chơi, tức là nhiều người chơi có thể kết nối với nhau và tận hưởng trò chơi cùng lúc Bộ xử mạng đóng vai trò quan trọng kết nối người chơi với server và đảm bảo trải nghiệm cho mọi người chơi trên hệ thống là như nhau Giảm thiểu độ trễ, tiết kiệm dữ liệu, đồng bộ hóa dữ liệu giữa các client là những công việc chính mà bộ xử lý mạng đảm nhận trong một game engine

 Mô phỏng vật lý: vật lý luôn là yếu tốt rút ngắn khoảng cách giữa đời thực và trò chơi Mô phỏng các thông số môi trường vật lý như trọng lực, lực ma sát, phản lực, va chạm, cân nặng, v.v là tính năng chính của bộ

mô phỏng vật lý Hiện có 3 bộ mô phỏng vật lý phổ biến là Hovak (3D), PhysX(3D) và Box2D (2D), ngoài ra có hàng trăm, hàng nghìn các bộ mô phỏng khác được xây dựng tùy chỉnh tùy theo yêu cầu của tựa game

Trang 14

 Giao diện người dùng: giao diện người dùng là thành phần không thể thiếu trong các trò chơi, dù từ đơn giản đến phức tạp, 2D hay 3D Được

sử dụng để xây dựng các thành phần bổ trợ tương tác cung như cung cấp thông tin cho người chơi Và tương tự như bộ xử lý đồ họa, giao diện người dùng được cập nhật mỗi khung hình và việc một game engine có

bộ xử lý tối ưu đem lại lợi ích lớn về hiệu suất cho trò chơi

 Mã: ngoài các thành phần trên cấu tạo nên một thế giới ảo hoàn hảo nhưng để phối hợp chúng hoạt động cùng với các tài nguyên tạo nên một trò chơi sinh động thì phải có các đoạn mã logic xây dựng nên gameplay cho trò chơi Đây là thành phần cơ bản của một game engine mà lập trình viên thường hay tiếp xúc nhất để xây dựng nên một trò chơi đúng theo thiết kế và tối ưu hiệu năng cho trò chơi

Phần lớn các nhà sản xuất lớn để sở hữu các game engine tự xây dựng mạnh

mẽ Bên cạnh đó, còn có rất nhiều game engine miễn được các nhà làm game ưa chuộng để đưa những ý tưởng trở thành sự thật mà Unity là một trong số đó

1.2 Sử dụng cơ bản cho Unity

1.2.1 Giao diện cơ bản của Unity

Unity cung cấp một giao diện trực quan, dễ tiếp cận cho nhà phát triển game Các thành phần giao diện được chia thành các thẻ cho các mục đích sử dụng chuyên biệt

 Cửa sổ dự án (Project Window): Hiển thị thư mục chứa các tài nguyên cho dự án Người dùng có thể tạo mới thư mục và tài nguyên tại đây

Hình 1 Logo của Unity

Trang 15

 Khung xem cảnh: là khu vực mô phỏng đồ họa trong trò chơi Người dùng có thể quan sát các thay đổi của các đối tượng trong game Có thể thao tác di chuyển, phóng to, thu nhỏ, xoay các đối tượng, v.v

 Thanh đối tượng: chưa danh sách các đối tượng có trong scene theo dạng cây Khi click vào một đối tượng, đối tượng sẽ được bôi sáng trong Khung xem cảnh và hiển thị chi tiết thuộc tính ở Thanh thuộc tính

 Thanh thuộc tính: liệt kê thành phần (component) của đối tượng được chọn Bên trong mỗi component liệt kê chi tiết các thuộc tính của component đó Người dung có thể dung Unity Editor API để tạo nên cao giao diện trực quan cho các Component tự thực hiện

 Thanh công cụ: chứa các phím công cụ hữu ích để người dùng lựa chọn cũng như nhận biết nhanh các thiết lập hiện tại của Editor

Hình 2 Giao diện chính của Unity

Trang 16

1.2.2 Các đối tượng cơ bản

1.2.2.1 Scene

Scene chứa tất cả đối tượng của trò chơi Được sử dụng để tạo menu, các level trong trò chơi Với mỗi scene, người dung sẽ thêm thắt đối tượng, xây dựng môi trường, trang trí, thiết kế trò chơi từ các thành phần nhỏ

Hình 3 Giao diện của một Scene

Hình 4 Một số GameObject

Trang 17

1.2.2.3 Component

Một GameObject sẽ chứa nhiều

thành phần (Component) Component là

một khái niệm trong Unity Nó là một đối

tượng đặc tả mang các thuộc tính và

phương thức để miêu tả một logic cho

GameObject Các đoạn mã (code) khi kế

thừa từ lớp MonoBehaviour sẽ được xem

như một Component và có thể gán vào các

GameObject để xây dựng gameplay cho

GameObject đó

1.2.2.4 Prefab

Một GameObject sau khi được tạo nên, đưa vào Scene, thêm các Component đầy đủ để tạo nên một đối tượng trong game đầy đủ Đôi khi, một GameObject sẽ có rất nhiều thể hiện (Instance) trong một scene hoặc nhiều scene Việc tạo ra nhiều GameObject tương tự nhau sẽ gây bất cập khi cần chỉnh sửa toàn bộ chúng cùng lúc

Unity Prefab sinh ra để giải quyết vấn đề này Prefab được xem như là một mẫu GameObject mà việc chỉnh sửa nó sẽ gây ảnh hưởng toàn bộ đến các thể hiện mà từ nó tạo thành Việc thay đổi Prefab sẽ gây thay đổi ngay lập tức

và ghi đè lên mọi chỉnh sửa của cá thể hiện vì thế trong lúc sử dụng phải cẩn thận lưu đè chéo nhau giữa một thể hiện và prefab của nó

1.3 Hệ thống đồ họa

Sprite là đối tượng đồ họa 2D trong Unity được sử dụng để tạo hình ảnh cho các GameObject Unity hỗ trợ rất nhiều các công cụ đi kèm để tinh chỉnh Sprite:

- Sprite Creator: Tạo một số hình dạng cơ bản kích thước 4x4 pixel

Hình 5 Các component của Camera

Trang 18

Hình 6 Component Rigidbody2D

- Sprite Renderer: Là một component để render Sprite lên các đối tượng

- Sprite Packer: Tối ưu hóa sử dụng và bộ nhớ khi dùng nhiều sprite

1.4 Hệ thống vật lý

Hệ thống vật lý trong Unity là PhysX Là một hệ thống mô phỏng vật lý

ưu việt nhất hiện nay Bên cạnh xử lý mô phỏng không gian 3D, hệ thống này cũng giúp Unity hoàn thành tốt vai trò tạo nên môi trường giả lập vật lý tuyệt hảo trên chế độ đồ họa 2D

1.4.1 Rigidbody2D

Thành phần Rigidbody2D

đặt đối tượng trở thành một đối

tượng chịu ảnh hưởng vật lý bởi

bộ mô phỏng vật lý Khi so sánh

sự khác biệt với Rigidbody

(được dùng trong 3D) thì

Rigidbody2D chỉ giúp đối tượng

di chuyển trong hệ trục tọa độ 2

chiều Oxy và chỉ xoay được 1

góc cố định

Rigidbody2D hoạt động theo nguyên lý override lên thành phần Transform của một đối tượng và cập nhật các thông số như tọa độ, góc xoay được định nghĩa bởi Rigidbody2D Tuy nhiên, việc tác động thay đổi lên thông số của thành phần Transform vẫn được chấp nhận Về thế, khi sử dụng Rigidbody2D phải lưu ý về việc tác động lên Transform để tránh các lỗi về việc đối tượng di chuyển bất thường

Khi một thành phần Collider2D được gán lên một đối tượng đã được gán Rigidbody2D thì Rigidbody2D sẽ đảm nhận luôn vai trò điều chỉnh Collider2D sao phù hợp Vì vậy, tránh tác động trực tiếp lên các thông số của Collider2D để tránh các lỗi tính toán va chạm

Kiểu thân thể (body type):

Trang 19

Kiểu thân thể là một thuộc tính quan trọng và gây ảnh hưởng đến toàn bộ các thuộc tính còn lại của Rigidbody2D Và nó được chia làm 3 loại chính để người

sử dụng lựa chọn: Động (Dynamic), Kinematic, Tĩnh (Static)

 Kiểu Động (Dynamic): Ở chế độ này, đối tượng chịu ảnh hưởng toàn bộ của các biến vật lý trong môi trường cũng như các hàm tác động vật lý

 Kiểu Kinematic: Về cơ bản, Kinematic cũng như Dynamic ngoài việc loại bỏ ảnh hưởng của trọng lực và ngoại lực lên đối tượng Kinematic hữu dụng khi dùng để mô phỏng các đối tượng phi thực, bỏ qua vật lý Một đối tượng ở chế độ Kinematic và Static thì không thể xét va chạm với các đối tượng Kinematic và Static khác mà chỉ có thể tính toán va chạm với động tượng Dynamic Để Kinematic có thể xét va chạm với tất

cả các kiểu còn lại thì tích vào Full Kinematic Contacts

 Kiểu Static: Kiểu này làm cho đối tượng hoàn toàn không chịu tác động vật lý nào Một cách đơn giản khác để tạo một đối tượng mang Rigidbody2D-Static là gán cho đối tượng ấy một thành phần Collider2D Simulated: Dùng để bật/tắt nhanh việc sử dụng thành phần Rigidbody2D lên đối tượng

Trang 20

Hình 7 Một Capsule Collider 2D

Hình 8 Minh họa sử dụng Joint2D

Hình 9 Component Constant Force 2D

1.4.2 Collider2D

Collider2D là một thành phần mang hình dạng

xác định để xác định việc va chạm của 2 đối tượng

Danh sách các Collider2D: Circle Collider 2D, Box

Collider 2D, Polygon Collider 2D, Edge Collider 2D,

Capsule Collider 2D và Composite Collider 2D

Việc áp dụng một Collider2D với hình dạng

phức tạp hay một Collider2D đơn giản ảnh thưởng rất

nhiều đến hiệu năng cũng như mô phỏng vật lý trong game

1.4.3 Joint2D

Joint2D bao gồm: Distance Joint 2D, Fixed Joint

2D, Friction Joint 2D, Hinge Joint 2D, Relative Joint

2D, Slider Joint 2D, Spring Joint 2D, Target Joint 2D,

Wheel Joint 2D

Joint dùng để nối và thể hiện sự nối giữa hai đối

tượng với nhau Chỉ có thể gán thành phần Joint vào

một đối tượng đã có Rigidbody2D hoặc được gán cứng

tọa độ lên hệ trục Các Joint rất đa dạng và tùy thuộc

vào yêu cầu mô phỏng để sử dụng cho hợp lý

1.4.4 Constant Force 2D

Thành phần này là một công

cụ nhanh chóng hữu ích để mô

phỏng một đối tượng được cung

cấp một lực cố định liên tục

1.4.5 Effectors 2D

Effectors 2D được sử dụng kèm với Collider2D để tạo thành các vùng tác động lực lên các đối tượng đi vào khoản ảnh hưởng

Trang 21

1.4.6 2D Raycaster

Là một thành phần đóng vai trò trung gian để chuyển message từ Camera xuống các đối tượng 2D Thường được dùng để tạo các thao tác xác định tọa độ, chọn đối tượng, kéo thả, v.v…

Trang 22

Hình 11 Vòng đời cơ bản của một GameObject

1.5 Lập trình

Các đoạn mã lập trình là phần tối quan trọng giúp kết nối các tài nguyên của trò chơi để tạo nên một gameplay hấp dẫn thú vị người chơi Đồng thời, việc tối ưu và sử dụng hợp lý các thành phần của Unity đem lại hiệu suất cao cho trò chơi

Unity phiên bản thiện tại hỗ trợ hai ngôn ngữ lập trình là C# và Javascript C# hiện tại được hỗ trợ là C# 4.0 trên nền tảng Net 2.0 trong bộ mã nguồn mở Mono Trình IDE mặc định là MonoDevelop, người sử dụng có thể

sử dụng Visual Studio lẫn Visual Studio Code như trình IDE bên thứ ba.Về cơ bản, việc lập trình trong Unity là xoay quanh việc định nghĩa cá lớp kế thừa từ

Trang 23

lớp MonoBehaviour và kết hợp sử dụng các thành phần của Unity để tạo nên trò chơi

1.6 Giao diện người dùng

Unity cung cấp cho người sử dụng công cụ để xây dựng hệ thống giao diện người dùng hoàn chỉnh và có thể chạy đa nền tảng Đó chính là Canvas và các thành phần con của nó

1.6.1 Canvas

Canvas là đối tượng biểu tượng cho một vùng trên màn hình mà tất cả các đối tượng UI được xây dựng trên đó Thứ tự các đối tượng được thực hiện lệnh

vẽ (draw) theo thứ tự của nó trên Thanh đối tượng

Render Mode: Có 3 chế độ render khác nhau mà tùy vào tình huốn sử dụng của Canvas mà lựa chọn

Hình 12 Một UI đơn giản trong Unity

Trang 24

 Screen Space - Overlay: Các thành phần UI được render trên cùng của màn hình chơi, vì vậy khi có sự thay đổi về độ phân giải, hay kích thước thì các thành phần cũng thay đổi tương tự

 Screen Space - Camera: Gần như tương tự như Overlay tuy nhiên việc render phụ thuộc vào chế độ của Camera đang xử dụng

 World Space: Canvas được đối xử như một Game Object trên scene 1.6.2 Layout

Tất cả các thành phần UI đều được biểu diễn như một hình chữ nhật trên các Layout Người dùng sử dụng Rect Tool để tác động thay đổi như thay đổi kích thước, di chyển, xoay các UI

 Rect Transform là thành phần cơ bản của mỗi đối tượng UI lưu dữ thông tin về UI ấy trên Layout

 Pivot đóng vai trò điểm tựa để cho các thao tác như xoay, phóng thu hình dựa theo thực hiện

 Anchors đóng vai trò là con neo vị trí tương đối của đối tượng UI với Layout, đảm bảo khi layout thay đổi, các UI cũng thay đổi theo một cách hợp lý

Hình 13 Các thông số của một Layout

Trang 25

Hình 16 Theo thứ tự: Button, Toggle, Slider, ScrollBar, Dropdown và

InputField

1.6.3 Các đối tượng UI cơ bản Unity cung cấp

 Text: Biểu diễn chuỗi ký tự dưới định

dạng rich text

 Image: biểu diễn một hình ảnh được chọn,

có thể tùy chỉnh màu sắc, vật liệu

 Raw image: Image được đối xử như 1

Sprite còn raw image được xem như là

texture trong Unity Hiếm khi xử dụng

 Mark: Mark được sử dụng để tùy

chỉnh hiện thị ở các đối tượng UI

con so với đối tượng UI cha

 Effect: đây là một thành phần

thêm các hiệu ứng vào các đối

tượng UI

 Button: thành phần UI nhận được sự kiện click vào nó

 Toggle: thành phần UI mang giá trị biểu thị bật tắt cái gì đó

 Slider: thành phần UI mang giá trị là số từ 0 đến 1

 Scrollbar: thanh cuộn dùng trong các layout dài quá khung hình

 Dropdown: thanh chọn

 Input field: cho phép người dùng nhập chuỗi

Hình 14 Component Text

Hình 15 Component Image

Trang 26

 Scroll Rect: kết hợp với Scrollbar và Mark để tạo nên giao diện dạng cuộn

1.7 Thủ thuật tối ưu và xuất bản trò chơi lên Android

1.7.1 Hình ảnh

 Đối với các hình ảnh nhỏ và cùng một bộ đối tượng thì sử dụng các phần mềm bên thứ 3 để tạo thành một sprite sheet, cái mà tăng hiệu suất load hình ảnh và tiết kiệm dung lượng

 Đối với các hình nền, background, các hình ảnh nhiều màu sắc không sử dụng chanel alpha (xác định độ trong suốt của pixel) thì lưu dưới định dạng JPG để tiết kiệm dung lượng

 Đối với các hình ảnh đơn giản, ít màu sắc và có dùng chanel alpha thì dùng định dạng PNG 8 bit Với hình nhiều màu sắc phức tạp thì là PNG

24 bit

 Sử dụng thủ thuật preload của Unity để load trước những hình ảnh nặng

và sử dụng thường xuyên

1.7.2 Âm thanh

 Sử dụng định dạng ogg với mức độ chất lượng trung bình để đảm bảo cả

về chất lượng lẫn dung lượng file âm thanh

Hình 17 Một spritesheet chưa hình động một nhân vật

Ngày đăng: 11/05/2021, 16:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w