Sau qua trinh hoc tép, nghiên cứu và triển khai đề tài, em đã lập trình được trò choi Flappy Bird trên nên tảng Unity có đây đủ các thành phân tạo nên trò chơi như con Bird, hệ thong Wal
Trang 1BAO CAO DE TAI THUC TAP:
UNG DUNG UNITY TRONG THIET KE GAME
Sinh viên thực hiện : Phạm Minh Tuấn
Nơi thực tập : Công ty dịch vụ Mobifone KV 5
Hai Phong, thang 12 nam 2024
Trang 2
LỜI NÓI ĐẦU
Lời đầu tiên , em xin được gửi lời cảm ơn chân thành nhất đến toàn thể giảng viên khoa Công nghệ thông tin Trường Đại học Hải Phòng ! Nhờ có những kiến thức mà thầy cô truyền dạy trong suốt chương trình học, em đã có được một hành trang g6m cả kiến thức và kỹ năng vững chắc để hoàn thành đề tài thực tập này Em không những được học thêm nhiều kiến thức mà còn được áp dụng những gì mình đã học vào công việc thực tế
Em cũng xin cảm ơn sự giúp đỡ tận tình, chu đáo của tập thể Ban lãnh đạo cũng như cán bộ, nhân viên Công ty dịch vụ Mobifone khu vực 5 Sự giúp đỡ của quý công ty trone quá trinh thực tập là điều không thể thiếu để giúp em hoàn thành được bài báo cáo này
Cuối cùng, để có được bài báo cáo thực tập này em xin gửi lời cảm ơn sâu sắc đến Cô Bùi Thị Thúy Quỳnh Cô đã có những gợi ý và định hướng rõ ràng cho em trong việc hoàn thành bài báo cáo thực tập này Với sự hướng dẫn nhiệt tình của cô,
em đã giải quyết được những khó khăn, vấn đề phức tạp trong quá trình hoàn thành đề tài này
Một lần nữa, em xin chân thành cảm ơn!
Mục lục
Trang 3LỜI NÓI ĐẦU S Sàn 122121211121 51 01 51212 E 2n 2n HH HH HH Hs 2
CHUONG 1: TIM HIEU CAC KY THUAT CO BAN TRONG UNITY 7
Tom tat Churong NNng 7 1.1 Các kỹ thuat co ban trong nIty 0 1201211121122 12 1118111111281 1 11x tr ra 7 1.1.1 Kỹ thuật Debug trong Unity ccc Q2 012111211211 121 11 1115511112 ng ra 7 1.1.2 Cơ bản về Camera trong UInity s- 5s 5c s9 E1 22121111211211 1212112 1c rrdeg 8 1.1.3 cv oa an (da 8 1.1.4 Xử lý toán học trong, ÙnIfy c1 2112111211211 12111111111112 122118111181 8 1.2 Các hàm xử lý Script nâng cao - L1 1201211121 1121111111111211 2111181111118 1k 9
I8 on na 10 1.2.3 GameObject — Thao tác với C# SCTIpI 201201211121 1122111121115 re 11 IESoiià 0i 00 6 - 11 1.3.1 Animation trong Unity .e dd 11 1.3.2 Âm thanh trong Unity 22s 1 1121121111111 10111122011 1 ngu 11 1.3.3 Scrolline Backpround với LnIfy c2 22 222112211211 1211111 51111111 re 11 1.3.4 Camera Zoom tronp, HiIẨW - c2: 21112112 11121 1151 11111111111 11711181161 1c reg 12 1.4 G1ao diện người dùng (U]) trong nIty c2 2222211 12112221211 22 Exere 12
CHUONG 2: THIET LAP MOI TRUONG VA CAC THAO TAC CO BAN VOI h0 12
Tóm tắt chương 2 - 5c SE 112112121111 11112221 111111121 1211112121 tu 12 2.1 Cài đặt Unity trên môi trường WIndows ác n 2n nh Hye 13
2.1.2 Đăng ký Unity ÁccOUHL 0 20221122112 11221 11211011 1111111 111112111112 rrxy 15 PYÿÄ ố ci 080i) 0)9)v(ởởaiadỶŸÕẦỖ 16 2.2.1 Khởi tạo ProJ€ct -. 0 20112201121 11211112111 191112 0112111101111 1kg nà 16 2.2.3 Thanh công cụ .- L2 2112111211211 1211111111111111011 1011181111 11111 TH KH ky 16 2.2.4 SCONC nh 16
"ch = Ã 17 2.2.6 Định hướng Game ObJ€ct - L2 2221121 1211121111111111112 121110111181 kg 17
Trang 42.2.7 Thanh công cụ điều khiên khung Scene 2-52 2222222122222 2x 17
P2 (ly hy in TT 17 PˆŸ§¡ ¡v0 ä4Tm 1 18
CHƯƠNG 3: PHẦN TÍCH THIẾT KẾ GAME FLAPPYBIRD :- 18
Tom tat Chong 3.00.0 - y.lÃÃÁÁÁ 18
3.1 Hướng giải quyết yêu cầu cla dé tab illic cccececeeseeseesceeseesesssesesnesenees 18
3.2 Thiết ké game FlappyBird -s- 5c s9 1211 1111111211112121111 212111 2g 1g 19 3.2.1 Các thành phân tạo nên same FlappyBird - 5s St S 22111 xe 19 3.2.2 Tạo nên Scene từ các thành phần trong trò chơi - 252cc 25x szsz czsze 19 3.2.3 Làm cho các thành phần BackGround, Wall chuyén động 22
4000.000157 27
Trang 5Điều Khoản và dịch vụ cu HH ng gu He 14
0.0) 09:10:80) 00.0 e 14
1158 980).:1Ð.tvvuìi)EGHađađaẲađađaaiaŸŸ4ẢÕỔ 15 Giao diện làm việc của UnIEV 2n 2n H1 911111011111 1101111010111 1 HH Hy 16 Tạo nên Scene từ các thành phần trong game - 2: s2 2222111121121 xe 21
Trang 6MỞ ĐẦU
I Đặt vấn đề
Thiết kế Game FlappyBird trên nền tảng Unity
H Mục tiêu nghiên cứu của đề tài
Mục tiêu nghiên cứu của đề tài là phải phân tích và thiết kế được trò chơi Flappy Bird trên nền tảng Unity Đề làm được điều đó, em phải tìm hiểu và có kiến thức về ngôn ngữ lập trình Cứ ở nức độ cơ bản, hiểu và phân tích được quy luật của tro choi, va thanh thao sw dung Unity Sau qua trinh hoc tép, nghiên cứu và triển khai đề tài, em đã lập trình được trò choi Flappy Bird trên nên tảng Unity có đây đủ các thành phân tạo nên trò chơi như con Bird, hệ thong Wall lam chướng ngại vật cho con Bird, nên BackGround trang trí cho trò chơi, và cho chúng tương tác với nhau theo đúng yêu cầu của đề bài, đồng thời em xử ly các công việc liên quan khác đề hoàn thành trò chơi như: xử lÿ
âm thanh, xử lÿ UÌ,
HI Nhiệm vụ của đề tài
Tìm hiểu về kĩ thuật lập trình nói chung, tìm hiểu cơ bản về ngôn ngữ lập trình
Cử, tìm hiểu về Unity
Từ những kiến thức đã tìm hiểu ở trên, thiết kế và demo chương trình game Flappy Bird
IV Kết quả đạt được của đề tài
Nam được kiến thức về nên tảng Umity, ngôn ngữ lập trình Cứ, có khả năng phân tích vat lp va toán học trong quỹ luật của trò chơi
Phân tích và thiết kế hoàn chỉnh được game Flappy Bird trén nén tang Unity thỏa mãn yêu cấu của đề tài
V, Bồ cục của đề tài
Đề tài gồm 03 chương như sau:
Chương I: TÌM HIỂU CÁC KĨ THUẬT CƠ BẢN TRONG UNITY
Chương II: THIẾT LẬP MÔI TRƯỜNG VÀ CÁC THAO TÁC CƠ BẢN VỚI
UNITY
Chương III: PHÂN TÍCH VÀ THIẾT KẺ GAME FLAPPY BIRD TRÊN NEN
TANG UNITY
Trang 7CHUONG 1: TIM HIEU CAC KỸ THUẬT CƠ BẢN TRONG UNITY
Tom tat chuong 1
Chương I: em chu yéu la tìm hiểu những kiên thức về các kĩ thuật cơ bản cua Umity 3D như là: Kỹ thuật Debug, co ban về Camera, GameObject — Thao tac voi C# Seript, Vector, Xứ lí toán học, Xử lí hiệu ứng, Giao điện người dùng Những kiến thức
lí thuyết này sẽ là nên tảng, là cơ sở, là công cụ đề em có thê khai thác nhằm giải quyết yêu cầu của đề tài trong đô án học phần 2
Unity, theo dinh nghia cua Unity Technologies la mét hé sinh thai (Engine) da nên tang dé phat trién game Engine nay duge phat trién bang C/C++ va co kha nang
hỗ trợ viết mã bằng C#, JavaScript hoặc Boo Hiện, Unity đã phát triển tới phiên bản thứ 5, đồng thời là lựa chọn số 1 cho các studio game khi muốn phát triển game
1.1 Cac ky thuat co ban trong Unity
1.1.1 Ky thuat Debug trong Unity
Khi lập trình ra một sản phâm nào do, hâu hệt sẽ đi kèm với những bue — lỗi lập trình Lỗi có thể do nhiều nguyên nhân khác nhau, nhưng mục tiêu cuối cùng của sản phẩm là loại bỏ hết tất cả các lỗi dé có thế đưa sản phâm hoàn thiện ra thị trường
Trước khi sửa lỗi chương trình, ta phải khoanh vùng được đoạn code bị lỗi,
phạm vi cảng thu hẹp cảng tốt Sau khi đã khoanh vùng phần code lỗi, ta cần xem xét
tính thực thí của đoạn code bằng cách phát ra một thông điệp nào đó Ở đây, ta sử dụng ham Log thuộc lớp Debue trong Unity
E] Console Clear | | Collapse | Clear on Play | Error Pause | {@1 [A 0| @®o
Trang 8Khi chắc chắn đoạn code được thực thi, nhưng chương trình vẫn chạy không mong muốn, ta cần tiến hành quan sát sự thay đối của các đối tượng liên quan theo thời gian Vẫn dùng hàm Log thuộc lớp Debug, ta có thế theo đối một hoặc nhiều đối tượng cụ thê va dần tìm ra nguyên nhân gây ra lỗi
1.1.2 Co ban vé Camera trong Unity
Camera là một khái niệm quen thuộc đôi với mọi nên tảng phat trién game Voi các thao tác chỉnh sửa và chuyên đôi camera, ta có thê tạo ra vô số hiệu ứng độc đáo
và ứng dụng vào game một cách sinh động và hấp dẫn, thu hút nhiều người chơi
1.1.3 Vector trong Unity
Trong môi trường pame 3D, một vị trí hay vector được biểu diễn bằng 3 con số, đại điện cho 3 chiều không gian tương ứng Trong Unity, lớp Vector3 được sử dụng để biểu diễn điểm hoặc vector ba chiều Ngoài ra Unity còn tích hợp một số hàm và thuộc
tính hữu ích hỗ trợ lập trình viên
1.1.4 Xứ lý toán hoc trong Unity
Toán học rất quan trọng trong việc phát triển game, cho dù là ở bất cứ nền tảng nào Đối với Unity, lập trình viên được cung cấp khá nhiều các hàm toán học hỗ trợ lập trình được thuận tiện hơn
Trang 9Lớp Mathf là mot trong số các bộ chứa các biến và hàm toán học tiện ích do Unity cung cấp
1.1.4.1 Abs
Là hàm trả về giá trị tuyệt đối của tham số Hai prototype của hàm cho kiểu dữ liéu float va int nhu sau:
® public static float Abs(float value);
¢ public static int Abs(int value);
1.1.4.2 Asin - Acos - Atan - Sin- Cos — Tan
Một loạt các hàm hỗ trợ tính toán giá trị của các hàm lượng giác và lượng giác ngược Cú phap cho ham Sin nhu sau:
® public static float Sin(float f);
1.1.4.3 Min — Max
Ham Min sé tra về giá trị nhỏ nhất trong danh sách tham số, trong khi ham Max
sẽ trả về giá trị lớn nhất Danh sách tham số có thể bao gồm hai hoặc nhiều các giá trị Kiểu dữ liệu của các gia tri có thể là số thực hoặc số nguyên
® public static float Min( float a, float b);
¢ public static float Max( float a, float b);
1.1.4.4 PingPong
PingPong là một hiệu ứng mà một đối tượng luôn di chuyên ở giữa hai đầu mút
của nó Nó làm ta liên tưởng đến trò chơi bóng bàn, khí quả bóng được đánh qua lại
giữa hai người chơi
Ham PingPong trong Mathf có nguyên mẫu của hàm như sau:
® public static float PingPong(float t, float length);
1.2 Cac ham xt ly Script nang cao
1.2.1 Lớp Time
Time là một lớp được định nghĩa san bởi Unity, cung cấp các thuộc tính lưu trữ
và xử lý các thông tin về thời gian trong Unity Lớp Time không bao gồm bất kỳ phương thức nào, nhưng có một vải thuộc tính có thể chỉnh sửa để tương thích và phù
hợp với chương trình
Trang 10Một số thuộc tính quan trong:
® time: Thời gian tính bằng giây (kiểu float), trả về thời điểm bắt đầu của frame hiện tại Thuộc tính này khơng thê chỉnh sửa Thuộc tính này sẽ trả về
giá trị như nhau cho dù được gọi ở các thời điểm khác nhau trong cùng một vịng lặp
e _ deltaTime: Thuộc tính nảy trả về khoảng thời gian (tính bằng giây) cần thiết
để xử lý hết frame trước đĩ deltaTime được ứng dụng rất nhiều trong các hàm thuộc lớp Mathf, khi cần di chuyên đối tượng một cách mượt mà nhất Thuộc tính đeltaTime khơng thể chỉnh sửa
® tineScale: là thuộc tính mơ tả độ co giãn của thời pian Khi nhận giá trị 1.0, thời gian trơi qua đúng bằng thời gian thực Khi muốn chương trình chạy chậm đi hai lần, ta gan gid ti 0.5 chotimeScale Dac biét khi tưineScale nhận giá trị 0, chương trình sẽ đĩng băng hồn toan timeScale sé ảnh hướng lên mọi đối tượng được quản lý bởi lớp Time, ngoại trừ thuộc tínhrealTimeSinceStartup
® MaxinumBDeltalime: Khoảng thời gian tdi da ma mét frame cĩ thể được cập nhật Thuộc tính này thường được sử dụng để tránh việc FPS bi giảm đột ngột do tiến trình thu dọn rác — GarbageCollector và các thao tác xử lý vật lý tốn kém tài nguyên gây ra Nếu việc xử lý giá trị tơn nhiều thời gian, các hiệu ứng và vật ly sẽ cĩ ít thời gian hơn để cập nhật Việc này sẽ làm
giảm chất lượng game, tuy nhiên sẽ tránh được hiện tượng giật, là khi chơi game
1.2.2 Lớp Random
1.2.2.1 Random một số
Hàm Range sẽ trả về một giá trị ngẫu nhiên trong khoảng min và max với kiểu
dữ liệu tương ứng Hàm cĩ thể trả về giá tri bằng với min, nhưng khơng bao giờ trả về gia tri max
¢ public static float Range(float min, float max);
¢ public static int Range(int min, int max);
1.2.2.2 Random mot vector
insideUnitCircle — insideUnitSphere
Trang 11insideUnitCircle trả về một giá trị Vector2 là điểm nằm trong đường tròn don vi
có bán kính là 1 Đối với insideUnitSphere, giá trị trả về là một Vector3 nam trong hình cầu có bán kính 1 Tâm của đường tròn và hình cầu là gốc toạ độ tương ứng với không gian 2D hoặc 3D
1.2.2.3 Random một góc
Hai thuộc tính Random.rotation và Random.rotationUniform đều trả đều trả về một góc quay ngẫu nhiên (Quaternion) Chúng đều trả về một kiểu đữ liệu giống nhau, đồng thời giá trị trả về cũng thay đổi theo thời gian Tuy nhiên, rotateUniform có xác suât xuất hiện các góc là nhự nhau, còn rotation sẽ có một sự phân cụm các g1á tr 1.2.3 GameObject — Thao tac voi C# Script
GameObject là một khái niệm cơ bản trong Unity Mọi đối tuong trong game,
từ Camera đến các đối tượng UI, hay các đối tượng khác trong game được hiển thị trong cửa sô Hierarchy đều là các GameObject Các loại đối tượng khác nhau sẽ có những thao tác đặc thù riêng, nhưng là GameObject thì sẽ đều có những phương thức
và thuộc tính chung của GameObJect
1.3 Hiệu ứng trong Unity
1.3.1 Animation trong Unity
Animation là một yếu tố không thể thiếu được trong bất kỳ game nào
Animation giúp lập trình viên diễn tả hành động của các nhân vật một cách chân thực
và sông động hơn
1.3.2 Âm thanh trong Unity
Đố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 hut va hap dẫn hơn
1.3.3 Scrolling Background với Unity
Có nhiều cách để xây dựng một phông nền (backpround) cho game Trong đó, Scrolling Background la mét hiéu tng don gian va dễ hiện thực, tạo cảm giác chuyển động xa vô tận của nhan vat, rat phu hop với các game thuộc thê loại endless-running
Trang 121.3.4 Camera Zoom trong Unity
Hiệu ứng Camera Zoom là một hiệu ứng được sử dụng nhiều trong các game hiện nay Hiệu ứng này được ứng dụng trong những đoạn cắt cảnh game, những đoạn tập trung vào một nhân vật trong game hay khi cần phóng to/thu nhỏ bản đồ game dé
có thể điều khiển game theo ý người chơi
1.4 Giao diện người dùng (U]) trong Unity
Giao diện người dùng (User Interface — UI) là thành phần không thê thiếu đối
với bất kỳ game nào UI cung cấp các thông tin trực quan cân thiết cho người chơi, giúp người chơi có cái nhìn toàn diện về các khả năng của mình (thời gian, điểm,
“máu”, .) và có chiến thuật thích hợp đề vượt qua được các thử thách trong game Việc thiết kế giao diện người dùng đơn giản là sử dụng các assets có sẵn (hỉnh ảnh, font chữ, các hiệu ứng, .) và sắp xếp chúng theo một bố cục được Designer thiết kế Các assets này có thể được tìm thấy trên các website, Assets Store của Unity, hoặc do chính các Designer, Artist trone dự án thiết kế (thường gap ở những dự án lớn hoặc vừa) Các thành phân cơ bản trong thiết kế UI bao gồm Canvas, Text, Image, Button
CHUONG 2: THIET LAP MOI TRUONG VA CAC THAO TAC CO BAN VOI UNITY
Tóm tắt chương 2
Chương 2 này em tìm hiểu về cách cài đặt Umity IDE trên máy tính Windows, bên cạnh đó là tìm hiểu về các thao tác cơ bản để làm quen với Unity IDE, từ giao diện làm việc đến các cửa số làm việc và chức năng của chúng Đây sẽ là công cụ mà
em sẽ sử dụng đề giải quyết yêu cầu của đề tài trong Đô án học phần 2
Unity3D là một Game Engine phô biến đối với các nhà phát triển game Nhờ tính đa nền tảng và miễn phi, Unity3D là sự lựa chọn số một đối với các nhà phát triển same vừa và nhỏ
Trang 132.1 Cài đặt Unity trên mỗi trường Windows
Phiên bản Unity mới nhất hiện tại là 22.3.34f1, có thê được tìm thấy tại trang
chính thức: (máy tính của em sử dụng Windows 11 Professional 64-bit )
http:/unty3d.com/eet-unity/download
2.1.1 Cài đặt Unity
Sau khi tải xuống hoản tất, ta double click vào icon của Unity để tiến hành cải đặt Việc cài đặt Unity diễn ra bình thường và tương tự như cài đặt các chương trình
Unity 5.3.4f1 Download Assistant
installing Unity
Please make sure you are connected to internet before continuing the installation process, as selected components for Unity needs to be downloaded
Click Next to continue
Next>] Cancel
Hình 2.1 Cai dat Unity