Game đua ô tô sử dụng 3d max tạo nhân vật và các chướng ngại vật, chạy trên hệ điều hành android
Trang 1Mục Lục :
CHƯƠNG I : CƠ SỞ LÝ THUYẾT 3
1 GAME : 3
2 CÔNG NGHỆ : 3
3 CƠ SỞ LÝ THUYẾT : 3
3.1 Hệ điều hành Android : 3
3.2 Java : 8
3.3 Giới thiệu về công cụ lập trình Unity : 11
3.4 AutoDesk 3DS Max : Tạo và chỉnh sửa đối tượng 3D (ô tô) trong Game.29 CHƯƠNG II : ĐẶC TẢ CHO LẬP TRÌNH 30
1 MÔ TẢ BÀI TOÁN : 30
1.1 Giới thiệu 30
1.2 Mô tả chung : 30
1.3 Yêu cầu chi tiết 30
2 THIẾT KẾ : 34
2.1 Xác định tác nhân 34
2.2 Xác định các ca sử dụng của hệ thống 34
2.3.Đặc tả các ca sử dụng 35
2.4 Tìm lớp : 39
CHƯƠNG III : XÂY DỰNG TRÒ CHƠI ĐUA Ô TÔ 41
1 CODE : CÁC LỚP CHÍNH : 41
1.1 Lớp Player : 41
1.2 Lớp CarCamera : 42
1.3 Lớp Score : 43
2 THIẾT KẾ ĐỒ HỌA : 45
2.1 Các đối tượng trong trò chơi : 45
2.1.1 Xe đua : 45
2.1.2 Chướng ngại vật : 46
2.2 Giao điện bắt đầu trò chơi : 46
2.3 Giao diện chơi : 47
Trang 22.4 Giao diện khi tạm dừng trò chơi 47
2.5 Giao diện kết thúc trò chơi : 48
2.6 Bản đồ chơi : 49
2.7 Giao diện Infor : 49
CHƯƠNG IV : KẾT LUẬN : 50
Tài liệu tham khảo : 51
DANH MỤC HÌNH ẢNH Hình 1 : giao diện Unity 13
Hình 2 : Collider theo các hình tương ứng 15
Hình 3 : Giao diện Mono Developer 16
Hình 4 : giao diện terrain 17
Hình 5 : công cụ Raise and lower the terrain height 18
Hình 6 : Paint the terrain texture 19
Hình 7 : ảnh minh họa sử dụng công cụ Paint the terrain texture 20
Hình 8 : Place Trees 20
Hình 9 : ảnh kết quả thực hiện các bước trên 20
Hình 10 : giao diện công cụ Place plants, stones and other small foilage 21
Hình 11 : kết quả sử dụng Place plants, stones and other small foliage 21
Hình 12 : Setting for the terrain 22
Hình 13 : công cụ Translate 23
Hình 14 : công cụ Rotate 23
Hình 15: công cụ Scale 24
Hình 16 : Cửa sổ Scene 25
Hình 17 : Cửa sổ Game 25
Hình 18 : cửa sổ InSpetor 26
Hình 19 : cửa sổ Project 27
Hình 20 : Cửa sổ Hierarchy 27
Hình 21 : Các phím sự kiện trong Unity (InPut) 28
Hình 22 : Giao diện AutoDesk 3DS Max 29
Hình 23 : Biểu đồ ca sử dụng 35
Hình 24 : Xe đua 45
Hình 25 : Giao điện bắt đầu trò chơi 46
Hình 26 : Giao diện chơi 47
Hình 27 : Giao diện tạm dừng trò chơi 47
Hình 28 : Giao Diện Thua 48
Hình 29 : Giao Diện Thắng 48
Trang 3CHƯƠNG I : CƠ SỞ LÝ THUYẾT.
1 GAME :
Thể loại: Game tốc độ
Nội dung: người chơi điều khiển xe hoàn thành 4 vòng đua trong thời gian
là 3 phút, trên vòng đua sẽ có một số chướng ngại vật như :
+10 : cộng thêm 10 điểm vào số điểm hiện có
-10 : Trừ 10 điểm từ số điểm hiện có
Chướng ngại vật làm giảm tốc độ của xe trong thời gian 5s
Chướng ngại vật làm đảo lộn điều khiển xe trong thời gian 5s
Kết thúc trò chơi : +) khi hết thời gian mà chưa hoàn thành xong 4vòng đua, không hiển thị điểm có thể chơi lại hoặc thoát
+) khi chưa hết thời gian mà hoàn thành xong 4vòng đua, hiển thị điểm của người chơi, có thể chơi lại hoặc thoát
3.1.1 Khái niệm về Androi :
Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một
số đầu phát HD, HD Player, TV) phát triển bởi Google và dựa trên nền tảng
Linux
Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó
Trang 4Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng
cho hệ điều hành của mình.Hiện tại có khoảng 70,000 ứng dụng cho Android os
và vào khoảng 100,000 ứng dụng đã được đệ trình, điều này khiến Android trở
thành hệ điều hành di động có môi trường phát triển lớn thứ 2 Các nhà phát triển
viết ứng dụng cho Android dựa trên ngôn ngữ Java
Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành
lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng,
phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di
động trong tương lai
Google công bố hầu hết các mã nguồn của Android theo bản cấp phép
Apache Hệ điều hành Android bao gồm 12 triệu dòng mã; 3 triệu dòng XML,
2.8 triệu dòng mã C, 2.1 triệu mã Java và 1.75 triệu dòng mã C++
3.1.2 Lịch sử phát triển của Android:
Tháng 7 năm 2005, Google mua lại Android, Inc., một công ty nhỏ mới
thành lập có trụ sở ở Palo Alto, California, Mỹ Những nhà đồng sáng lập của
Android chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lập
công ty Danger), Rich Miner (đồng sáng lập công ty Wildfire Communications),
Nick Sears (từng là phó chủ tịch của T-Mobile), và Chris White (trưởng nhóm
thiết kế và phát triển giao diện tại WebTV) Khi đó, có rất ít thông tin về các
công việc của Android, ngoại trừ việc họ đang phát triển phần mềm cho điện
thoại di động Điều này tạo những tin đồn về việc Google có ý định bước vào thị
trường điện thoại di động
Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị
di động dựa trên hạt nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị
cầm tay và các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm
dẻo, có khả năng nâng cấp mở rộng cao.[cần dẫn nguồn] Một số nguồn tin cho
biết trước đó Google đã lên danh sách các thành phần phần cứng và các đối tác
phần mềm, đồng thời ra hiệu với các nhà mạng rằng họ sẵn sàng hợp tác ở nhiều
cấp độ khác nhau Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường
điện thoại di động xuất hiện trong tháng 12 năm 2006 Tin tức của BBC và Nhật
báo phố Wall chú thích rằng Google muốn đưa công nghệ tìm kiếm và các ứng
dụng của họ vào điện thoại di động và họ đang nỗ lực làm việc để thực hiện điều
này Các phương tiện truyền thông in và online cũng sớm có bài viết về những
tin đồn cho rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu
Google Và lại càng có nhiều suy đoán sau bài viết về việc Google đang định
nghĩa các đặc tả công nghệ và trình diễn các mẫu thử với các nhà sản xuất điện
thoại
Trang 53.1.3 Đ c tính m c a Android : ặc tính mở của Android : ở của Android : ủa Android :
Android được xây dựng để cho phép các nhà phát triển để tạo ra các ứng
dụng di động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cung cấp Nó được
xây dựng để được thực sự mở Ví dụ, một ứng dụng có thể kêu gọi bất kỳ chức
năng lõi của điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản, hoặc bằng
cách sử dụng máy ảnh, cho phép các nhà phát triển để tạo ra phong phú hơn và
nhiều hơn nữa những kinh nghiệm cố kết cho người dùng Android được xây
dựng trên mở Linux Kernel Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được
thiết kế để tối ưu hóa bộ nhớ và tài nguyên phần cứng trong một môi trường di
động Android là mã nguồn mở, nó có thể được liberally mở rộng Nền tảng này
sẽ tiếp tục tiến triển như cộng đồng nhà phát triển công việc cùng nhau để xây
dựng các ứng dụng di động sáng tạo
3.1.4 Các phiên bản Android :
Hệ điều hành Android đã trải qua chặng đường năm năm phát triển,
hàng loạt phiên bản mang nhiều cải tiến ra mắt Sau đây là các tính năng
chủ chốt trong các phiên bản Android từ khi ra mắt đến nay.
Android 1.0 :
Ra mắt: ngày 23-11-2008
HTC Dream là dòng smartphone thương mại dùng Android đầu tiên với
kiểu dáng trượt kèm bàn phím vật lý Phiên bản Android 1.0 chưa được Google
định hình tên mã, dù trước đó tên gọi Astro Boy hay Bender được gán cho thế hệ
đầu tiên này
Android 1.0 rất nguyên sơ, tích hợp sẵn khả năng đồng bộ dữ liệu với các
dịch vụ trực tuyến của Google như Gmail, Google Calendar và Contacts, một
trình phát media, hỗ trợ Wi-Fi và Bluetooth, thanh trạng thái hiển thị các thông
báo ứng dụng và một ứng dụng chụp ảnh (camera) tuy chưa cho phép thay đổi độ
phân giải và chất lượng ảnh
Android 1.1 :
Ra mắt: ngày 9-2-2009
Bên cạnh con số, Google rục rịch đưa hệ thống tên gọi (tên mã) vào các
phiên bản Android Tuy chưa chính thức áp dụng nhưng Android 1.1 đã có tên
Petit Four Không bao gồm nhiều tính năng, phiên bản này bổ sung một số chức
năng mới cho Google Maps hiển thị chi tiết hơn, bàn phím ảo gọi điện thoại đã
có thể hiển thị hoặc ẩn khi gọi, chương trình SMS cho phép người dùng lưu tập
tin đính kèm Android 1.1 sửa một số lỗi trong Android 1.0
Android 1.5 : CupCake
Ra mắt: ngày 30-4-2009
Cupcake, tên mã đầu tiên áp dụng cho phiên bản Android Cupcake mang
Trang 6ngữ do người dùng đặt ra, hỗ trợ widget trên giao diện chủ, quay phim và phát lại
video clip, lược sử thời gian cuộc gọi, chế độ tự động xoay màn hình theo hướng
sử dụng (screen rotation) Trình duyệt web trong Cupcake có thêm khả năng sao
chép/ dán (copy/paste)
Ngoài ra, phiên bản này cho phép người dùng hiển thị hình ảnh trong danh
bạ, một điểm thú vị mà hầu hết người dùng điện thoại di động muốn có Màn
hình chuyển đổi và hình ảnh khi khởi động máy được làm mới
Android 1.6 : Donut
Ra mắt: ngày 30-9-2009
Donut khắc phục các chức năng "lỏng lẻo" trong Cupcake, mở rộng chức
năng tìm kiếm bằng giọng nói và ký tự đến bookmark và danh bạ Android
Market trở thành "chợ đầu mối" để người dùng tìm kiếm và xem các ứng dụng
Android Ứng dụng chụp ảnh và quay phim trong Donut nhanh hơn Hệ điều
hành hỗ trợ màn hình có độ phân giải lớn hơn, hướng đến các thế hệ smartphone
màn hình lớn
Android 2.0 : Eclair1
Ra mắt: ngày 26-10-2009
Chỉ sau gần một tháng ra mắt Donut (Android 1.6), Google tung ra Eclair,
phiên bản được nhận định là "bước đi lớn" của hệ điều hành này
Eclair cải tiến rất nhiều, từ giao diện đến ứng dụng bên trong hệ thống
Ứng dụng chụp ảnh tăng cường thêm chức năng zoom số (phóng to), cân bằng
trắng, hỗ trợ đèn flash và các hiệu ứng màu sắc
Hệ thống hoạt động ổn định hơn, cải thiện khả năng xử lý, hỗ trợ kết nối
Bluetooth tốt hơn, đặc biệt tùy chọn đồng bộ nhiều tài khoản Một điểm thuận
tiện được đánh giá cao lúc bấy giờ là giao diện danh bạ cho phép nhấn chọn vào
một ảnh danh bạ để gọi, nhắn tin hay email đến họ Giao diện ứng dụng lịch biểu
(Calendar) cũng thay đổi
Eclair là phiên bản Android đầu tiên hỗ trợ ảnh nền động (live wallpaper)
dù tùy chọn này tiêu tốn khá nhiều pin
Android 2.2 : Froyo
Ra mắt: ngày 20-5-2010
Từ phiên bản 2.0 trở đi, Android dần hoàn thiện hơn Phiên bản 2.2
(Froyo) mang Adobe Flash đến Android, kéo theo hàng loạt ứng dụng và game
trên nền Flash Người dùng cũng có thể xem video clip nền Flash như YouTube
và "ra lệnh" thực hiện cuộc gọi qua Bluetooth
Trang 7thiết bị phát sóng Wi-Fi từ kết nối 3G Tính năng này được sử dụng rất phổ
biến đến ngày nay
Lần đầu tiên Android cho phép cài đặt ứng dụng (app) lên thẻ nhớ SD
thay vì mặc định cài ngay vào bộ nhớ trong của thiết bị Điểm "đầu tiên" nữa
trong Froyo bao gồm mật khẩu đã hỗ trợ số và chữ số Thiết bị đầu tiên mang
nhãn Froyo ra mắt thị trường là HTC Nexus One
Android 2.3 : Gingerbread
Ra mắt ngày: 6-12-2010
Đến cuối năm 2012, Gingerbread vẫn đang "phủ sóng" trên rất nhiều thiết
bị dùng Android, chiếm đến hơn phân nửa (54%) Google hợp tác Samsung trình
làng dòng smartphone đầu tiên sử dụng Gingerbread mang tên Nexus S, hỗ trợ
công nghệ giao tiếp tầm gần NFC
Gingerbread đưa vào hệ thống một công cụ quản lý tải tập tin, cho phép
theo dõi và truy xuất đến các tập tin đã tải về máy Hệ thống này hỗ trợ nhiều
camera cho các thiết bị có camera mặt sau và trước, quản lý nguồn pin hiệu quả
hơn, tiết kiệm thời lượng pin Phiên bản này khắc phục khá nhiều lỗi từ Froyo,
kèm theo một số điều chỉnh trong giao diện người dùng
Android 3.0 : Honeycomb
Ra mắt: ngày 22-2-2011
Đây không chỉ là một phiên bản, mà có thể xem là một thế hệ Android đầu
tiên dành riêng cho máy tính bảng (tablet), ra mắt cùng tablet Motorola XOOM
Mang những tính năng từ thế hệ Android 2.x, Android 3.0 cải tiến giao diện phù
hợp với cách sử dụng máy tính bảng, bàn phím ảo thân thiện hơn, hỗ trợ xử lý đa
tác vụ (multi-tasking), cho phép chuyển đổi qua lại các ứng dụng đang cùng
chạy Không chỉ có bề mặt được trau chuốt, phần lõi hệ thống có các cải tiến
tương thích với phần cứng như hỗ trợ chip xử lý (CPU) đa lõi, tăng tốc phần
cứng
Android 3.0 đặt nền móng quan trọng cho thế hệ Android 4.x hợp nhất,
khắc phục sự phân mảng của Android (có các phiên bản riêng dành cho
smartphone và tablet)
Android 4.0 : Ice Cream Sandwich
Ra mắt: ngày 19-10-2011
"Bánh kem sandwich" (ICS) là thế hệ Android được mong đợi nhất đến
nay, ra đời cùng dòng smartphone "bom tấn" Samsung Galaxy Nexus, thế hệ
smartphone đầu tiên trang bị ICS
Android 4.0 đưa chức năng truy xuất nhanh các ứng dụng thường dùng vào phần
bên dưới giao diện chủ, tùy biến widget, dễ sắp xếp và duyệt danh sách ứng dụng
hơn Các ứng dụng đã có thể truy xuất nhanh từ màn hình khóa thiết bị (Lock
screen), hiện các hãng sản xuất thiết bị chỉ mới cho phép Camera có thể chọn
nhanh từ Lock screen
Ice Cream Sandwich hoạt động mượt mà, nhanh và đẹp hơn
Trang 8Android 4.1 : Jelly Bean
Ra mắt: 9-7-2012
Máy tính bảng Nexus 7, sản phẩm hợp tác giữa Google và Asus, là thiết bị
dùng Jelly Bean đầu tiên ra mắt Android 4.1 nâng tầm hoạt động cho hệ điều
hành của Google, trở thành hệ điều hành cho thiết bị di động hàng đầu hiện nay
Khả năng sắp xếp giao diện chủ và widget trong Jelly Bean rất tùy biến và
linh hoạt Hệ thống hỗ trợ dịch vụ ví điện tử Google Wallet, đặc biệt trình duyệt
web mặc định trong Android được thay thế bởi đại diện tên tuổi: Chrome, với
khả năng đồng bộ dữ liệu theo tài khoản với bản Chrome trên máy tính
Jelly Bean giới thiệu Google Now, dịch vụ trực tuyến mới hiện chỉ dành
cho Android, một phụ tá ảo đắc lực cho công việc sắp xếp lịch trình, tìm kiếm
thông tin, xác định vị trí Rất đa năng và được xem như lời đáp trả của Google
với "phụ tá ảo" Apple Siri trong iOS
Android 4.2 : Jelly Bean
Ra mắt: tháng 11-2012
Chỉ sau gần năm tháng ra mắt Android 4.1, Google tiếp tục ra mắt phiên
bản 4.2 và vẫn mang tên mã Jelly Bean
Android 4.2 tiếp tục mang đến những cải tiến hấp dẫn cho ứng dụng chụp
ảnh (Camera) như HDR, Photo Sphere, hiệu ứng ảnh, Google Now, đưa tính
năng lướt chọn từ rất hay trong bàn phím ảo Chức năng "bom tấn" hỗ trợ nhiều
tài khoản người dùng (multi-user profile) lần đầu tiên được áp dụng trong
Android 4.2 nhưng chỉ có người dùng máy tính bảng thừa hưởng chức năng này
Tương lai Android X
Nhiều dự đoán cho rằng thế hệ Android 5.0 kế tiếp sẽ có tên mã "Key Lime
Pie" và thế hệ thiết bị Nexus mới của Google sẽ một lần nữa trở thành "đại diện
đầu tiên" sở hữu nền tảng mới này Android sẽ dần xóa nhòa lằn ranh giữa hệ
điều hành cho thiết bị di động và hệ điều hành cho máy tính cá nhân, giảm khác
biệt phân mảnh, đem đến những chức năng hơn nữa
3.2 Java :
3.2.1 Lịch sử java :
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệuvào tháng 6 năm 1995 Từ đó, nó đã trở thành một công cụ lập trình của
các lập trình viên chuyên nghiệp Java được xây dựng trên nền tảng của C
và C++ Do vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối
tượng của C++ Ban đầu Java được thiết kế để làm ngôn ngữ viết chương
trình cho các sản phẩm điện tử dân dụng như đầu video, tivi, điện thoại,
máy nhắn tin…
Trang 93.2.2 đặc trưng của java
Đơn giản :
Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học
và quen thuộc với đa số người lập trình Java tựa như C++, nhưng đã lược
bỏ đi các đặc trưng phức tạp, không cần thiết của C và C++ như: thao tác
con trỏ, thao tác định nghĩa chồng toán tử (operator overloading),… Java
không sử dụng lệnh “goto” cũng như file header (.h) Cấu trúc “struct” và
“union” cũng được loại bỏ khỏi Java
Hướng đối tượng
Có thể nói java là ngôn ngữ lập trình hoàn toàn hướng đối tượng,tất cả trong java đều là sự vật, đâu đâu cũng là sự vật
Độc lập với hệ nền:
Mục tiêu chính của các nhà thiết kế java là độc lập với hệ nền haycòn gọi là độc lập phần cứng và hệ điều hành Đây là khả năng một
chương trình được viết tại một máy nhưng có thể chạy được bất kỳ
đâu Các chương trình viết bằng java có thể chạy trên hầu hết các hệ nền
mà không cần phải thay đổi gì, điều này đã được những người lập trình
đặt cho nó một khẩu hiệu ‘viết một lần, chạy mọi nơi’, điều này là không
thể có với các ngôn ngữ lập trình khác.
Hỗ trợ lập trình đa tuyến
Đây là tính năng cho phép viết một chương trình có nhiều đoạn mãlệnh được chạy song song với nhau Với java ta có thể viết các chương
trình có khả năng chạy song song một cách dễ dàng, hơn thế nữa việc
đồng bộ tài nguyên dùng chung trong Java cũng rất đơng giản Điều này là
không thể có đối với một số ngôn ngữ lập trình khác như C/C++, pascal
…
Phân tán
Java hỗ trợ đầy đủ các mô hình tính toán phân tán: mô hìnhclient/server, gọi thủ tục từ xa…
Trang 10Mục tiêu quan trọng của các nhà thiết kế java là tạo điều kiện chocác nhà phát triển ứng dụng có thể viết các chương trình ứng dụng internet
và web một cách dễ dàng, với java ta có thể viết các chương trình sử dụng
các giao thức TCP, UDP một cách dễ dàng, về lập trình web phía máy
khách java có công nghệ java applet, về lập trình web phía máy khách
java có công nghệ servlet/JSP, về lập trình phân tán java có công nghệ
RMI, CORBA, EJB, Web Service
Thông dịch
Các chương trình java cần được thông dịch trước khi chạy, mộtchương trình java được biên dịch thành mã byte code mã độc lập với hệ
nền, chương trình thông dịch java sẽ ánh xạ mã byte code này lên mỗi nền
cụ thể, điều này khiến java chậm chạp đi phần nào
3.2.3 Các kiểu ứng dụng Java
Ứng dụng Applets
Applet là chương trình Java được tạo ra để sử dụng trên Internetthông qua các trình duyệt hỗ trợ Java như IE hay Netscape Applet được
nhúng bên trong trang Web Khi trang Web hiển thị trong trình duyệt,
Applet sẽ được tải về và thực thi tại trình duyệt
Java thích hợp để phát triển ứng dụng nhiều lớp Applet là chương
trình đồ họa chạy trên trình duyệt tại máy trạm Ở các ứng dụng Web, máy
trạm gửi yêu cầu tới máy chủ Máy chủ xử lý và gửi kết quả trở lại máy
trạm Các Java API chạy trên máy chủ chịu trách nhiệm xử lý tại máy chủ
và trả lời các yêu cầu của máy trạm Các Java API chạy trên máy chủ này
Trang 11Form của HTML là cách sử dụng đơn giản nhất của JSP/Servlet Chúng
còn có thể được dùng để xử lý dữ liệu, thực thi các giao dịch và thường
được thực thi thông qua máy chủ Web
Ứng dụng cơ sở dữ liệu
Các ứng dụng này sử dụng JDBC API để kết nối tới cơ sở dữ liệu
Chúng có thể là Applet hay ứng dụng, nhưng Applet bị giới hạn bởi tính
ứng dụng chạy trên các thiết bị di động này Đây là một kiểu ứng dụng
khá hấp dãn, bởi vì các thiết bị di động này ngày càng phổ biến và nhu cầu
có các ứng dụng chạy trên đó, đặc biệt là các ứng dụng mang tính chất giải
trí như game…
3.3 Giới thiệu về công cụ lập trình Unity :
3.3.1 Giới thiệu chung :
Nhà phát triển: Unity Technologies
Phiên bản mới nhất: Unity 4.0
Được viết bởi ngôn ngữ: C++, C#
Phát triển Game cho các hệ điều hành: Windows, Mac OS X (tạo
và đóng gói), Wii, iPhone/iPad, Xbox 360, Androi, PS3(chỉ đóng gói; cần giấy
phép bổ sung cho từng nền tảng)
Giấy phép: Độc quyền
Trang 12Unity là một 3D Game Engine, là một công cụ thiết kế Game dành cho
PC, Mac và nhiều hệ máy di động khác
Unity được sự hỗ trợ của Just-In-Time Compilation (JIT), sử dụng thư
viện mã nguồn mở C++ Mono Bằng việc sử dụng JIT, những Engine như
Unity có thể tận dụng lợi thế của tốc đọ biên dịch Những đoạn code do chúng
ta viết sẽ được Unity biên dịch ra Mono trước khi nó được thực thi Điều này
rất quan trọng cho Game để thực thi code vào những thời điểm cần thiết trong
suốt thời gian chạy (Runtime) Ngoài thư viện Mono, Unity cũng tận dụng
chức năng của những thư viện phần mềm khác vào chức năng của nó, như
Engine mô phỏng vật lý PhysicX của Nvidia, OpenGL và DirectX cho kết
xuất hinhf ảnh 3D, OpenAL cho âm thanh Tất cả các thư viện này được xây
dựng thành những tính năng tự động hoặc công cụ trực quan vào Unity, vì thế
chúng ta không cần phải lo lắng về việc phải học thế nào để sử dụng chúng
một cách riêng lẻ
Unity có một cộng đồng người dùng rất mạnh (rất lớn) luôn chia sẻ những
Plugins, công cụ của họ dưới hình thức gói phần mềm bổ sung
Có thể sản xuất các trò chơi theo tiêu chuẩn chuyên nghiệp, xuất bản 3D
cho cả Mac và PC cũng như sở hữu riêng biệt một Web Player của riêng
mình, Unity là một trong những Game Engine có tốc độ phát triển nhanh
nhất Unity cũng có phiên bản phát triển Game cho hệ máy Wii của Nintendo
va Iphone của Apple, có nghĩa là một khi chúng ta làm chủ được những vấn
đề cơ bản, không chỉ phát triển Game cho máy tính cá nhân mà chúng ta còn
có thể phát triển Game cho các hệ máy console và thiết bị di động
3.3.2 Giao diện Unity :
Trang 13h 1 Hình 1 : giao diện Unity
3.3.3 Các thành phần trong Unity :
3.3.3.1 Assets:
Asset là những tài nguyên xây dựng nên một dự án Unity Từ những tập
tin hình ảnh, mô hình 3D đến các tập tin âm thanh Unity gọi các tập tin mà
chúng ta dùng để tạo nên trò chơi là tài sản (Asstets) Điều này lý giải tại sao tất
cả các tập tin, thư mục của các dự án Unity đều được lưu trữ trong một thư mục
có tên “Assets”
3.3.3.2 Scenes:
Trong Unity, chúng ta cần hiểu một cảnh (hay một phân đoạn) nghĩa là một màn
chơi riêng biệt hoặc một khu vực hay thành phần có trong nội dung của trò chơi
(ví dụ như Game menu) Bằng cách tạo nên nhiều Scene cho trò chơi, chúng ta
có thể phân phối thời gian tải hoặc kiểm tra các thành phần khác nhau của trò
chơi một cách riêng lẽ
Trang 143.3.3.3 Game Object:
Khi Assets được sử dụng trong Scene, chúng trở thành Game Object –
một thuật ngữ được sử dụng trong Unity (đặc biệt là trong mảng lập trình) Tất cả
các Game Object đều chứa ít nhất một thành phần là Transform Transform là
thông tin về vị trí, góc xoay và tỉ lệ của đối tượng, tất cả được mô tả bởi bộ 3 số
X, Y, Z trong hệ trục tọa độ Thành phần này có thể được tùy biến lại trong quá
trình lập trình nhằm thay đổi vị trí, góc quay và tỉ lệ của đổi tượng (so với đối
tượng gốc) qua các đoạn mã Từ các thành phần cơ bản này, chúng ta sẽ tạo ra
Game Object, với các thành phần khác, bổ sung chức năng cần thiết để xây dựng
nên bất kỳ một thành phần nào trong kịch bản Game mà chúng ta đã thiết kế
Components:
Components có nhiều hình thức khác nhau Chúng có thể xác định hành vi, cách
xuất hiện, … hay ảnh hưởng đến các khía cạnh khác nhau trong chức năng của
Game Object trong trò chơi
Bằng cách “gắn” (attach) chúng vào trong Game Object, chúng ta có thể ngay lập
tức áp dụng tác động của chúng lên đối tượng Những Components phổ biến
trong quá trình phát triển trò chơi đều được Unity hỗ trợ sẵn Ví dụ như thành
phần Rigitbody và Collider : 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 đó
Trang 15h 2 Hình 2 : Collider theo các hình tương ứng
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
Để tạo nên các yếu tố tương tác trong trò chơi, chúng ta sẽ sử dụng Script (mã
kịch bản), chúng cũng được xem như là một Components trong Unity
Script:
Được Unity xem như một Component, Script là một thành phần thiết yếu
trong quá trình phát triển trò chơi và đáng đề cập như một khái niệm “chìa khóa”
Unity cung cấp cho chúng ta khả năng viết Script bằng cả 3 ngôn ngữ là
JavaScript, C# và Boo (một dẫn xuất của ngôn ngữ Python)
Unity không đòi hỏi chúng ta phải học làm thế nào để lập trình trong
Unity, nhưng hầu như chúng ta phải sử dụng Script tại mỗi thành phần trong kịch
bản mà chúng ta phát triển Unity đã xây dựng sẵn một tập hợp đa dạng các
Trang 16Class, Function, … mà chúng ta hoàn toàn có thể ứng dụng trong quá trình lập
trình trò chơi của mình
Để viết Script, chúng ta sẽ làm việc với một trình biên tập Script độc lập
của Unity, hoặc với chương trình Mono Developer được tích hợp và đồng bộ với
Unity trong những phiên bản mới nhất gần đây
Mono Developer là một IDE khá tốt để lập trình khi cung cấp đầy đủ các chức
năng của một IDE hoàn chỉnh 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 Unity
h 3 Hình 3 : Giao diện Mono Developer
Một số hàm sử dụng lập trình game cơ bản :
Start() : làm nhiệm vụ khởi tạo khi đối tượng vừa được đặt vào màn hình
UpDate() : làm nhiệp vụ cập nhật đối tượng liên tục trong vòng đời của
game
LateUpDate() : làm nhiệm vụ theo dõi các đối tượng đã được cập nhật ở
hàm Update() : ví dụ : theo dõi sự di chuyển của ô tô
FixedUpDate() : Làm nhiệm vụ cập nhật và sử lý các hoạt động vật lý của
đối tượng
Trang 17 OnCollisionEnter() : làm nhiệm vụ phát hiện sự va chạm giữa collider
của các đối tượng trong game và sử lý va chạm đó the va chạm vật lý
OnTriggerEnter () : làm nhiệm vụ phát hiện sự va chạm giữa collider
của các đối tượng trong game và cho phép đối tượng đi xuyên qua nhau
3.3.3.4 Prefabs:
Là một thành phần khá quan trọng, cho phép chúng ta tạo dựng các gói tài
nguyên mà có thể tận dụng lại ở mọi lúc mà chúng ta cần, Prefabs cho phép
chúng ta lưu trữ các đối tượng với những Components và những thiết đặt hoàn
chỉnh Có thể so sánh với khái niệm MovieClip trong Adobe Flash, Prefabs chỉ
đơn giản là một đối tượng chứa (Container) mà chúng ta có thể đưa bất kỳ một
đối tượng hay dữ liệu mẫu nào mà chúng ta muốn tái sử dụng về sau
3.3.3.5 Terrain :
Terrain còn gọi chung là địa hình bao gồm phần đất nền của môi trường
trong trò chơi cùng các đối tượng gắn liền như cây, cỏ, …
Unity cung cấp một công cụ hỗ trợ rất tốt khả năng này với tên gọi là
Terrains Tools cho phép chúng ta thiết kế địa hình với các công cụ vẽ dưới dạng
Brush có nhiều thông số tùy chỉnh để tạo hình và lát Texture cho địa hình Cùng
với Terrain Tools là Tree Creator, một công cụ mạnh mẽ cho phép chúng ta tạo
ra cây cối với hình dạng, kích thước và kiểu cách đa dạng
Giao diện : Hình 4 : giao diện terrain
Trang 18 Các công cụ tạo địa hình trong Terrain :
Raise and lower the terrain height : Công cụ tùy chỉnh độ cao cho địa
hình, nâng cao và hạ thấp địa hình theo ý muốn
h 4 Hình 5 : kết quả sử dụng Raise and lower the terrain height
Trang 19 Set the terrain height : lấy độ cao địa hình.
Smooths height : làm cho địa hình mịn hơn hoặc bằng phẳng tự
nhiên hơn
Paint the terrain texture
h 5 Hình 6 : Paint the terrain texture
Trang 20Dùng để tô mầu cho từng khu vực địa hình bằng cách chọn mẫu mầu như
như trong mục Textures, nhấn Edit Textures để thêm các mẫu mong muốn
h 6 Hình 6 : ảnh minh họa sử dụng công cụ Paint the terrain texture
Place Trees :
h 7 Hình 7 : Place Trees
h 8 Hình 8 : ảnh kết quả thực hiện các bước trên
Trang 21Cho phép ta thêm cây vào địa hình trên diện rộng, unity đã cung cấp sẵn một
số mẫu cây Hoặc ta có tự tạo cây hoặc thêm những mẫu cây bằng cách vào mục
Edit Trees
Ở mục settings : ta có thể tùy chỉnh độ rộng của tán lá, độ cao cây, … phù
hợp với yêu cầu
Place plants, stones and other small foilage:
h 9 Hình 9 : giao diện công cụ Place plants, stones and other small foilage
Cũng tương tự như Place Trees nhưng với công cụ này ta có thể tạo được
các đối tượng nhỏ hơn, chi tiết hơn như các thảm cỏ, bãi cỏ, sỏi, …
h 10 ảnh kết quả sử dụng Place plants, stones and other small foliage
Trang 22 Setting for the terrain:
h 11
Cho phép ta chỉnh các thông về mật độ của cây, tốc độ và độ rộng ảnh
hưởng của gió …
Trang 233.3.4 Thanh công cụ :
3.3.4.1. Công cụ bàn tay ( Phím tắt Q)Theo mặc định, công cụ cầm tay sẽ cho phép ta kéo thả và xem xung quanh
đối tượng
3.3.4.2. Công cụ Translate ( phím tắt W)Dùng để dịch chuyển các đối tượng theo các trục tọa độ
h 12 ảnh sử dụng công cụ Translate
3.3.4.3. Công cụ Rotate ( phím tắt : E)Xoay đối tượng theo các trục
h 13 ảnh sử dụng công cụ Rotate
Trang 243.3.4.4. Công cụ Scale ( phím tắt R )Điều chỉnh kích thước của đối tượng theo các trục tọa độ.
h 14 ảnh sử dụng công cụ Scale
3.3.4.5. Công cụ điều khiển :
Thứ tự các nút là : Chạy trò chơi, tạm dừng trò chơi, qua màn tiếp theo
(nếu có)
3.3.4.6. Công cụ Layers : Điều khiển các đối tượng được hiển thị ở cửa sổ Scene
Layout : Điều chỉnh sự sắp xếp của các cửa sổ trong giao diện chính