1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng game night mareban gunity3d

74 330 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

Định dạng
Số trang 74
Dung lượng 3,31 MB

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

Nội dung

Chúng ta có thể chơi game online trên mạng, các game offline trên PC, các game trên các dòng máy chuyên như Play Station của hãng Sony với những phiên bản PS2, PS3, PS4… hiện nay game cũ

Trang 1

LỜI CÁM ƠN

Em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, trường Công nghệ thông tin và truyền thông Thái Nguyên đã tạo điều kiện tốt cho em thực hiện đồ án tốt nghiệp lần này

Em xin chân thành cảm ơn cô Nguyễn Lan Oanh, là người đã tận tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đồ án

Em cũng xin gửi lời cảm ơn sâu sắc đến quý thầy cô trong khoa đã tận tình giảng dạy, trang bị cho chúng em những kiến thức quí báu trong những năm học vừa qua

Mặc dù em đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép, nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong sự cảm thông và tận tình chỉ bảo của quý Thầy Cô và các bạn

Người thực hiện Nguyễn Mạnh Cường

Trang 2

LỜI CAM ĐOAN

Em xin cam đoan báo cáo đồ án tốt nghiệp này là công trình tổng hợp và nghiên cứu của cá nhân em, được thực hiện trên cơ sở nghiên cứu lý thuyết, kiến thức dưới

sự hướng dẫn tận tình của cô giáo Th.S Nguyễn Lan Oanh Trong báo cáo có sử dụng các tài liệu tham khảo được trích dẫn rõ ràng về tên tác giả, thời gian công bố cùng danh mục tài liệu tham khảo như đã nêu trong phần tài liệu tham khảo Nếu có phát hiện bất kỳ sự gian trá nào trong đồ án, em xin chịu hoàn toàn trách nhiệm trước Hội đồng bảo vệ

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

TÓM TẮT ĐỀ TÀI 2

Chương 1 : TỔNG QUAN VỀ UNITY 3D 3

1.1 Unity là gì? 3

1.2 Sơ lược lịch sử hình thành và phát triển của Unity 4

1.2.1 Giới thiệu về Unity 4

1.2.2 Hình thành 6

1.2.4 Giải thưởng 6

1.2.5 Khách hàng 7

1.2.6 Tính năng của engine Unity 7

1.3 Các khái niệm cơ bản trong Unity 8

1.3.1 Asset 8

1.3.2 Scene 8

1.3.3.Game Object 9

1.3.4 Component 10

1.3.5 Script 10

1.3.6 Prefab 13

1.3.7 Material và Shader 13

1.4 Sơ nét về giao diện của Unity 14

1.4.1 Cửa sổ Scene và Hierarchy 14

1.4.2 Inspector 16

1.4.3 Cửa sổ Game 16

1.4.4 Cửa sổ Project 16

1.5 Tổng quan kiến trúc engine Unity trên Android 17

1.5.1 Kiến trúc tổng quan 17

1.5.2 Chu kỳ sống của thành phần script gắn trên đối tượng game 18

1.6 Tạo và cấu hình với dự án 2D 20

1.6.1 Tạo dự án 20

Trang 4

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 38

2.1 Phân tích yêu cầu 38

2.1.1 Khảo sát 38

2.1.2 Mục tiêu cần đạt 38

2.1.3 Hướng giải quyết và kế hoạch thực hiện 38

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

2.2.1 Biểu đồ Use Case (Use Case Diagram) 39

2.2.2 Biểu đồ trình tự (Sequence Diagram) 41

2.2.3 Biểu đồ lớp (Class Diagram) 44

2.2.4 Biểu đồ hoạt động (Activity-Diagram) 44

2.2.5 Các chức năng của chương trình 46

CHƯƠNG 3 : XÂY DỰNG GAME NIGHT MARE 47

3.1 Giới thiệu chung về game trên PC 47

3.1.1 Máy chơi game đầu tiên 47

3.1.2 Thập niên 70s – Thế hệ console đầu tiên 48

3.1.3 Thập niên 80 – Thời kỳ hoàng kim của máy tính cá nhân 49

3.1.4 Thập niên 90 – Đĩa CD và PlayStation 50

3.1.5 Thập niên 2000s – MMO 52

3.1.5 Kỷ nguyên tương lai - Thực tại ảo 55

3.2 Mục tiêu đề tài 57

3.3 Giới thiệu game 58

3.4 Các tài nguyên của game 59

3.4.1.Thư mục scene 59

Thư mục scene chứa 3 màn chơi chính của game là : GamePlay, InGame Các màn chơi này được sắp xếp theo thứ tự và sẽ được chuyển scene bằng code 59 3.4.2.Thư mục model 60

Trang 5

3.5.1 Di chuyển player bằng bàn phím 61

3.5.2 Xử lý di chuyển theo cho Enemy 61

3.5.3 Xử lý va chạm giữa các đối tượng trong game 62

3.5.4 Ánh sáng trong game 62

3.5.5 Âm thanh trong game 62

3.5.6 Hiệu ứng cháy nổ (particle System) 64

KẾT LUẬN 65

1 Kết quả đạt được: 65

2 Hướng phát triển 65

DANH MỤC TÀI LIỆU THAM KHẢO 66

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 67

Trang 6

DANH MỤC CÁC HÌNH

Hình 1.1 Hình minh họa đa nền 3

Hình 1.2.Môi trường phát triển Unity 3D 5

Hình 1.3 Thông tin phiên bản Unity 3D 6

Hình 1.4 Asset trong Unity 8

Hình 1.5 Các scene của Unity 9

Hình 1.6 Kéo tài nguyên vào Scene để sử dụng 9

Hình 1.7 Các thành phần trong đối tượng Camera 10

Hình 1.8 Cách tạo file script mới 11

Hình 1.9 Lập trình Unity bằng C# trên Visual Studio 12

Hình1.10 Một file script đang gắn vào đối tượng 12

Hình 1.11 Material và Shader 13

Hình 1.12 Giao diện Editor của Unity 14

Hình 1.13 Chọn đối tượng trong Scene và Hierrarchy 15

Hình 1.14 Cửa sổ Inspector hiển thị thông tin một đối tượng 16

Hình 1.15 Tổng quan kiến trúc Unity 17

Hình 1.16 Chu kỳ sống của thành phần script 19

Hình 2.1 Biểu đồ Use Case tổng quát của game 39

Hình 2.2 Biểu đồ trình tự giao diện chính 41

Hình 2.3 Biểu đồ trình tự chơi game 42

Hình 2.4 Biểu đ trình tự giao diện menu 43

Hình 2.5 Biểu đồ Class-Diagram 44

Hình 2.6 Biểu đồ hoạt động Menu 44

Hình 2.7 Biểu đồ hoạt động xử lý va chạm 45

Hình 3.1 Máy chơi game đầu tiên 47

Trang 7

Hình 3.4 Game elite 50

Hình 3.5.Game trên đĩa CD và Playstation phát triển 51

Hình 3.6 Game Playstation đầu tiên về bắn máy bay 52

Hình 3.7 Game MMO phát triển 53

Hình 3.8 Game Call of Duty 54

Hình 3.9 Game Angry Birds 55

Hình 3.10 Kính thực tại ảo ra đời 56

Hình 3.11 Game thực tại ảo 56

Hình 3.12.Game có lỗi chơi gần giống game ZombieWood 58

Hình 3.13.Giao diện start game 59

Hình 3.14.Giao diện Ingame 59

Hình 3.15.Giao diện endgame 60

Hình 3.16 Quái vật elepant 60

Hình 3.17 Nhân vật chính 61

Hình 3.18 Quái vật Zombuny 61

Hình 3.19 Ánh sáng trong game 62

Hình 3.20 Thêm thành phần Audio Source 63

Trang 8

LỜI NÓI ĐẦU

Với sự phát triển một cách nhanh chóng như vũ bão của công nghệ và Internet của thế giới nói chung và Việt Nam nói riêng thì game gần như không còn là một khái niệm xa lạ đối với mỗi cá nhân, ngược lại còn cảm thấy rất gần gũi trong cuộc sống chúng ta Chúng ta có thể bắt gặp những trò chơi trên những thiết bị công nghệ nhỏ nhất cho đến những thiết bị công nghệ cao hơn

Nói đến game thì chắc hẳn phần lớn mọi người đều đồng ý đó là một loại hình giải trí có sức thu hút rất lớn,nhất là với giới trẻ hiện nay Đặc biệt sau sự ra đời của Internet, game online xuất hiện và nhanh chóng gây được sức hấp dẫn to lớn Chúng

ta có thể chơi game online trên mạng, các game offline trên PC, các game trên các dòng máy chuyên như Play Station của hãng Sony với những phiên bản PS2, PS3, PS4… hiện nay game cũng đang được phát triển mạnh trên các thiết bị di động như điện thoại di động, các máy Xbox…Hàng năm lợi nhuận từ game đem về doanh thu lên đến hàng tỉ đô la cho những công ty chuyên phát triển và sản xuất game như ở các nước phát triển như Nhật Bản, Mỹ có rất nhiều các công ty chuyên về sản xuất game như Nintendo, Sony, Sega và mỗi năm các công ty này đạt doanh thu hàng

tỷ USD Hay với các nước đi sau như Hàn Quốc,Trung Quốc cũng có được một ngành công nghê game rất mạnh nhờ có sự đầu tư đúng đắn và chiến lược phát triển tốt Một trò chơi được mua về với giá hàng ngàn hay thậm chí hàng triệu, hàng tỷ

đô la Không phải là những game cấu hình cao, đồ họa khủng mới có thể đêm về nguồn lợi nhuận khủng khiếp như vậy mà có những game rất đơn giản cấu hình thấp, đồ họa của những năm đầu tiên của thế giới công nghệ nhưng vẫn rất hấp dẫn

và thu hút người chơi chỉ với những lối chơi cực kì đơn giản, nó không phải là một vẫn đề khó hiểu trong thời đại công nghệ hiện nay

Mặc dù VINASA xếp game là một trong 3 định hướng công nghệ chiến lược của hiệp hội này trong giai đoạn 2006-2010, bên cạnh định hướng phần mềm nhúng

và ERP nhưng hiện tại thị trường game ở Việt Nam còn rất yếu

Trang 9

TÓM TẮT ĐỀ TÀI

Ngày nay, game trên trên điện thoại di động đã trở thành thú vui số 1 của giới trẻ Tuy vậy, cảm giác chơi game trên PC vẫn là một thứ gì đó rất lôi cuốn mà game trên mobile không thể nào đem lại được

Tuy game trên mobile tiện lợi thì rất rõ, có thể chơi mọi lúc mọi nơi nhưng với những game đồ họa cao, game đòi hỏi người chơi phải thao tác liên tục với bàn phím hay chuột thì không thể nào tích hợp trên di động được Một số game bắn súng như CS, Crossfire, … hay những game chiến thuật như LOL, DOTA, AOE thì vẫn chưa có phiên bản trên mobile Những nhà phát hành game lớn cũng luôn quan tâm tới cộng đồng game thủ, ví dụ như garena thường xuyên tổ chức các giải đấu LOL với phần thưởng lên tới hàng triệu đô la mỹ, điều mà game thủ mobile vẫn chưa thể có được

Chính vì vậy mà nhu cầu chơi game 3D trên PC vẫn còn rất cao, các hãng sản xuất liên tục cho ra đời những thể loại game 3D hình ảnh đẹp mắt, âm thanh sống động trên nền tảng PC

Nội dung đề tài em thực hiện bao gồm việc tìm hiểu Engine Unity và sử dụng Unity để xây dựng game 3D cho PC

Báo cáo bao gồm 3 chương:

Chương 1: Giới thiệu tổng quan về Unity 3D

Chương 2: Giới thiệu tổng quan về Unity, trình bày các khái niệm cơ bản,

các tính năng nổi bật, giao diện, đặc biệt là tổng quan về kiến trúc của Engine Unity

Chương 3: Xây dựng game Night mare

Trang 10

Chương 1 : TỔNG QUAN VỀ UNITY 3D 1.1 Unity là gì?

Đã qua rồi thời kỳ làm game trên nền Flash căn bản và buồn chán với những chuyển động thật cứng nhắc Unity 3D mang lại sức mạnh kỳ diệu cho nhân vật mà chúng ta muốn thể hiện sống động hơn trong không gian 3 chiều đầy huyền ảo Công nghệ cao này tạo ra một bước đột phá mới về sự khác biệt trong công nghệ làm game 3D hiện nay, mang đến cho người chơi 1 cảm giác rất khác lạ và hào hứng trong từng chuyển động, tương lai công nghệ này được áp dụng vào game Việt Nam sẽ mở ra một trang mới trong thế giới game 3D huyền ảo

Unity 3D được dùng để làm video game 3D, hoặc những nội dung có tính tương tác như thể hiện kiến trúc, hoạt hình 3D thời gian thực Unity hao hao với Director, Blender game engine, Virtools hay Torque Game Builder trong khía cạnh dùng môi trường đồ họa tích hợp ở quá trình

phát triển game là chính

Unity là một trong những engine được

giới làm game không chuyên cực kỳ ưa chuộng

bởi khả năng tuyệt vời của nó là phát triển trò

chơi đa nền Trình biên tập có thể chạy trên

Windows và Mac OS, và có thể xuất ra game

cho Windows, Mac, Wii, iOS, Android Game

cũng có thể chơi trên trình duyệt web thông qua

plugin Unity Web Player Unity mới bổ sung

khả năng xuất ra game trên widget cho Mac, và

cả Xbox 360, PlayStation 3

Hình 1.1 Hình minh họa đa nền

(Nguồn: http://unity3d.com/ ) Chỉ với khoản tiền bỏ ra khá khiêm tốn (1.500 USD) là phiên bản pro đã nằm trong tay của chúng ta, dĩ nhiên tại Việt Nam số tiền này vẫn là quá lớn nhưng thật

Trang 11

Vào năm 2009, Unity nằm trong top 5 game engine tốt nhất cho việc sản xuất game với chỉ sau 4 năm phát triển Unity đứng thứ 4, xếp sau Unreal Engine 3, Gamebryo Engine (được VTC Studio mua về phát triển SQUAD) và Cry Engine 2 Lượng tài liệu hướng dẫn Unity rất phong phú Hơn thế nữa nó còn có sẵn một cộng đồng cực lớn với diễn đàn riêng Bất cứ điều gì không hiểu chúng ta đều có thể thoải mái hỏi và nhận được câu trả lời nhanh chóng, tận tâm

Quá trình tạo địa hình cũng như truy xuất từ các phần mềm 3DSMax, Maya, Cinema4D rất nhanh chóng Sức mạnh và sự tiện lợi của Unity là vô cùng lớn

 Sức mạnh: Unity có thể tạo ra được nhiều loại game 3D đa dạng, dễ sử dụng với người làm game chưa chuyên nghiệp, chất lượng cao, chạy hầu hết trên các hệ điều hành

 Sự tiện lợi: nếu chúng ta là một người chuyên dùng 3Dmax, hay Maya hoặc phần mềm mã nguồn mở Blender thì quả là thật tuyệt, chúng ta sẽ có một lợi thế lớn khi viết game trên Unity này, bởi công việc tạo các mô hình 3D sẽ trở lên dễ dàng hơn rất nhiều, việc kết hợp giữa người lập trình và người thiết kế các mô hình

sẽ nhanh và hiệu quả hơn Trong Unity chúng ta có thể import trực tiếp các file mô hình đang thiết kế và sẽ thiết kế hoàn thiện tiếp nếu chưa xong trong khi đó công việc import chỉ diễn ra một lần Không như việc phải dùng các công cụ khác để thực hiện viết game chúng ta sẽ phải xuất chúng ra một dạng nào đó và mỗi lần sửa lại phần mô hình chúng ta lại phải import lại, và như thế là quá mất thời gian trong việc tạo và chỉnh sửa các mô hình theo ý muốn Ngoài ra Unity còn cho chúng ta trực tiếp tạo các mô hình nếu muốn Việc đặt các thuộc tính vật lý trong Unity cũng cực

kỳ dễ dàng và hỗ trợ sẵn nhiều chức năng

1.2 Sơ lược lịch sử hình thành và phát triển của Unity

1.2.1 Giới thiệu về Unity

- Unity3D 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

- Cung 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

- Hỗ trợ phát triển cả game 2D và 3D

Trang 12

- Hỗ trợ nhiều nền tảng thông dụng như OSX, Linux, Window, Web, iOS, Window Phone 8, Android, PS3, BB…

Hình 1.2.Môi trường phát triển Unity 3D

- Cộng đồng người dùng, hỗ trợ rộng lớn

- Có phiên bản miễn phí có thể chạy được trên Window và Mac OSX

- Unity3D 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 Unity3D để 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 Unity3D

- Đến với Unity, các bạn sẽ không cần phải băn 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 với Unity

- Một số game được phát triển trên Unity như AngryBird, Elegy of War,…

- Ta có thể vào đây để download và cài đặt Unity3D trực tiếp tại trang chủ : http://unity3d.com/unity/download/

- 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í

Trang 13

Hình 1.3 Thông tin phiên bản Unity 3D

- Tải Unity về cài đặt bình thường, đến khi kết thúc cài đặt nền các bạn chọn phiên bản Pro thì cần phải mua, còn nếu là người dùng free thì chọn kích hoạt qua web, chỉ cần có kết nối mạng internet, sau đó chọn cài đặt thủ công và nhập mail, chọn free là có thể sử dụng một bản Unity free

1.2.2 Hình thành

Phần lõi của Unity ban đầu được viết bởi Joachim Ante vào năm 2001 Sau đó công ty được hình thành vào năm 2005 và bắt đầu với phiên bản 1.0 Đến năm 2007, Unity được nâng lên phiên bản 2.0 Unity bắt đầu hỗ trợ iPhone vào năm 2008 Vào tháng 6/2010, Unity chính thức hỗ trợ Android và cho ra đời phiên bản 3.0 có hỗ trợ Android vào tháng 9/2010 Có thể thấy tốc độ phát triển của Unity khá nhanh

1.2.4 Giải thưởng

Unity đã đoạt được nhiều giải lớn với những giải chính sau:

o Năm 2006, Unity đạt "Best Use of Mac OS X Graphics" tại Apple's WWDC Đây là lần đầu tiên một công cụ phát triển game đạt được chất lượng do giải thưởng uy tín này đưa ra

Trang 14

o Năm 2009, Unity Technologies có tên trong "Top 5 công ty game của năm" do Gamasutra tổ chức

o Năm 2010, Unity đoạt giải Best Engine Finalist do Develop Magazine bình chọn, giải Technology Innovation Award của Wall Street Journal ở thể loại phần mềm

1.2.5 Khách hàng

Unity được trên 250.000 người đăng ký sử dụng gồm Bigpoint, Cartoon Network, Coca-Cola, Disney, Electronic Arts, LEGO, Microsoft, NASA, Ubisoft, Warner Bros, các hãng phim lớn nhỏ, các chuyên gia độc lập, sinh viên và những người đam mê

1.2.6 Tính năng của engine Unity

 Môi trường phát triển được tích hợp với tính năng kế thừa, khả năng chỉnh sửa đồ họa, chức năng kiểm tra chi tiết, và đặc biệt tính năng xem trước game ngay trong lúc xây dựng (live game preview)

 Triển khai được trên nhiều nền tảng:

o Chương trình độc lập trên Windows và Mac OS

o Trên web, thông qua Unity Web Player plugin cho Internet Explorer, Firefox, Safari, Opera, Chrome, cho cả Windows và Mac OS

o Trên Mac OS Dashboard widget

o Cho Nintendo Wii (cần mua license thêm.)

o Cho iPhone, iPad application (cần mua license thêm.)

o Cho Google Android (cần mua license thêm.)

o Cho Microsoft Xbox 360 (cần mua license thêm.)

o Cho Sony PlayStation 3 (cần mua license thêm.)

 Tài nguyên (model, âm thanh, hình ảnh, ) được tải vào trong Unity và tự động cập nhật nếu tài nguyên có sự thay đổi Unity hỗ trợ các kiểu định dạng từ 3DS Max, Maya, Blender, Cinema 4D và Cheetah3D

 Graphics engine sử dụng Direct3D (Windows), OpenGL (Mac, Windows), OpenGL ES (iPhone OS), và các API khác trên Wii

 Hỗ trợ bump mapping, reflection mapping, parallax mapping, Screen Space

Trang 15

 Unity Asset Server: Đây là một tính năng khá mới của Unity, theo đó Unity

sẽ cung cấp một hệ thống quản lý theo dạng phiên bản cho tất cả asset và cả script Đây là một kho chứa các tài nguyên cần thiết cho việc làm game Khi import cũng như sửa chữa, trạng thái của asset ngay lập tức được cập nhật Server chạy trên database opensource PostgreSQL và có thể truy cập trên cả Mac lẫn Windows, Linux Asset Server đòi hỏi một khoản phí phụ trội là $499 cho mỗi bản copy Unity, và một license Unity Pro

1.3 Các khái niệm cơ bản trong Unity

1.3.1 Asset

Đây là kho tài nguyên cho việc xây dựng game trong một project của Unity Các tài nguyên này có thể là hình ảnh, âm thanh, hoặc một mô hình 3D có sẵn Unity sẽ tham chiếu đến các tập tin chúng ta sẽ sử dụng để tạo ra các tài nguyên cho trò chơi Đây là lý do tại sao trong bất kỳ thư mục chứa project sử dụng Unity thì tất

cả các tập tin tài nguyên phải được lưu trữ trong một thư mục con tên là Assets

Hình 1.4 Asset trong Unity

1.3.2 Scene

Trong Unity, chúng ta có thể xem Scenes là các màn chơi, cấp độ chơi riêng

lẻ, hoặc các vùng của nội dung trò chơi Ví dụ như Main menu, Options, About … Bằng cách xây dựng trò chơi với nhiều cảnh, chúng ta sẽ có thể phân phối thời gian tải và thử nghiệm các phần khác nhau của trò chơi riêng lẻ một cách nhanh chóng và chính xác

Trang 16

Hình 1.5 Các scene của Unity

1.3.3.Game Object

Khi một tài nguyên được sử dụng trong một scene, khi đó chúng ta có thể coi tài nguyên này là một “Game Object” mới Mỗi GameObject phải chứa ít nhất một thành phần, đó là thành phần “Transform” Transform chứa các phép để biến đổi góc quay, tỷ lệ hay tịnh tiến của đối tượng Từ đây trong báo cáo này chúng em sẽ

gọi GameObject trong cửa sổ Hierarchy là đối tượng game

Trang 17

1.3.4 Component

Component là các thành phần trong một Game Object của Unity Bằng cách đính kèm các thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các phần mới của game engine vào đối tượng Thông thường các thành phần này được Unity xây dựng sẵn như ánh sáng, camera, particle, hiệu ứng vật lý…

Hình 1.7 Các thành phần trong đối tượng Camera

1.3.5 Script

Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là linh hồn của game Chúng ta có thể viết kịch bản cho game bằng C#, Java Scripts, hoặc Boo (một dẫn xuất của ngôn ngữ Python) Theo nhiều người đã sử dụng Unity

Trang 18

thì code bằng C# sẽ giúp game chạy nhanh hơn và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng Mặt khác ngôn ngữ C# rất tiện dụng để lập trình, nên trong luận văn này, chúng em dùng ngôn ngữ C# để viết kịch bản cho

game Mỗi file script C# là một class bắt buộc kế thừa từ lớp MonoBehaviour, có

tên class phải trùng với tên file script

Hình 1.8 Cách tạo file script mới

Giao diện code C# rất quen thuộc khi edit trên Visual Studio 2005

Trang 19

Hình 1.9 Lập trình Unity bằng C# trên Visual Studio

Một đoạn script muốn thực thi được thì nó phải được gắn vào một đối tượng

Hình1.10 Một file script đang gắn vào đối tượng

Trang 20

1.3.6 Prefab

Hãy tưởng tượng Prefab là một cái thùng rỗng, mà bên trong nó chúng ta có thể chứa đựng các thành phần hay đối tượng khác nhau, chúng ta có thể viết kịch bản cho hành động của Prefab (khởi tạo, di chuyển, hay hủy đối tượng) Chúng ta

có thể sử dụng đối tượng này nhiều lần trong trò chơi, và cũng có thể sử dụng lại cho project khác Prefab cho phép chúng ta lưu trữ các đối tượng, toàn bộ thành phần bên trong và cấu hình hiện tại

1.3.7 Material và Shader

Shader là đoạn script qui định cách thức render của chất liệu trên bề mặt vật thể Material sử dụng shader để làm chất liệu cho mô hình Giữa materials và shaders có mối liên hệ với nhau Shaders qui định các thuộc tính cần để shader làm việc Còn material cho phép gán hình ảnh vào các thuộc tính đó từ Asset

Hình 1.11 Material và Shader

Trang 21

1.4 Sơ nét về giao diện của Unity

Giao diện Unity, giống như nhiều môi trường làm việc khác, layout có thể tùy chỉnh Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt Chúng ta hãy xem xét một cách bố trí giao diện Unity điển hình:

Hình 1.12 Giao diện Editor của Unity

Như hình trên chúng ta thấy có 5 khung khác nhau:

o Scene [1] – nơi xây dựng trò chơi

o Hierarchy [2] – danh sách các GameObject trong một cảnh game

o Inspector [3] – màn hình cài đặt cho tài nguyên/đối tượng đang được chọn

o Game [4] – cửa sổ xem trước game, chỉ hoạt động ở chế độ chơi (khi nhấn Play)

o Project [5] – danh sách các tài nguyên trong project, đóng vai trò như một thư viện

1.4.1 Cửa sổ Scene và Hierarchy

Cửa sổ Scene là nơi chúng ta sẽ xây dựng toàn bộ các đối tượng trong game Cửa sổ cung cấp nhiều góc nhìn khác nhau, có thể nhìn dạng phối cảnh hoặc dạng song song Chúng ta có thể kéo thả đối tượng trên cửa sổ này, di chuyển, xoay…

Trang 22

Cửa sổ Scene cũng kèm theo bốn nút điều khiển tiện lợi như hình trên Truy cập từ bàn phím bằng cách sử dụng các phím Q, W, E, và R Các phím thực hiện các hoạt động sau đây:

o Công cụ bàn tay [Q]: công cụ này cho phép di chuyển trong cửa sổ Scene, xoay góc nhìn, phóng to, thu nhỏ góc nhìn

o Công cụ di chuyển [W]: Công cụ này dùng để di chuyển một đối tượng

o Công cụ xoay [E]: Công cụ này cho phép chúng ta xoay nhân vật theo một trục nào đó trong không gian

o Công cụ tỷ lệ [R]: Công cụ này cho phép chúng ta tăng giảm tỷ lệ kích thước của đối tượng

Khi chọn một đối tượng trong cửa sổ Scene, đối tượng này sẽ được tự động chọn trong cửa sổ Hierarchy và ngược lại

Hình 1.13 Chọn đối tượng trong Scene và Hierrarchy

Trang 23

1.4.2 Inspector

Inspector sẽ hiển thị tất cả thông tin, các thành phần trong đối tượng game đang chọn, và cho phép điều chỉnh các biến của các thành phần này Có thể xem cửa sổ này như cửa sổ Properties khi design giao diện Winform trên Visual Studio

Hình 1.14 Cửa sổ Inspector hiển thị thông tin một đối tượng

1.4.3 Cửa sổ Game

Cửa sổ này sẽ hiển thị những gì có trong cửa sổ Scene và sẽ hoạt động khi nhấn nút Play Trong cửa sổ này chúng ta có thể chọn các kích cỡ hiển thị khác nhau để build cho các loại máy khác nhau Chúng ta có thể chơi thử game trên cửa

sổ này khi đã nhấn nút Play Lưu ý rằng khi cửa sổ này hoạt động rồi thì mọi chỉnh sửa trên cửa sổ Scene và cài đặt cho các đối tượng chỉ là tạm thời và khi nhấn nút Stop, cửa sổ này về lại trạng thái tĩnh thì mọi chỉnh sửa trước đó là không còn

1.4.4 Cửa sổ Project

Cửa sổ Project thể hiện nội dung bên trong thư mục Assets của project chúng

ta Khi thêm tài nguyên vào thư mục Assets ngay lập tức chúng sẽ tự động được cập nhập vào project Unity của chúng ta

Trang 24

1.5 Tổng quan kiến trúc engine Unity

1.5.1 Kiến trúc tổng quan

Engine Unity hỗ trợ cho chúng ta UnityAPI để viết script game UnityAPI là API lập trình game trong Unity rất mạnh UnityAPI chứa các đối tượng và phương thức hỗ trợ hầu hết các đối tượng và các loại thành phần trong Unity

Trong một scene thường có nhiều đối tượng game Mỗi đối tượng này có thể

có hoặc không có đoạn script nào gắn lên đó Nếu muốn gắn script vào đối tượng, ta

bắt buộc phải kế thừa class đó từ lớp MonoBehaviour của UnityAPI và tên class

phải trùng với tên file script Mỗi script khi gắn lên đối tượng game đều được đối tượng game xem như một thành phần bên trong và được cấp phát vùng nhớ khi chạy game

Trang 25

Bên trong UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có một

số lớp quan trọng như :

o MonoBehaviour: tất cả các script muốn gắn vào một đối tượng game bắt buộc phải kế thừa từ lớp này

o GameObject: lớp cha của tất cả các thực thể trong scene

o Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng

o Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình

o Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc

o Camera: giúp lập trình camera

o Light: giúp tạo ánh sáng trong game

o Projector: giúp chiếu texture lên bề mặt vật thể

o ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt

o Audio: hỗ trợ lập trình với âm thanh

o Animation: chạy chuyển động của mô hình nhân vật

o 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,

o CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình

o Collider: hỗ trợ lập trình va chạm giữa các vật thể

o GUI: giúp lập trình giao diện người dùng trên Unity

1.5.2 Chu kỳ sống của thành phần script gắn trên đối tượng game

Chu kỳ sống của một thành phần script được tính kể từ khi scene được chạy cho đến lúc scene bị tắt hoặc chuyển sang scene khác

Trang 26

Hình 1.16 Chu kỳ sống của thành phần script

Tùy theo trạng thái của scene mà sự kiện tương ứng sẽ được gọi

o Awake: được gọi khi script được load xong

o Start: được gọi khi script được load xong nếu thành phần script đó không

Trang 27

1.6 Tạo và cấu hình với dự án 2D

Trang 28

a Cấu hình dự án 2D

- Sau khi tạo dự án xong, ở Hierarchy sẽ có một đối tượng là Main Camera Chúng

ta cần điều chỉnh kiểu hiển thị Scene là 2D

- Ở cửa sổ Hierarchy chọn Main Camera Ở cửa sổ 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

Trang 29

- Kết quả như hình sau:

1.7 Tạo các đối tượng cơ bản

1.7.1 Game Object

a Empty Object

- Ở menu ta chọn GameObject, chọn Create Empty

- Ta có thể đổi tên, sao chép hay xoá các đối tượng thông qua cửa sổ này

- Empty game object là một đối tượng đơn giản nhất, khi mới tạo ra, chỉ chứa các thông số biến đổi (transform) ngoài ra nó sẽ không chứa bất kỳ một component nào cả Chúng ta có thể thêm các component hoặc để nhóm các đối tượng khác lại với nhau thành một nhóm, hoặc sử dụng các empty object cho các mục đích khác

Trang 30

b Parent object và Child object

- Parent object: là một đối tượng chứa các đối tượng con khác, gắn liền với nhau

- Child object: là một đối tượng nằm trong một đối tượng khác, gắn liền với nhau

- Để tạo các đối tượng parent và child, ta chỉ việc kéo thả một đối tượng có sẵn vào trong đối tượng đã có trong cửa sổ Hierarchy Khi thay đổi các đối tượng con thì chỉ có tác động trên đối tượng con đó

- Khi thay đổi đối tượng cha thì các đối tượng con sẽ thay đổi theo

c Tag

- Tag là một thuộc tính của của một game object Ta sử dụng thuộc tính này mục đích xác định và phân biệt các đối tượng với nhau, khi xử lý sự kiện hay bất kể vấn đề gì cần

- Thêm Tag mới

Trang 31

- Danh sách các Tag đã tạo

1.7.2 Sprite

- Có 2 loại sprite là Single sprite và Multiple sprite

+ Single sprite:

Ở cửa sổ Project, chọn thư mục Assets, R-Click vào thư mục Sprites,

chọn Import New Assets, sau đó tìm đến một hình ảnh nào đó (Sử dụng hai ảnh

ground.png và coin_gold.png, để tiếp tục làm game ở các phần sau)

Trang 32

Ở cửa sổ Inspector, chọn Texture Type là Sprite, Sprite Model là single, sau

đó nhấn Apply

+ Multiple sprite:

Tiến hành tương tự, Import New Assets, chọn đến một tập tin ảnh chứa nhiều Sprite như ở ví dụ trên, sau đó ở cửa sổ Inspector chọn Texture Type là Sprite, Sprite Model là Multiple Xong nhấn Apply

Trang 33

Tiếp theo ta cần xác định các vùng bao, để xác định các sprite con thuộc Multiple sprite vừa import vào đó bằng cách ở bảng Inspector chọn Sprite Editor

Ở cửa sổ Sprite Editor, ta chọn Slice, sau đó để mặc định các thông số, chọn nút Slice, Unity sẽ tự động xác định vùng bao nhỏ nhất cho các sprite cho chúng

ta Hoặc chúng ta có thể tự dùng chuột để xác định các vùng bao này

Sau đó nhấn nút Apply ở cửa sổ Sprite Editor để áp dụng

Vậy là ta đã tạo xong hai loại sprite bằng Unity

c Thêm Sprite render cho Empty GameObject

- Tạo một Empty GameObject, đặt tên là Ground Sau đó chọn đối tượng này, ở

cửa sổ Inspector ta chọn Add Component sau đó chọn Rendering, chọn Sprite Render

Trang 34

- Tiếp theo, ở mục Sprite Render ở cửa sổ Inspector, ta chọn Sprite để vẽ (Nút khoan tròn đỏ) hoặc ta có thể kéo thả trực tiếp vào đó

1.7.3 Animation

Trang 35

- Một animation trong Unity có thể bao gồm nhiều hành động, một hành động như vậy gọi là một clip

Ví dụ: một nhân vật có thể có các hành động đi, đứng, nhảy

- Có hai kỹ thuật để tạo animation (cả 2D và 3D): đó là kỹ thuật key frame và kỹ thuật skeletal hay spine

a Kỹ thuật tạo animation

- Kỹ thuật key frame

- Đối với kỹ thuật key frame, người ta sử dụng một sprite cho một key frame của hành động

- Mỗi sprite là một Key Frame

- Để tạo ra chuyển động, ta sẽ vẽ một key frame tại thời điểm đầu và thay đổi tuần

tự các key frame sau, chúng ta sẽ có được một animation

- Đây là phương pháp đơn giản nhất để tạo chuyển động, nhưng lại tốn kém về bộ nhớ, vì ta phải tốn nhiều sprite cho nhiều chuyển động khác nhau

- Kỹ thuật skeletal hay spine hay bộ xương

- Đối với kỹ thuật này, người ta chia đối tượng ra thành nhiều sprite, mỗi sprite là một bộ phận của đối tượng (giống như 1 khúc xương của bộ xương) Để tạo ra một key frame mới, ta sẽ thay đổi các sprite về vị trí, độ lớn, xoay của các sprite thành phần có liên quan đến chuyển động Sau đó kết hợp các key frame lại với nhau như kỹ thuật key frame để tạo thành các animation

Trang 36

- Chúng ta có thể xem các sprite cấu tạo nên một key frame ở ảnh dưới

- Cách này có vẻ tốn thời gian hơn, nhưng lại rất là hiệu quả, đặc biệt là tiết kiệm được nhiều bộ nhớ

b Tạo animation bằng Unity

- Cách tạo animation theo kỹ thuật Key Frame Cách tạo animation theo skeletal cũng tương tự

- Từ phần trước chúng ta đã tạo được những Sprite cơ bản như sau:

+ Bước 1: Tạo một Empty GameObject đặt tên là MainCharacter (Parent

Object)

+ Bước 2: Tạo một đối tượng Empty GameObject nữa, đặt tên là Animations, là

đối tượng con của MainCharacter (Đối tượng con nên đặt ở vị trí 0,0,0) + Bước 3: Thêm Sprite Render cho đối tượng con Animations vừa tạo Rồi chọn

sprite hiển thị mặc định cho Animation này Kết quả như sau:

Trang 37

+ Bước 4: Chọn đối tượng MainCharacter ở cửa sổ Hierarchy, rồi chọn Menu ->

Window -> Animation

- Một cửa sổ Animation editor hiện ra như sau:

+ Hình chữ nhật đỏ nhỏ: nút play để xem trước animation

+ Hình chữ nhật đỏ lớn: danh sách các clip hiện thời của aniamtion

+ Hình chữ nhật vàng: thanh key frame

- Đầu tiên ta sẽ click vào danh sách clip rồi chọn Create New Clip, ta đặt tên clip

là Running, rồi save lại ở thư mục Animations của Assets

- Bước 5: Ở cửa sổ Animation Editor, chọn Add Curve, chọn Animations (Đối tượng con của đối tượng MainCharacter) chọn Sprite Render, chọn Sprite

(Đối với một clip bất kỳ, bước này bắt buộc phải có)

4 Prefab

- Prefab cho ta tạo ra các bản sao nhanh của một đối tượng mà không cần thiết lập lại các giá trị khởi tạo của một đối tượngnào đó ngoài trừ các giá trị transform (vị trí, tỉ lệ, quay)

Ngày đăng: 23/04/2017, 10:26

HÌNH ẢNH LIÊN QUAN

Hình 1.8. Cách tạo file script mới - Xây dựng game night mareban gunity3d
Hình 1.8. Cách tạo file script mới (Trang 18)
Hình 1.13. Chọn đối tượng trong Scene và Hierrarchy - Xây dựng game night mareban gunity3d
Hình 1.13. Chọn đối tượng trong Scene và Hierrarchy (Trang 22)
Hình 1.16. Chu kỳ sống của thành phần script - Xây dựng game night mareban gunity3d
Hình 1.16. Chu kỳ sống của thành phần script (Trang 26)
Hình 2.2. Biểu đồ trình tự giao diện chính - Xây dựng game night mareban gunity3d
Hình 2.2. Biểu đồ trình tự giao diện chính (Trang 48)
Hình 2.3. Biểu đồ trình tự chơi game - Xây dựng game night mareban gunity3d
Hình 2.3. Biểu đồ trình tự chơi game (Trang 49)
Hình 2.4. Biểu đồ trình tự giao diện menu - Xây dựng game night mareban gunity3d
Hình 2.4. Biểu đồ trình tự giao diện menu (Trang 50)
Hình 3.1. Máy chơi game đầu tiên - Xây dựng game night mareban gunity3d
Hình 3.1. Máy chơi game đầu tiên (Trang 54)
Hình 3.2. Thế hệ máy console đầu tiên - Xây dựng game night mareban gunity3d
Hình 3.2. Thế hệ máy console đầu tiên (Trang 55)
Hình 3.3. Máy tính cá nhân phát triển mạnh - Xây dựng game night mareban gunity3d
Hình 3.3. Máy tính cá nhân phát triển mạnh (Trang 56)
Hình 3.4. Game elite - Xây dựng game night mareban gunity3d
Hình 3.4. Game elite (Trang 57)
Hình 3.6. Game Playstation đầu tiên về bắn máy bay - Xây dựng game night mareban gunity3d
Hình 3.6. Game Playstation đầu tiên về bắn máy bay (Trang 59)
Hình 3.7. Game MMO phát triển - Xây dựng game night mareban gunity3d
Hình 3.7. Game MMO phát triển (Trang 60)
Hình 3.8. Game Call of Duty - Xây dựng game night mareban gunity3d
Hình 3.8. Game Call of Duty (Trang 61)
Hình 3.9. Game Angry Birds - Xây dựng game night mareban gunity3d
Hình 3.9. Game Angry Birds (Trang 62)
Hình 3.12.Game có lỗi chơi gần giống game ZombieWood - Xây dựng game night mareban gunity3d
Hình 3.12. Game có lỗi chơi gần giống game ZombieWood (Trang 65)

TỪ KHÓA LIÊN QUAN

w