Tải bản đầy đủ (.pdf) (102 trang)

Tìm hiểu về unity 3d và xây dựng game superrunning

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.03 MB, 102 trang )

LỜI CẢM ƠN
Lời đầu tiên em xin chân thành cảm ơn các thầy cô giáo Trường Đại Học
Công Nghệ Thông Tin & Truyền Thông Thái Nguyên đã trang bị cho em những
kiến thức cơ bản cần thiết trong những năm học vừa qua để em có thể hoàn thành
Đồ án tốt nghiệp của mình.
Trong suốt thời gian thực hiện Đồ án, em đã nhận được sự giúp đỡ của thầy
cô trong bộ môn công nghệ phần mềm, Trường Đại Học Công Nghệ Thông Tin.
Vậy cho em xin phép được bày tỏ lời cảm ơn tới các thầy, cô.
Đặc biệt em cũng xin gửi những lời cảm ơn chân thành đến cô Th.s.
Nguyễn Thị Dung, đã tận tình hướng dẫn và chỉ bảo em trong suốt thời gian thực
hiện Đồ án tốt nghiệp này.
Em xin chân thành cảm ơn !

1


LỜI CAM ĐOAN
Nhận thức được Đồ án tốt nghiệp là sản phầm hoàn thiện của sinh viên
CNTT khi ra trường, cần tới sự miệt mài của bản thân và nhất là sự hướng dẫn tận
tình của các thầy cô giáo, em đã tổng hợp được các kiến thức được học cùng kinh
nghiệm và số liệu khảo sát thực tế nhằm hoàn thành Đồ án tốt nghiệp của mình.
Em xin cam đoan: Nội dung Đồ án của em không sao chép nội dung cơ bản
của bất kỳ Đồ án nào và là sản phẩm của chính bản thân em qua nghiên cứu thực tế
xây dựng lên. Mọi thông tin và nội dung sai lệch em xin chịu trách nhiệm hoàn
toàn trước Hội đồng bảo vệ.
Thái Nguyên, tháng 06 năm 2016
Sinh viên thực hiện

Trần Mạnh Tuấn

2




MỤC LỤC
LỜI CẢM ƠN

1

LỜI CAM ĐOAN 2
MỤC LỤC

3

DANH MỤC HÌNH ẢNH, BẢNG
LỜI MỞ ĐẦU

5

7

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

8

1.1. Tổng quan về Unity 8
1.1.1. Khái niệm

8

1.1.2. Các thành phần cơ bản trong Unity 9
1.1.3. Làm quen với môi trường Unity


14

1.2. Tổng quan về ngôn ngữ C# 17
1.2.1. Khái niệm

17

1.2.2. Đặc trưng của ngôn ngữ C# 18
1.2.3. Biến , hằng , toán tử 20
1.2.4. Kiểu dữ lệu - Cấu trúc điều khiển - Cấu trúc lặp 22
1.3. Tổng quan về ngôn ngữ lập trình JavaScript
1.3.1. Khái niệm

28

28

1.3.2. Đặc điểm của ngôn ngữ JavaScript 28
1.3.3. Các thành phần cơ sở của JavaScript

29

1.4. Khái quát về UML 31
1.4.1. Khái niệm

31

1.4.2. Các thành phần của UML


32

1.4.3. Biểu đồ UML 33
1.5. Sơ lược về tựa game “Endless Run”.

33

CHƯƠNG 2. KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
3

35


2.1. Khảo sát

35

2.1.1. Khảo sát nhu cầu chơi game 35
2.1.2. Một số game được xây dựng bằng Unity 3D
2.2. Phân tích và thiết kế hệ thống
2.2.1. Xây dựng kịch bản game

37
37

2.2.2. Xác định tác nhân và các ca sử dụng
2.2.3. Biểu đồ UseCase

38


39

2.2.4. Đặc tả chi tiết cho các UseCase chính
2.2.5. Biểu đồ lớp (class diagram). 53
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH

54

3.1. Lựa chọn công nghệ 54
3.2. Thiết kế thuật toán 54
3.3. Cài đặt và chạy chương trình
3.3.1. Cài đặt game trên Android

58
58

3.3.2. Một số giao diện chính 61
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỀN65
TÀI LIỆU THAM KHẢO 66
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 67

4

39

36


DANH MỤC HÌNH ẢNH, BẢNG
Hình 1.1. Các phiên bản của Unity.

Hình 1.2. Scenes trong Unity.

9

Hình 1.3. Asset trong Unity.

10

Hình 1.4. Compenents trong Unity.
Hình 1.5. Prefabs trong Unity.

12

Hình 1.6. Sprite trong Unity.

13

Hình 1.7. Audio Source trong Unity.

9

11

14

Hình 1.8. Các thành phần bố trí trong Unity

14

Hình 1.9 . Tạo dự án trong Unity 16

Hình 1.10. Dự án game 3D trong Unity 16
Hình 1.11. Thu mục trong Unity 17
Bảng 1.1. Các ký tự đặc biệt

22

Bảng 1.2. Kiểu dữ liệu dựng sẵn 23
Hình 2.1. Biểu đồ độ tuổi chơi game.

35

Hình 2.2. Biểu đồ UC của chương trình. 39
Hình 2.3. Biểu đồ trình tự cho UC chơi game

40

Hình 2.4. Biểu đồ cộng tác UC chơi game.

40

Hình 2.5. Biểu đồ trình tự UC xem thông tin.

41

Hình 2.6. Biểu đồ cộng tác UC xem thông tin

42

Hình 2.7. Biểu đồ trình tự UC cài đặt.


43

Hình 2.8. Biểu đồ cộng tác cho UC cài đặt.

44

Hình 2.9. Biểu đồ trình tự UC Điều khiển nhân vật

45

Hình 2.10. Biểu đồ cộng tác cho UC điều khiển. 46
Hình 2.11. Biểu đồ trình tự cho UC tạm dừng game

47

Hình 2.12. Biểu đồ cộng tác cho UC tạm dừng game. 48
5


Hình 2.13 . Biểu đồ trình tự UC chơi tiếp.

49

Hình 2.14. Biểu đồ cộng tác cho UC chơi tiếp. 50
Hình 2.15. Biểu đồ trình tự UC thoát game

51

Hình 2.16. Biểu đồ cộng tác cho UC thoát game.
Hình 2.17 . Biểu đồ lớp Menu


52

53

Hình 2.18. Biểu đồ lớp Elements 53
Hình 3.1. Không gian Collider.

55

Hình 3.2. Một số kiểu Collider.

56

Hình 3.3. Component Collider

56

Hình 3.4. Sphere Collider và Box Collider

56

Hình 3.5. Player và vật cản.58
Hình 3.6. Thiết lập đường dẫn cho JDK và SDK.
Hình 3.7. Thiết lập Built seting cho Android

58

59


Hình 3.8. Thiết lập trong Player Setting 59
Hình 3.9. Thiết lập phần Resolution và presentation.
Hình 3.10. Thực hiện built file

60

Hình 3.11. Giao diện đầu tiên khi khởi động game
Hình 3.12. Giao diện phần giới thiệu.

61

Hình 3.13. Giao diện hướng dẫn chơi

62

Hình 3.14. Giao diện một Game Play.

62

Hình 3.15. Giao diện cài đặt.

60

63

Hình 3.16. Giao diện tạm dừng game.

63

Hình 3.17. Giao diện khi người chơi thua cuộc. 64

Hình 3.18. Giao diện thoát game. 64

6

61


LỜI MỞ ĐẦU
Trong thời kỳ phát triển hiện nay điện thoại di động, và các thiết bị điện tử
là không thể thiếu trong cuộc sống. Theo thời gian, số lượng các thuê bao cũng
như các nhà cung cấp dịch vụ di động ngày càng tăng.
Cùng với sự phát triển của thị trường điện thoại di động là sự phát triển mạnh
mẽ của xu hướng lập trình phần mềm ứng dụng, lập trình game cho thiết bị di
động. Game cho điện thoại di động hiện nay rất đa dạng, phong phú và cũng đang
phát triển mạnh mẽ cũng như thay đổi từng ngày. Do đó việc xây dựng các game
cho điện thoại di động đang là một ngày công nghiệp mới đầy tiềm năng và hứa
hẹn nhiều sự phát triển vượt bậc của ngày khoa học kĩ thuật.
Xu hướng người sử dụng điện thoại với mục đích giải trí ngày càng tăng,
như: nghe nhạc, xem phim, chơi game, …Nhằm đáp ứng nhu cầu giải trí của người
dùng, em muốn xây dựng game SuperRunning trên điện thoại di động, game sẽ rất
thú vị, giúp người dùng có thể giải trí bất cứ lúc nào, bất cứ nơi đâu với chiếc điện
thoại thông minh cầm tay.
Đề tài: “ Tìm hiểu về Unity 3D và xây dựng game SuperRunning”. Báo
cáo này gồm có các nội dung sau:
Chương 1: Cơ sở lý thuyết: Nội dung chương này bao hàm toàn bộ lý
thuyết , kiến thức căn bản về Unity Engine, ngôn ngữ C#, ngôn ngữ
JavaScript, ngôn ngữ UML…
Chương 2: Khảo sát và phân tích , thiết kế hệ thống: Bao gồm nội dung
về khảo sát thực trạng game mobile, phân tích và vẽ biểu đồ chương trình.
Chương 3: Xây dựng và cài đặt chương trình: Nội dung bao gồm việc xây

7


dựng giao diện, xây dựng các lớp xử lý, cài đặt và chạy chương trình.

CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
 Tổng quan về Unity
 Khái niệm

Unity là một bộ authoring tool hoàn chỉnh để phát triển game mà không cần
render, cho phép người design game có thể thiết kế InterfaceGraphic, map hay
character … từ một phần mềm thứ 2 (thường là các phần mềm thiết kế đồ họa
chuyên nghiệp như 3Dsmax, Blender, Maya, XSL, Cinema4D, Cheetah3D, Modo,
Autodesk FBX, LightWave…) sau đó chỉ việc import nó vào trong Unity với định
dạng của tập tin là *.FBX hay *.dae, *.3DS, *.dxf và *.obj, nhưng định dạng
*.FBX hay được dùng vì được tối ưu hóa hơn, còn dùng các định dạng khác ngoài
FBX thì phải cài phần mền thiết kế character tưng ứng thì mới dùng được (tức là
dùng Maya có định dạng *.mb, *.ma thì muốn dùng được phải cài Maya).

8


Ưu điểm của Unity là một môi trường phát triển tích hợp, mạnh mẽ, hỗ trợ
thao tác kéo thả, tuỳ biến giao diện nhanh chóng, trực quan, cấp các công cụ xử lý
đồ hoạ, tích hợp sẵn thư viện vật lý, tính toán va chạm. Unity hỗ trợ phát triển trên
hai nền 2D và 3D và cho phép export game chạy trên các nền tảng thông dụng như
OSX, Linux, Window, Web, iOS, Window Phone 8, Android, PS3, BB…
Unity hướng tới người sử dụng chuyên nghiệp và cả nghiệp dư, nên khá dễ
để sử dụng. Với ngôn ngữ lập trình bằng C#, JavaScript hoặc BOO.
Ngày nay rất nhiều nhà phát triển game lựa chọn Unity để phát triển bởi khả

năng hỗ trợ đa nền tảng và sự mạnh mẽ tiện dụng của Unity. Đến với Unity, các
bạn sẽ không cần phải băng khoăn về các vấn đề xử lý, các khái niệm đồ hoạ phức
tạp... tất cả đều trở nên dễ dàng và nhanh chóng. Ta có thể vào đây để download và
cài đặt Unity3D trực tiếp tại trang chủ : />Unity có 2 loại phiên bản, một cho người dùng free, và một phiên bản pro
thì mất phí.

9


Hình 1.1. Các phiên bản của Unity.
 Các thành phần cơ bản trong Unity

 Scenes

10


Hình 1.2. Scenes trong Unity.
Trong Unity, một cảnh chơi (hoặc một phân đoạn) là những màn chơi riêng
biệt, một khu vực trong game hoặc thành phần có trong nội dung của trò chơi (các
menu), các thành phần này được gọi là Scene. Bằng cách tạo ra nhiều Scenes,
chúng ta có thể phân phối thời gian và tối ưu tài nguyên, kiểm tra các phân đoạn
trong game một cách độc lập.Một số thành phần như MainMenu cũng là một
Scene.

 Asset

11



Hình 1.3. Asset trong Unity.
Asset (tài nguyên) là các file dữ liệu gốc như: các file mô hình , texture, âm
thanh, script, scenes…
Unity hỗ trợ rất nhiều dữ liệu tài nguyên mà không cần phải convert. Các
asset do chính những nhà phát triển game tạo ra và có thể được download miễn phí
hoặc trả phí trên Unity Asset Store, đây là một trong những tính năng rất hay của
Unity. Các asset này sẽ giúp giảm thiểu rất nhiều thời gian cho việc thiết kế và lập
trình game.

 Game Objects
Để có thể sử dụng được các tài nguyên chúng ta cần phải tạo ra các Game
Object (đối tượng game).
Khi Asset được sử dụng trong các Scene, Unity định nghĩa đó là Game
Object. Đây là một thuật ngữ thông dụng, đặc biệt trong mảng lập trình. Tất cả các

12


Game Object đều chứa ít nhất một thành phần cơ bản là Transform, lưu trữ thông
tin về vị trí, góc xoay và tỉ lệ của Game Object. Thành phần Transform có thể
được tuỳ biến và chỉnh sửa trong quá trình lập trình.

13


 Components
Components là các thành phần trong game, bổ sung tính năng cho các Game
Object. Mỗi Component có chức năng riêng biệt, đa phần các Component phụ
thuộc vào Transform, vì nó lưu trữ các thông số cơ bản của Game Object.
Bản chất của Game Object là không có gì cả, các đặc tính và khả năng của

Game Object nằm hoàn toàn trong các Component. Do đó chúng ta có thể xây
dựng nên bất kỳ Game Object nào trong game mà chúng ta có thể tưởng tượng
được.

14


Hình 1.4. Compenents trong Unity.

 Scripts
Scripts được Unity xem như một Component, đây là thành phần thiết yếu
trong quá trình phát triển game. Bất kỳ một game nào, dù đơn giản nhất đều cần
đến Scripts để tương tác với các thao tác của người chơi, hoặc quản lý các sự kiện
để thay đổi chiều hướng của game tương ứng với kịch bản game.

15


Unity cung cấp cho lập trình viên khả năng viết Script bằng các ngôn ngữ:
JavaScript, C#. Unity không đòi hỏi lập trình viên phải học cách lập trình trong
Unity, nhưng trong nhiều tình huống, chúng ta cần sử dụng Script trong mỗi phần
của kịch bản game.
Để viết Script, chúng ta có thể làm việc với một trình biên tập Script độc lập
của Unity, hoặc làm việc trên Mono Developer được tích hợp vào Unity trong
những phiên bản gần đây. Mono Developer là một IDE khá tốt, cung cấp nhiều
chức năng tương tự Visual Studio. Mã nguồn viết trên Mono Developer sẽ đươc
cập nhật và lưu trữ trong dự án trên Unity.

 Prefabs
Prefabs thực chất là Game Object được lưu trữ lại để tái sử dụng. Các

Game Object được nhân bản từ một prefab sẽ giống nhau hoàn toàn, ngoại trừ
thành phần Transform để phân biệt và quản lý được tốt hơn. Ví dụ: Các đối tượng
là đồng tiên trong game Mario đều có xử lý giống nhau, nên ta chỉ việc tạo ra một
đối tượng ban đầu, các đồng tiền còn lại sẽ sử dụng prefabs. Hoặc khi ta lát gạch
cho một cái nền nhà, các viên gạch cũng được sử dụng là prefabs.
Để tạo ra một prefab, ta đơn giản chỉ cần kéo một Game Object vào cửa sổ
Project.

16


Hình 1.5. Prefabs trong Unity.

 Sprite
Sprite là một hình ảnh 2D của một game object có thể là hình ảnh đầy đủ,
hoặc có thể là một bộ phận nào đó.

17


Hình 1.6. Sprite trong Unity.

 Animation
Animition là tập một hình ảnh động dựa trên sự thay đổi liên tục của nhiều
sprite khác nhau.

18


 Audio Source

Đối với bất kỳ game nào, âm thanh là một trong những yếu tố không thể
thiếu. Âm thanh như một chất xúc tác nhằm kích thích các giác quan của người
chơi giúp cho game trở nên thu hút và hấp dẫn hơn.
Audio Source là một built-in component được Unity xây dựng sẵn để hỗ trợ
phát các file âm thanh trong game. Để sử dụng Audio Source, các bạn chọn Add
Component → Audio → Audio Source. Các thuộc tính của Audio Source được
hiển thị trong hình sau:

Hình 1.7. Audio Source trong Unity.
Các định dạng âm thanh hỗ trợ trong Unity bao gồm : *.mp3, *.oog, *.wav,
*.xm, *.mod, .*it, *.aiff.
 Làm quen với môi trường Unity
19


 Các thành phần bố trí của Unity

Hình 1.8. Các thành phần bố trí trong Unity.
 Scenes:
Phần màu đỏ số 1.Phần này phần hiển thị các đối tượng trong scenes
một cách trực quan, có thể lựa chọn các đối tượng, kéo thả, phóng to, thu
nhỏ, xoay các đối tượng ...
Phần này có để thiết lập một số thông số như hiển thị ánh sáng, âm anh, cách nhìn
2D hay 3D .
 Game:
Phần màu đỏ số 1. Phần này hiển thị game khi thực thi, một tab bên cạnh

20



của tab Scenes.
 Inspector:
Phần số 2 màu vàng. Phần này hiển thị các component của một Game
Object và các thông số của các component.
 Project:
Phần số 3 màu xanh lá cây. Phần này hiển thị thư mục Assets, chứa tất cả
các tài nguyên của dự án game. Ở phần này, bên cạnh tab khác, có phần Console
để hiển thị các log trong quá trình debug.
 Hierarchy
Phần đóng khung màu tím. Phần này quản lý tất cả các đối tượng trong
scenes, có thể chọn lựa, đổi tên, xoá các đối tượng ra khỏi game.
 Top bar
Phần đóng khung màu đà. Phần này chứa các nút chuyên dụng:
 Bốn nút bên trái: (1) tuỳ chọn cho phép dùng chuột kéo toàn bộ
scenes, phóng to, thu nhỏ, lựa chọn các đối tượng trong scenes... (2)
cho phép dùng chuột di chuyển các đối tượng trong scenes, (3) cho
phép dùng chuột quay các đối tượng (4) cho phép dùng chuột phóng
to, thu nhỏ các đối tượng.
 Ba nút ở giữa: (1) cho phép chạy demo game, (2) cho phép dừng
game tại một frame nào đó, (3) cho phép chạy từng frame.
 Hai drop list bên phải: (1) cho phép tuỳ chọn hiển thị các layer, (2)

21


cho phép chọn và lưu các bố trí do người dùng thiết lập.
Ngoài ra còn có các cửa sổ khác của Unity, như Sprite Editor, Animation,
Animator, Console... và ta có thể tự tuỳ biến cho mình một bố cục sao cho thuận
tiện với mình nhất... nhưng khuyến cáo thì vẫn nên dùng bố cục mặc định. (Chọn ở
Top bar chọn Layout --> Default) .


 Tạo và cấu hình dự án trong Unity
Bật Unity lên, đặt tên cho Project và vị trí lưu trữ. Sau đó chọn chế độ 2D
hoặc 3D rồi “Create project”.

Hình 1.9 . Tạo dự án trong Unity.
Chọn loại project là 2D hoặc 3D sau đó gõ tên project xong nhấn Create
Project. Kết quả như sau:

22


Hình 1.10. Dự án game 3D trong Unity.
Sau khi tạo dự án xong, Ở cửa sổ Hierarchy chọn Main Camera. Inspector
sẽ hiển thị các thông số của camera, ta sẽ chọn lại giá trị Projection hay phép chiếu
là phép chiếu vuông góc thay cho phép chiếu phối cảnh.
Tiếp theo, ở cửa sổ Project, ta sẽ tạo sẵn các thư mục để chứa tất cả các tài
nguyên có sử dụng trong game sau này lần lượt là: Animations, Prefabs, Scripts,
Sprites, Sounds, Scenes. Click chuột phải vào thư mục Assets ở cửa sổ Project, ta
chọn Create, chọn Folder. Kết quả như hình sau:

23


Hình 1.11. Thu mục trong Unity.

 Tổng quan về ngôn ngữ C#
 Khái niệm
Ngôn ngữ C# khá đơn giản, chỉ khoảng hơn 80 từ khóa và hơn mười mấy
kiểu dữ liệu được dựng sẵn. Tuy nhiên, ngôn ngữ C# có ý nghĩa to lớn khi nó thực

thi những khái niệm lập trình hiện đại. C# bao gồm tất cả những hỗ trợ cho cấu
trúc, thành phần component, lập trình hướng đối tượng. Những tính chất đó hiện
diện trong một ngôn ngữ lập trình hiện đại. Hơn nữa ngôn ngữ C# được xây dựng
trên nền tảng hai ngôn ngữ mạnh nhất là C++ và Java.
Trọng tâm của ngôn ngữ hướng đối tượng là lớp. Lớp định nghĩa kiểu dữ
liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết. C# có những từ
khoá dành cho việc khai báo lớp, phương thức, thuộc tính (property) mới. C# hỗ
trợ đầy đủ khái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa
hình.
24


Định nghĩa lớp trong C# không đòi hỏi tách rời tập tin tiêu đề với tập tin cài
đặt như C++. Hơn thế, C# hỗ trợ kiểu sưu liệu mới, cho phép sưu liệu trực tiếp
trong tập tin mã nguồn. Đến khi biên dịch sẽ tạo tập tin sưu liệu theo định dạng
XML.
C# hỗ trợ khái niệm giao diện, interfaces (tương tự Java). Một lớp chỉ có thể
kế thừa duy nhất một lớp cha nhưng có thế cài đặt nhiều giao diện.
C# có kiểu cấu trúc, struct (không giống C++). Cấu trúc là kiểu hạng
nhẹ và bị giới hạn.Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có
thể cài đặt giao diện.
C# cung cấp những đặc trưng lập trình hướng thành phần như property, sự
kiện và dẫn hướng khai báo (được gọi là attribute). Lập trình hướng component
được hỗ trợ bởi CLR thông qua siêu dữ liệu (metadata). Siêu dữ liệu mô tả các lớp
bao gồm các phương thức và thuộc tính, các thông tin bảo mật ….
Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên là
các thư viện liên kết động (DLL) hay tập tin thực thi (EXE). Trong .NET một
assembly là một đon vị của việc tái sử dụng, xác định phiên bản, bảo mật, và phân
phối. CLR cung cấp một số các lớp để thao tác với assembly.
C# cũng cho truy cập trực tiếp bộ nhớ dùng con trỏ kiểu C++, nhưng vùng

mã đó được xem như không an toàn. CLR sẽ không thực thi việc thu dọn rác tự
động các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giải
phóng.
 Đặc trưng của ngôn ngữ C#
C# có những đặc trưng cơ bản sau đây:

25


×