Đề tài: Tìm hiểu về Game và cách xây dựng Game đa nền tảng với Unity Engine được nghiên cứu với các nội dung: Giới thiệu chung, làm quen với môi trường Unity, làm quen với môi trường Unity Engine, kết luận. Để hiểu rõ hơn về đề tài mời các bạn cùng tham khảo tài liệu.
Trang 1M C L C Ụ Ụ
L i m đ uờ ở ầ 2
Chương 1. Gi i thi u chungớ ệ 3
1.1. Gi i thi u v Unity ớ ệ ề 3
1.2. Tính năng c a Unityủ 3
1.3. Các khái ni m c b n trong Unityệ ơ ả 46 Chương 2. Làm quen v i môi trớ ường Unity 7
2.1. Tìm hi u và kh i t o các đ i tể ở ạ ố ượng c b n trong Unitơ ả 729 2.2. Thành ph n v t lý và x lý va ch mầ ậ ử ạ 2931 2.3. X lý Text,ử hi u ng trong game vàệ ứ chuy n màn ch iể ơ 3235 2.4. M t s c s d li u trong game Unityộ ố ơ ở ữ ệ 3640 Chương 3. Làm game v i Unity Engineớ 41
3.1. Gi i thi u game đang th c hi nớ ệ ự ệ 4143 3.2. M c tiêu đ tàiụ ề 44
3.3. Tài li u tham kh oệ ả 44
K t Lu nế ậ 45
Trang 2L i m đ u ờ ở ầ
Ngày nay, Công ngh thông tin đang là nghành đệ ược đ u t phát tri n ầ ư ể
r ng rãi nh t, ta có th th y máy tính, laptop xu t hi n kh p n i nh t i ộ ấ ể ấ ấ ệ ở ắ ơ ư ạdoanh nghi p, công ty, nhà trệ ường. Công ngh thông tin không ch giúp ta hoàn ệ ỉthành công vi c 1 cách nhanh chóng, chính xác mà còn là th có th đáp ng nhu ệ ứ ể ứ
c u gi i trí cho m i ngầ ả ọ ười sau m t ngày làm vi c m t m i. ộ ệ ệ ỏ
Ch v i m t cái laptop hay 1 cái máy tính đ bàn ta có th s d ng đ xemỉ ớ ộ ể ể ử ụ ể phim, nghe nh c và ch i game. H n n a s bùng n c a CNTT cũng kéo theo ạ ơ ơ ữ ự ổ ủ
nh ng chi c PC, laptop, đi n tho i có c u hình kh ng giúp chúng ta có th làm ữ ế ệ ạ ấ ủ ể
m i vi c trên 1 chi c máy tính. Đ c bi t ọ ệ ế ặ ệ
Chính vì v y, n i dung lu n văn mà em s th c hi n là tìm hi u v Game ậ ộ ậ ẽ ự ệ ể ề
và cách xây d ng game đa n n t ng v i Unity Engine. ự ề ả ớ
Trang 3Chương 1. Gi i thi u chungớ ệ
1.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 ấ ụ ử ồ ạ ợ ẵ ư ệ ậ
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ă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 v i Unityớ
Trang 4 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 đó.ể ộ ộ ậ
Trang 5 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.
1.3.5. Key Frame
Key Frame hay Frame là m t tr ng thái c a m t animation. Có th độ ạ ủ ộ ể ượ ạc t o nên t 1 sprite hay nhi u sprite khác nhau.ừ ề
1.3.6. Prefabs
Là m t khái ni m trong Unity, dùng đ s d ng l i các đ i tộ ệ ể ử ụ ạ ố ượng gi ng nhau ố
có trong game mà ch c n kh i t o l i các giá tr v trí, t l bi n d ng và góc ỉ ầ ở ạ ạ ị ị ỉ ệ ế ạquay t môt đ i từ ố ượng ban đ u.ầ
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
Trang 7 Là m t game object đ c bi t trong scene, dùng đ xác đ nh t m nhìn, quan sát ộ ặ ệ ể ị ầcác đ i tố ượng khác trong game.
1.3.12. Transform
Là 3 phép bi n đ i t nh ti n, quay theo các tr c, và phóng to thu nh m t đ i ế ổ ị ế ụ ỏ ộ ố
tượ ng
Chương 2. Làm quen v i môi trớ ường Unity
2.1. Tìm hi u và kh i t o các đ i tể ở ạ ố ượng c b n trong Unityơ ả
nh minh h a b trí c a Unity
2.1.1. Các thành ph n và b tríầ ố
a. Scene
Trang 8 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
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
Trang 9 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) 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à các b n 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 ậ ệ ớ ấ
2.1.2. T o và c u hình v i d án 2Dạ ấ ớ ự
B t Unity lên, vào menu File/New Projectậ
Trang 10nh minh h a
Ch n lo i project là 2D sau đó gõ tên project xong nh n Create Project. K t qu ọ ạ ấ ế ả
nh sau:ư
Trang 12Ch n phép chi u vuông gócọ ế
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
RightClick vào th m c Assets c a s Project, ta ch n Create, ch n Folder.ư ụ ở ử ổ ọ ọ
Trang 13K t qu nh hình sau:ế ả ư
2.1.3. Kh i t o các đ i tở ạ ố ượng c b nơ ả
a. GameObject
a1. Empty Object
Trang 14 menu ta ch n GameObject, ch n Create Empty.Ở ọ ọ
Ho c click chu t ph i ph n Hierarchy => 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 ạ ớ
Trang 15Parent 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.ẽ ổ
Đ i tố ượng Girl có các đ i tố ượng con là Bag, Hat
Trang 18 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 19Ti 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.ặ ể ự ộ ể ị
Trang 20Sau đó 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.ậ ạ ạ ằ
b3. 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
Ti p theo, m c Sprite Render c a s Inspector, ta ch n Sprite đ hi n th ế ở ụ ở ử ổ ọ ể ể ị(Nút khoan tròn đ )ỏ
Trang 21M t animation là m t hình nh đ ng mô t m t đ i tộ ộ ả ộ ả ộ ố ượng nào đó trong game.
Ví d : có th là m t chi c xe đang ch y, hay m t nhân v t đang đi ụ ể ộ ế ạ ộ ậ
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.ậ
Trang 22Đ 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
Trang 23Đ 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.ạ ớ ư ỹ ậ ể ạ
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 ề ộ ớ
c3. Đi u khi n các hành đ ng nhân v t – Animatorề ể ộ ậ
ph n trên chúng ta đã tìm hi u cách t o các clip hay các hành đ ng c a m t
animation. V i m t animation nh v y ta s có m t Controller.ớ ộ ư ậ ẽ ộ
Ph n này s bi u di n cách chuy n qua l i gi a các hành đ ng b ng máy tr ng ầ ẽ ể ễ ể ạ ữ ộ ằ ạthái
Trang 24c a s Hierarchy ch n đ i t ng MainCharacter, ch n Menu, ch n Window,
ch n Animator, c a s Animator s xu t hi n nh sau:ọ ử ổ ẽ ấ ệ ư
Trang 25Danh sách các state, m i state tỗ ương ng v i m t clipứ ớ ộ
Click chu t ph i vào state Idle, ch n Set Default đ thi t l p state m c đ nh cho ộ ả ọ ể ế ậ ặ ị
đ i tố ượng
Ch n Make Transition, sau đó đ a chu t đ n tr ng thái đích. V i m i transitionọ ư ộ ế ạ ớ ỗ
v a t o, có nghĩa r ng nhân v t t tr ng thái hi n t i có th chuy n đ i tr cừ ạ ằ ậ ừ ạ ệ ạ ể ể ổ ự
ti p qua tr ng thái đích. K t qu thu đế ạ ế ả ược ta g i là máy tr ng thái hay s đọ ạ ơ ồ
chuy n đ i tr ng thái.ể ổ ạ
Trang 26Khi đ i tố ượng được load lên, tr ng thái m c đ nh s đạ ặ ị ẽ ược thi t l p, v y lúc nàoế ậ ậ thì s chuy n qua tr ng thái khác ?? Chúng ta s t o thêm các tham s , và d a ẽ ể ạ ẽ ạ ố ựvào giá tr các tham s này đ chuy n đ i các tr ng thái.ị ố ể ể ổ ạ
Ta s t o ra 3 tham s ki u bool là isJump, isIdle, isRunning đ đi u khi n.ẽ ạ ố ể ể ề ể
Trang 27Đ thi t l p đi u ki n cho m t transition, ta click ch n transition đó (transition ể ế ậ ề ệ ộ ọ
được ch n chuy n qua màu xanh), c a s Inspector, m c thu c tính ọ ể ở ử ổ ụ ộ
Conditions (đi u ki n) ta s thi t l p giá tr c a các tham s , đ xác đ nh lúc nàoề ệ ẽ ế ậ ị ủ ố ể ị thì chuy n tr ng thái.ể ạ
Trang 28đây, chúng ta ch n isRunning = true.
Ta có th thêm các đi u ki n khác (trể ề ệ ường h p chuy n đ i ph thu c nhi u ợ ể ổ ụ ộ ề
đi u ki n) b ng cách nh n d u c ng ho c d u tr đ b b t m t đi u ki n.ề ệ ằ ấ ấ ộ ặ ấ ừ ể ỏ ớ ộ ề ệ
V y m i khi ta set giá tr tham s isRunning = true, tr ng thái nhân v t s ậ ỗ ị ố ạ ậ ẽ
chuy n sang Running. Tể ương t ta thi t l p isIdle, isJump cho các transition ự ế ậkhác
Cu i cùng, c a s Hierarchy, ta ch n MainCharacter, c a s Inspector, m c ố ở ử ổ ọ ở ử ổ ụ
Trang 29Đ n đây, chúng ta đã bi t cách xây d ng m t animation cho các đ i tế ế ự ộ ố ượng trong game và đi u khi n qua l i các đ i tề ể ạ ố ượng đó.
d. 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).ị ỉ ệ
Đ t o m t Prefab cho m t đ i tể ạ ộ ộ ố ượng nàođó, ta ch c n kéo th đ i tỉ ầ ả ố ượng đó ở
c a s Hierarchy xu ng th m c Prefab (n u ch a có thì t o m i) trong c a s ử ổ ố ư ụ ế ư ạ ớ ử ổProject c a chúng ta. Sau này mu n s d ng ta ch vi c kéo các Prefab này tr ủ ố ử ụ ỉ ệ ở
l i c a s Scene.ạ ử ổ
Trang 30Prefab cho đ i tố ượng Ground
Bây gi ta s kéo th Prefabs này t o thành m t đờ ẽ ả ạ ộ ường th ng, và đ t l i v trí ẳ ặ ạ ị
đ i tố ượng MainCharacter v trí n m trên đở ị ằ ường th ng này nh hình v ẳ ư ẽ
e. Script và đi u khi n máy tr ng tháiề ể ạ
e1. Script
Script là m t t p tin (cũng là Game Component) ch a các mã đi u khi n cho m tộ ậ ứ ề ể ộ
Trang 31Đ t o script ta click chu t ph i th m c Scripts/Create/C# Script.ể ạ ộ ả ở ư ụ
V i m i script t o ra, ta c n ch đ nh script này thu c v đ i tớ ỗ ạ ầ ỉ ị ộ ề ố ượng nào. Ta th c ự
hi n b ng cách:ệ ằ
Ch n đ i tọ ố ượng MainCharacter c a s Hierarchy, c a s Inspector ch n ở ử ổ ở ử ổ ọAdd Component/Scripts/Main Character Behaviour.cs danh sách. Sau khi add:ở
Trang 32Kích đúp đ m file script ta s th y nh sau:ể ở ẽ ấ ư
Trang 33+ Start(): Được g i 1 l n đ u tiên sau khi kh i t o đ i tọ ầ ầ ở ạ ố ượng, trước khi vào Update.
+ Update(): Được g i liên t c sau m i frame, sau Start.ọ ụ ỗ
+ OnWillRenderObject(): Được g i liên t c sau m t frame sau Update. Thọ ụ ộ ường thì ta s ít đ ng đ n hàm này.ẽ ụ ế
+ OnDestroy(): Được g i khi đ i tọ ố ượng b hu ị ỷ
Bi u đ :ể ồ
Ta có th khai báo các thu c tính trong file script, các thu c tính này s để ộ ộ ẽ ược
hi n th c a s Inspectorể ị ở ử ổ
Trang 34Đ i v i thu c tính là GameObject chúng ta có th nh n vào nút đ , sau đó ch n ố ớ ộ ể ấ ỏ ọprefabs cho đ i tố ượng b ng m i hi n ra.ở ả ớ ệ
e2. M t s x lý c b nộ ố ử ơ ả
Truy c p vào đ i tậ ố ượng game hi n t i thông qua this.gameObjectệ ạ
Thay đ i v trí, t l , quay đ i tổ ị ỉ ệ ố ượng thông qua
gameObject.transform(.position, .scale, .rotate)
Đ hu m t đ i tể ỷ ộ ố ượng game Destroy(GameObject) (*)
Đ t o m t prefab trong quá trình th c thi game:ể ạ ộ ự Instantiate(gameObject,
Vector3, Quaternion)
Input.GetKeyDown(keyCode), GetKey(keyCode), GetKeyUp(keyCode) ki m traể xem m t key độ ược b m, đấ ược gi , đữ ược th ra hay không ?ả
Input.GetAxis ("Horizontal") tr v giá tr s th c trong kho ng 1 1 n u có s ả ề ị ố ự ả ế ự
ki n các key right ho c left đệ ặ ược b m (key ngang).ấ
Input.GetAxis ("Vertical") tr v giá tr s th c trong kho ng 1 1 n u có s ả ề ị ố ự ả ế ự
ki n các key up ho c down đệ ặ ược b m (key d c).ấ ọ
OnMouseDown, OnMouseUp, OnMouseDrag các hàm x lý chu t.ử ộ
Trang 352.2. Thành ph n v t lý và x lý va ch mầ ậ ử ạ
2.2.1. Thêm thành ph n v t lýầ ậ
Thành ph n v t lý h tr các thao tác v v t lý nh : tác d ng l c, tr ng l c ầ ậ ỗ ợ ề ậ ư ụ ự ọ ựtrái đ t, ma sát ấ
Đ thêm thành ph n v t lý ta làm nh sau: Hierarchy, ch n đ i tể ầ ậ ư ở ọ ố ượng
MainCharacter (đ i tố ượng c n thêm)ầ / Menu /Component / Physics 2D /
Mass: là kh i lố ượng c a đ i tủ ố ượ ng
Linear Drag: H s ma sát c a v t đ i v i chuy n đ ng kéo.ệ ố ủ ậ ố ớ ể ộ
Angular Drag: H s ma sát c a v t đ i v i chuy n đ ng quayệ ố ủ ậ ố ớ ể ộ
Gravity scale: gi ng nh h s G trong v t lý (~ 9.81), ch s nh hố ư ệ ố ậ ỉ ự ả ưởng c a l củ ự hút trái đ t. Ta có th đ t = 0, t c là không nh hấ ể ặ ứ ả ưởng b i l c hút trái đ t.ở ự ấ