1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản

50 281 1

Đ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 50
Dung lượng 5,71 MB

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

Nội dung

Bộ giáo dục và đào TẠo trường đại học công nghệ TP. HCM ĐỒ ÁN MÔN HỌC CÔNG NGHỆ PHẦN MỀM PHẦN MỀM GAME CHRISTMAS EVE NGÀNH: CÔNG NGHỆ THÔNG TIN Giảng viên hướng dẫn: Tạ Thu Thủy Sinh viên thực hiện: Họ và tên MSSV Lớp Trần Đức Huy 1711062522 17DTHD3 Nguyễn Minh Hiền 1711060430 17DTHD3 Trần Quang Nghĩa 1711061993 17DTHD3 Huỳnh Nhật Sang 1711062371 17DTHD3 Phạm Mai Hương 1711062334 17DTHD3 TP. Hồ Chí Minh, 2020 BỘ GIÁO DỤC VÀO ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HCM ĐỒ ÁN MÔN HỌC CÔNG NGHỆ PHẦN MỀM PHẦN MỀM GAME CHRISTMAS EVE NGÀNH: CÔNG NGHỆ THÔNG TIN Giảng viên hướng dẫn: Tạ Thu Thủy Sinh viên thực hiện: Họ và tên MSSV Lớp Trần Đức Huy 1711062522 17DTHD3 Nguyễn Minh Hiền 1711060430 17DTHD3 Trần Quang Nghĩa 1711061993 17DTHD3 Huỳnh Nhật Sang 1711062371 17DTHD3 Phạm Mai Hương 1711062334 17DTHD3 TP. Hồ Chí Minh, 2020 LỜI MỞ ĐẦU Trong thời đại công nghệ thông tin như hiện nay, sản phẩm công nghệ ngày càng chịu sự đánh giá khắt khe hơn từ phía những người dùng, đặc biệt là về sản phẩm Game được nhận rất nhiều sự đánh giá từ phía các Game thủ, hay chỉ là những người chơi bình thường. Ngành công nghiệp Game hiện nay có thể nói là bùng nổ, với tốc độ phát triển đến chóng mặt, rất nhiều những Game hay và hấp dẫn đã được ra đời trong thời gian qua. Phía sau những Game phát triển và nổi tiếng như vậy đều có một Game Engine. Game Engine là một công cụ hỗ trợ, một Middleware giúp người phát triển viết Game một cách nhanh chóng và đơn giản, đồng thời cung cấp khả năng tái sử dụng các tài nguyên và mã nguồn cao do có thể phát triển nhiều Game từ một Game Engine. Từ xu hướng phát triển và những bất cập trên, đồ án này sẽ khảo sát và nghiên cứu về Engine Unity – một Game Engine rất phổ biến và không kém mạnh mẽ hiện nay nhằm thực nghiệm việc phát triển một trò chơi (Demo) 2D. Chuẩn bị kiến thức và kỹ năng cho định hướng nghề nghiệp sau này của chúng em, góp phần vào sự phát triển của ngành công nghiệp Game nước nhà. Các chương đầu trong tài liệu sẽ trình bày lần lượt các khái niệm chung về Game Engine và thế giới 2D. Các chương tiếp theo sẽ giới thiệu về Engine Unity bao gồm các đặc điểm, tính năng, công cụ và thành phần trong Engine này. Sau những nội dung về thiết kế, tài liệu sẽ trình bày về việc lập trình trên Unity khi giới thiệu về ngôn ngữ lập trình cùng các lớp, hàm trong thư viện dựng sẵn của Unity thông qua các ví dụ thực tế khi phát triển một game 2D. Cuối cùng là giới thiệu về bối cảnh, cốt truyện, tài liệu hướng dẫn sử dụng của trò chơi Demo cùng chương tổng kết về các khó khăn và những thành quả trong suốt quá trình phát triển trò chơi Demo trên Unity. LỜI CÁM ƠN Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, Trường Đại học Công nghệ Thành phố Hồ Chí Minh (HUTECH) đã tạo điều kiện tốt cho chúng em thực hiện đề tài này. Em xin chân thành cảm ơn Cô Tạ Thu Thủy, là người đã tận tình hướng dẫn em, chỉ bảo em trong suốt thời gian học tập. Mặc dù chúng 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ý Cô và các bạn. Sinh viên thực hiên Trần Đức Huy Nguyễn Minh Hiền Phạm Mai Hương Huỳnh Nhật Sang Trần Quang Nghĩa ĐIỂM VÀ NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Bảng phân công nhiệm vụ Họ và tên Nhiệm vụ Nguyễn Minh Hiền Programer+Word báo cáo Huỳnh Nhật Sang Graphics Designer+Power point báo cáo Phạm Mai Hương Graphics Designer+Word báo cáo Trần Đức Huy Audio Maker+Word báo cáo Trần Quang Nghĩa Tester+Powerpoint báo cáo Mục lục CHƯƠNG 1: TỔNG QUAN 7 1. Lý do chọn đề tài 7 2. Đối tượng nghiên cứu 8 CHƯƠNG 2: UNITY ENGINE 9 1. GIỚI THIỆU CHUNG 9 2. CÁC THÀNH PHẦN TRONG UNITY 11 2.1 Assets 12 2.2 Scenes 13 2.3 Game Object 13 2.4 Components 14 2.5 Scripts 15 2.6 Prefabs 16 3. GIAO DIỆN CỦA UNITY 17 CHƯƠNG 3: MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME ENGINE TRÊN UNITY 18 1. LOAD HOẠT HỌA 18 1.1 Vấn Đề 18 1.2 Giải Pháp 18 2. CHUYỂN ĐỘNG MÔ HÌNH NHẬT VẬT 2D 19 2.1 Vấn Đề 19 2.2 Giải Pháp 19 3.THÊM SỰ KIỆN VÀO CHUYỂN ĐỘNG CỦA NHÂN VẬT 21 3.1 Vấn đề 21 3.2 Giải pháp 21 4.XÂY DỰNG GIAO DIỆN GAME 23 4.1 Vấn đề 23 4.2 Giải pháp 23 5.ÂM THANH TRONG GAME 25 5.1 Vấn đề 25 5.2 Giải pháp 26 CHƯƠNG 4 ỨNG DỤNG GAME PHÁT TRIỂN TRÊN UNITY 29 1. GIỚI THIỆU GAME 30 2. CÁC QUY LUẬT CHƠI CHÍNH 31 2.1 Di chuyển 31 2.2 Điểm 32 3. DỮ LIỆU GAME CHRISTMAS EVE 33 3.1 Màn Hình Bắt Đầu Lập Trình 33 3.2 Code Trong Game 34 4. MỘT SỐ CLASS QUAN TRỌNG TRONG GAME 35 4.1 Santafailscript 35 4.2Backgroudscript 36 4.3Gamecontroller 37 5. MÔ HÌNH CHI TIẾT TỪNG MÀN HÌNH 42  Đạt Được 48  Thuận Lợi 49  Khó Khăn 49  Kinh Nghiệm Rút Ra 49  Hướng Phát Triển 49 CHƯƠNG 1: TỔNG QUAN 1.Lý do chọn đề tài Xã hội ngày càng phát triển, nhu cầu giải trí của con người ngày càng tăng cao. Cùng với sự phát triển của công nghệ thông tin, điện tử, các thiết bị chơi game ngày càng phổ biến. Trong những năm gần đây ngành công nghệ game nổi lên và đem lại doanh thu khổng lồ. Có thể nói game không chỉ là một phương tiện giải trí cơ bản, nó còn là một lĩnh vực đáng quan tâm và theo đuổi. Thiết kế game là một công việc không dễ dàng đòi hỏi rất nhiều thời gian và công sức, tuy nhiên qua đó ta có thể biến những dòng code khô khan thành những trải nghiệm thú vị cho người chơi, đồng thời có thể học hỏi những kiến thức mới về nền tảng Unity Framework và củng cố ngôn ngữ C. 2.Đối tượng nghiên cứu Nền tảng Unity Engine Cách thiết kế nhân vật, tạo bản đồ, khung cảnh, character animation, xử lý va chạm, điểm số, hoạt ảnh, UI, xử lý hiệu ứng hình ảnh, âm thanh,… CHƯƠNG 2: UNITY ENGINE 1.GIỚI THIỆU CHUNG Hình 1.1 Logo của Unity Engine  Nhà phát triển: Unity Technologies Phiên bản mới nhất : 5 (phát hành vào ngày 1142012) Đượ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, iPhoneiPad, Xbox 360, Android, 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 Website: www.unity3d.com Unity 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 JustInTime 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ền 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 hình ả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 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 và 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. 2. CÁC THÀNH PHẦN TRONG UNITY 2.1 Assets Assets 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 (Assets). Đ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 là “Assets”. Hình 1.2 Asset trong Uinty 2.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 Scenes 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 phần khác nhau của trò chơi một cách riêng lẻ. Hình 1.3 Các Scene của Unity 2.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 qua các đoạn mã. Hình 1.4 Kéo tài nguyên vào Scene để sử dụng 2.4 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 trong chức năng của Game Object trong trò chơi. Bằng cách “gắn” chúng vào trong Game Object, chúng ta ngay lập tức có thể á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. Hình 1.5 Các thành phần trong đối tượng camera 2.5 Scripts Được Unity xem như một Components, 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 đề cập đến 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 loại ngôn ngữ là: JavaScript, C và Boo (một dẫn xuất của ngôn ngữ Python). Hình 1.6 Cách tạo file script mới 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ình 1.7 Một file Script đang gắn vào đối tượng 2.6 Prefabs 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. Hình 1.8 Một số đối tượng trong Prefabs 3.GIAO DIỆN CỦA UNITY Giao diện của Unity có khả năng tùy chỉnh bố trí tương tự như nhiều môi trường làm việc khác. Dưới đây là một kiểu bố trí điển hình trong Unity: Hình 1.9 Giao diện của Unity ∗ Chú thích: Scene (1): Nơi mà trò chơi sẽ được xây dựng Hierarchy (2): Danh sách các Game Object trong scene Inspector (3): Những thiết lập, thành phần, thuộc tính của đối tượng (hoặc Asset) đang được chọn Game (4): Cửa sổ xem trước, nó chỉ hoạt động trong chế độ “Play” (Preview – xem trước) Project (5): Danh sách các Assets của dự án, được ví như thư viện của dự án CHƯƠNG 3: MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME ENGINE TRÊN UNITY 1.LOAD HOẠT HỌA 1.1 Vấn Đề Game 2D được xây dựng từ nhiều mô hình 2D được đặt lên không gian 2 chiều sao cho hài hòa với nhau để tạo thành cảnh vật trong game. Do đó việc nạp và hiển thị được mô hình 2D trong game là vô cùng quan trọng. 1.2 Giải Pháp Các mô hình 2D, 3D thông thường được thiết kế sẵn bằng các phần mềm thiết kế 3D chuyên dụng như Adobe InDesign, Adobe Photoshop, CorelDRAW,... Sau đó, mô hình sẽ được đưa vào game engine để sử dụng. Ta có thể kéo thả để đưa các mô hình 2D vào mục sprite unity như sau: Hình 2.1 Minh họa kéo thả các mô hình 2D vào thư mục Sprite Engine Unity hỗ trợ rất nhiều định dạng mô hình 2D, 3D khác nhau như: PNG, JPG ... Unity có hỗ trợ load mô hình bằng cách kéo thả SPRITE vào vị trí bất kỳ trong Scene. 2.CHUYỂN ĐỘNG MÔ HÌNH NHẬT VẬT 2D 2.1 Vấn Đề Chúng ta đã load được mô hình 2D vào trong game, vậy làm sao để mô hình 2D này có thể chuyển động trong game. 2.2 Giải Pháp Trước tiên mô hình 2D cần phải có sẵn animation bên trong. Khi import mô hình vào Unity, animation trong mô hình được tự động chuyển thành một AnimationClip. Điều này giúp animation này có thể dùng cho các mô hình khác trong project. Trước hết ta phải tạo AnimationClip từ animation có sẵn của mô hình. Có 2 loại mô hình 2D có sẵn animation: Loại thứ nhất: Mô hình 2D có chứa nhiều animation bên trong .Đối tượng santa (ông già noel) có 2 animation là ridding và flyhigh. Hình 2.2 Mô hình 2D bên trong chứa nhiều animation Loại thứ hai: Mô hình 2D chỉ chứa một animation.Đối tượng presents (hộp quà) chỉ có một animation là presentsglown. Hình 2.3 Mô hình 2D chứa một animation Tiếp theo, để gọi thực hiện một AnimationClip trong một đối tượng ta chọn vào đối tượng muốn thêm animation. Sau đó chọn window mở cửa sổ animation và tạo một animation mới bằng thao tác kéo thả quen thuộc trong unity: Hình 2.4 Tạo animation bằng cách kéo thả. 3.THÊM SỰ KIỆN VÀO CHUYỂN ĐỘNG CỦA NHÂN VẬT 3.1 Vấn đề Trong lúc lập trình kịch bản game, chúng ta muốn biết khi nào một nhân vật chuyển động xong để có bước xử lý tiếp theo. Trong Unity, khi một chuyển động chạy xong không tự phát ra sự kiện. 3.2 Giải pháp Hình 2.5 Đặt điều kiện flypower để chuyển animation. 4.XÂY DỰNG GIAO DIỆN GAME 4.1 Vấn đề Giao diện đồ họa người dùng là một phần quan trọng không thể thiếu trong khi xây dựng một ứng dụng game hay bất cứ một ứng dụng nào để vẽ các đối tượng đồ họa như Button, Label, Checkbox, Slider, … lên màn hình. 4.2 Giải pháp Để làm được điều này chúng ta dùng cách click phải chuột tạo new gameobject với dạng UI. Sau đó click chọn CANVAS Hình 2.6 Tạo UI để thêm button Sau đó tạo click phải chuột tương tự để tạo button trong canvas như sau: Hình 2.7 Tạo Button Để vẽ một Image ra panel, chúng ta sử dụng kéo thả sprite vào ô source image của đối tượng panel đó như sau: Hình 2.8 Chèn ảnh nền vào panel 5.ÂM THANH TRONG GAME 5.1 Vấn đề Âm thanh là yếu tố không kém phần quan trọng trong ứng dụng game. Thật nhàm chán khi một cảnh đánh đánh nhau, bắn nhau hay các hiệu ứng đẹp mắt mà không có âm thanh. Âm thanh 3 chiều sẽ làm cho game thực hơn và sống động hơn. 5.2 Giải pháp Để chơi được một file âm thanh trong Unity có 2 cách: bằng code hoặc trên giao diện. Dù chọn cách nào thì trước hết chúng ta phải có sẵn các file âm thanh và import vào project. Sau khi import âm thanh vào project, nếu file hợp lệ chúng ta sẽ thấy như hình sau và có thể nhấn nút play để nghe thử. Hình 2.9 Thông tin file âm thanh Cách 1: Tạo trên giao diện Trên menu của Unity, vào GameObject  Create Empty. Chọn đối tượng vừa tạo và gắn thành phần “AudioSource” cho đối tượng này. AudioSource là một đối tượng âm thanh. Muốn Play hay Stop, thay đổi cách lặp, tăng giảm volume nhạc thì phải thông qua đối tượng này. Hình 2.10 Thêm thành phần Audio Source Hình 2.11 Thêm file âm thanh cho thành phần AudioSource Nếu thực hiện xong các bước trên, chúng ta có thể chạy game để nghe thử. Việc tạo đối tượng âm thanh trên giao diện khá đơn giản, nhưng để áp dụng vào cho game thì không được linh hoạt bằng cách sử dụng script. Cách 2: Cách chơi nhạc bằng code Gán đường dẫn file nhạc cho âm thanh: Sau đó chỉ cần gọi các phương thức Play() để chạy file âm thanh Chương 4 ỨNG DỤNG GAME PHÁT TRIỂN TRÊN UNITY 1.GIỚI THIỆU GAME Giáng sinh năm này, khi Ông Già Noel cùng những chú Yêu Tinh lùn đang chuẩn bị những món quà cho mọi đứa trẻ đang trông chờ. Hằng năm, những chú Yêu Tinh sẽ được nghỉ trước ngày Giáng Sinh 30 ngày. Vậy mà, vì hiện tượng bùng nổ dân số đang ngày càng trầm trọng, nên số lượng quà mỗi năm càng ngày càng tăng vì số lượng trẻ em càng ngày càng tăng. Thế là, con số 30 ngày nghỉ của các chú Yêu Tinh cứ rút lại dần chỉ còn 20 ngày, 15 ngày, 10 ngày…. Đến nay, sau khi đã hoàn thành tất cả những món quà cho trẻ em trên khắp thế giới thì kì nghỉ Giáng Sinh của những chú Yêu Tinh gần như chả còn ngày nào. Từ đó, đã gây nên sự tức giận trong lòng các chú Yêu Tinh lùn. Họ muốn được những kì nghỉ như mọi năm, họ lo sợ rằng trong khi mình chuẩn bị sẵn sàng cho mọi đứa trẻ đón Giáng Sinh thì chính mình còn không có được kì nghỉ Giáng Sinh. Cuối cùng, những chú Yêu Tinh đã quyết định, trút hết cơn giận của mình vào đêm Giáng Sinh năm nay. Họ đã lên kế hoạch làm thủng túi quà của Ông Già Noel để làm rơi hết quà. Ông ấy không hề biết đến đều này, và Giáng Sinh của chúng ta đang có nguy cơ tan thành mây khói. Trong khi số quà mang theo đang dần dần rơi ra hết, may mắn thay, Ông Già Noel đã phát hiện ra túi quà bị hỏng, thế là, nhiệm vụ của chúng ta là phải giúp ông ấy thu thập lại số quà đã mất để kịp thời cứu lấy đêm Giáng Sinh. Hình 4.1 Màn hình để bắt đầu chơi. 2.CÁC QUY LUẬT CHƠI CHÍNH 2.1 Di chuyển Người chơi sẽ di chuyển bằng cách nhấn chuột hoặc chạm vào màn hình cảm ứng trên điện thoại di động. Di chuyển lên xuống để né các vật cản (đỉnh băng nhọn và cây thông). Tích điểm bằng cách thu thập hộp quà. Chỉ có thể di chuyển trong phạm vi màn hình camera. . Hình 4.2 Màn hình để chơi game 2.2 Điểm Người chơi sẽ được cộng điểm khi ăn được hộp quà, mỗi lần ăn được 1 hộp quà người chơi sẽ được cộng 1 điểm, nếu người chơi va chạm với chứng ngại vật thì game over. Hình 4.3 Số hộp quà người chơi nhận được 3.DỮ LIỆU GAME CHRISTMAS EVE 3.1 Màn Hình Bắt Đầu Lập Trình Game được hình thành bởi 2 Sence trên màn hình và hoạt họa. Hình 4.4 Tổng thể các Sence để lập trình game 3.2 Code Trong Game Ngôn ngữ được chọn để lập trình game là ngôn ngữ C trên MonoDeveloper được Unity hỗ trợ. Hình 4.5 Code C có trong game 4.MỘT SỐ CLASS QUAN TRỌNG TRONG GAME 4.1 Santafailscript Hình 4.6 Class santafailscript Ý nghĩa: đây là đoạn script của đối tượng santa (ông già noel) để điều khiển cách di chuyển của đối tượng này. +Hàm start(): Đây là hàm mặt định trong unity, những câu lệnh trong hàm này sẽ được áp dụng trực tiếp khi màn hình (scene) chứa nó được mở ra – Trong trường hợp này là khai báo file âm thanh bellClip (tiếng chuông ông già noel) và đặt các giá trị, biến được dùng là flyPower , gameover (nếu đối tượng gameover là null thì tìm với tag là “gameover” được đặt trước). +Hàm gameover(): dừng phát âm thanh (bellClip) và gọi hàm gameover từ class gamecontroller. +Hàm update(): ở hàm này chương trình sẽ nhận vào input là 1 lần click chuột trái hoặc 1 chạm vào màn hình để tăng vị trí trục y của đối tượng santa thêm flyPower đơn vị. +Hàm OnTriggerEnter2D(): đây là một trong những hàm đặc biệt của unity để xử lý va chạm xuyên vật thể để kích hoạt một hành động nào đó – Trong trường hợp này là tính điểm khi va chạm với hộp quà (gift) trong game. +Hàm OnCollisionEnter2D():hàm đặc biệt của unity để xử lý va chạm vật thể để kích hoạt một hành động nào đó – Trong trường hợp này là gọi hàm gameover và đặt biến gameover là true. 4.2 Backgroudscript Hình 4.7 Class Backgroundscript Ý nghĩa: đây là đoạn script của hình nền (back ground) để điều khiển vòng lặp của đối tượng này. +Hàm start(): Đây là hàm mặt định trong unity, những câu lệnh trong hàm này sẽ được áp dụng trực tiếp khi màn hình (scene) chứa nó được mở ra – Trong trường hợp này là đặt vị trí ban đầu của hình nền (startpossition) và tốc độ chạy của hình nền (tranSpeed), giới hạn vòng lặp (loopRange). +Hàm Update(): khi hình nền chạy đến điểm dừng loop range thì hàm này sẽ tạo vòng lặp đặt hình nền game về lại vị trí cũ. 4.3 Gamecontroller Hình 4.8 Class Gamecontroller Ý nghĩa: đây là đoạn script điều khiển hoạt động của game (nó có khả năng quyết định khi nào game chạy và kết thúc). +Hàm start(): Đây là hàm mặc định trong unity, những câu lệnh trong hàm này sẽ được áp dụng trực tiếp khi màn hình (scene) chứa nó được mở ra – Trong trường hợp này là khai báo file âm thanh chrisSong (last christmas) và ngưng động thời gian của chương trình, mở giao diện khởi động game (begin panel) cùng với đó là ẩn đi giao diện game over. +Hàm Update(): đặt điều kiện nếu game over thì dừng phát âm thanh.Khi nhận vào Input là một lần click chuột trái hoặc một chạm cảm ứng thì bắt đầu game bằng cách cho thời gian tiếp tục chạy. +Hàm startOver(): dùng để cài vào chức năng của nút restart để khởi động lại toàn bộ game (scene1). +Hàm clickbegin(): tắt giao diện bắt đầu game (begin panel) và phát âm thanh nền (chrisSong). +Hàm getpoint(): đây là hàm tính điểm khi nhân vật santa va chạm với hộp quà. +Hàm GameOver(): khi người chơi thua thì hàm này sẽ mở gameover panel và ngưng động thời gian, hiện điểm số người chơi thu được. +Hàm QuickGame(): cài vào nút trở về menu để chuyển sang màn hình menu 4.4 Menucontroller Hình 4.9 Class Menucontroller Ý nghĩa: Dùng để điều khiển các chức năng trong màn hình menu như: +Hàm start(): Đây là hàm mặc định trong unity, những câu lệnh trong hàm này sẽ được áp dụng trực tiếp khi màn hình (scene) chứa nó được mở ra – Trong trường hợp này là ẩn đi các panel sẵn có của menu là info panel (panel thông tin nhà phát triển) và tutorials panel (panel hướng dẫn chơi). +Hàm clickplay(): dùng để cài vào nút play – Mở màn hình game chính để chơi game. +Hàm update(): rỗng (đây là hàm để cập nhật các biến đổi theo tốc độ khung hình – Trong trường hợp này là không cần đến). +Hàm openexitpanel(): dùng để hiện panel exit game (bản thông báo thoát game) khi nhấn nút có biểu tượng exit (mũi tên đỏ). +Hàm clickexit(): cài vào chức năng của nút yes (trong bản thông báo thoát game) để thoát chương trình. +Hàm infoClick(): cài vào chức năng nút info (bên góc phải trên cùng của menu) để mở panel info. +Hàm canelBtn(): cài vào chức năng của nút no (trong bản thông báo thoát game) để hủy thoát game (tắt bản thông báo thoát game). +Hàm backclick(): cài vào nút back (trong bản info) để tắt panel info. 4.5 Snowfalling Hình 4.10 Class Snowfalling Ý nghĩa: đây là đoạn script của hiệu ứng tuyết rơi để điều khiển vòng lặp của đối tượng này. +Hàm start(): Đây là hàm mặc định trong unity, những câu lệnh trong hàm này sẽ được áp dụng trực tiếp khi màn hình (scene) chứa nó được mở ra – Trong trường hợp này là khai báo các vị trí ban đầu x,y,z và đặt tốc độ rơi của đối tượng tuyết. +Hàm Update(): di chuyển vị trí (x,y) của tuyết để tạo hiệu ứng rơi +Hàm OnTriggerEnter2D(): đây là một trong những hàm đặc biệt của unity để xử lý va chạm xuyên vật thể để kích hoạt một hành động nào đó – Trong trường hợp này dùng để tạo vòng lặp (đặt lại vị trí ban đầu) cho đối tượng tuyết. 4.6 Treeiceloop Hình 4.11 Class Treeiceloop Ý nghĩa: đây là đoạn script tương tự như Snowfalling chỉ khác ở điểm là nó chỉ di chuyển trục x chứ không phải cả x và y. 5.MÔ HÌNH CHI TIẾT TỪNG MÀN HÌNH DANH SÁCH BIẾN CỐ VÀ XỬ LÝ TRÊN TỪNG MÀN HÌNH Màn hình giao diện bắt đầu của game (Scene Menu): Hình 5.1 Màn hình bắt đầu của game STT Biến cố Ý nghĩa Xử lý tương ứng Mã số xử lý 1 Play Bắt đầu game Mở Scene Main 1 2 Thoát Thoát phần mềm Mở UI panel exit 2 3 Info Thông tin game Mở UI panel infor 3 4 Turtorials Cách chơi và luật Mở UI panel Turtorials 4 Bảng 5.1 Biến cố trên màn hình STT Mã số Loại Ý nghĩa Ghi chú 1 1 Button Mở Scene Main 2 2 Button Thoát game 3 3 Button Thông tin game 4 4 Button Hướng dẫn chơi Bảng 5.2 Xử lý biến cố Màn hình main STT Biến cố Ý nghĩa Xử lý tương ứng Mã số xử lý 1 Tap to play Bắt đầu game Run time 5 2 Click, tap Điều khiển Santa Flypower = +38 6 3 Va chạm quà Thu thập quà Score = +1 7 4 Va chạm vật cản Kết thúc game Xuất hiện Panel game over 8 Hình 5.2 Màn hình chơi game Bảng 5.3 Biến cố trên Scene Main STT Mã số Loại Ý nghĩa Ghi chú 1 5 Click, tap Bắt đầu run time Runtime = 1 2 6 Click, tap Điều khiển Santa bay lên Flypower=+38 3 7 Textbox Điểm số Score=+1 4 8 Panel Kết thúc game gameoverPanel Bảng 5.4 Xử lý biến cố Màn hình game over: Hình 5.3Màn hình game over. STT Biến cố Ý nghĩa Xử lý tương ứng Mã số xử lý 1 Restart Bắt đầu lại game Mở Scene Main 9 2 Thoát Thoát ra màn hình lúc đầu Mở Scene Menu 10 3 Score Số điểm người chơi nhận được Thông qua số quà nhặt được 11 Bảng 5.5 Biến cố trên màn hình over STT Mã số Loại Ý nghĩa Ghi chú 1 9 Button Tạo mới game, mở Scene main 2 10 Button Trả về màn hình đầu tiên 3 11 Textbox Trả về số hộp quà Bảng 5.6 Xử lý biến cố Sơ đồ use case KẾT LUẬN Sau nhiều ngày suy nghĩ kĩ để chọn đề tài tốt, cuối cùng chúng em cũng đã chọn được đề tài làm game 2d trên Unity Game Chirstmas Eve. Bước đầu tìm hiểu về Unity và Game Engine chúng em gặp rất nhiều khó khăn trong việc tìm tài liệu và xây dựng ý tưởng game vì tài liệu về unity đa phân bằng tiếng anh, nhưng sau khoảng 1 tháng cố gắng tìm tòi, học hỏi các bạn đi trước thì chúng em cũng đã làm cho mình được 1 game gần hoàn chỉnh để phục vụ cho đề tài báo cáo. Trong thời gian làm đề tài chúng em cũng có một số những vấn đề đạt được và chưa đạt được. Đạt Được Hiểu được cấu trúc, cách thức hoạt động, cách thức phát triển ứng dụng trên Unity Nâng cao kiến thức lập trình và tiếng anh chuyên ngành thông qua những tài liệu về Unity bằng tiếng Anh. Xây dựng được các nhân vật trong game bằng phần mềm hỗ trợ photoshop. Tổ chức load các màn tương ứng thông qua các button. Xây dựng các chức năng như điểm, máu, màn chơi thông qua ngôn ngữ lập trình C trên MonoDevelop. Tạo âm thanh cho cho trò chơi và 1 số chức năng khác. Ngoài những thứ đặt được thì em còn rất nhiều những vấn đề chưa đạt được. Chưa Đạt Được Do kiến thức của chúng em về Unity còn hạn hẹp nên các chức năng trong game còn chưa được tốt. Chưa xây dựng được hoàn chỉnh 1 game. Các Script trong Unity tổ chức chưa thực sự rõ ràng. Chưa có sự phong phú trong màn chơi và nhân vật. Thuận Lợi Vận dụng được các kiến thức đã học trong. Được sự giúp đỡ từ cô và các bạn. Tài liệu rất nhiều trên Internet. Khó Khăn Môi trường lập trình mới. Cần thời gian để thích nghi và tìm hiểu. Kinh Nghiệm Rút Ra Quản lý và sắp xếp thời gian một cách hợp lý. Cải thiện làm việc nhóm. Tập trung trong công việc.  Hướng Phát Triển Tối ưu hóa. Tăng thêm màn chơi. Cung cấp thêm công cụ. Phát triển ứng dụng trên nền hệ điều hành IOS. TÀI LIỆU THAM KHẢO Ý tưởng khởi nguồn từ flappy bird: 1 http:vneconomy.vncuocsongso10lydoflappybirdgaysot20140207112014692.htm 2 https:news.zing.vnnhunggamedidongtunggaysottoancaupost390933.html Tìm hiểu về Unity 3https:vi.wikipedia.orgwikiUnity_(ph%E1%BA%A7n_m%E1%BB%81m_l%C3%A0m_game) 4 https:unity.comlearneducators 5 https:xemtailieu.comtailieubaibaocaodoancosonganhlaptrinhgamebansungunity3d1854023.html 6 https:viblo.asiapgioithieuveunityenginegameenginephobiennhathiennayV3m5WBj8lO7 7 https:techblog.vngioithieuveunityenginegameenginephobiennhathiennay Các game tham khảo 8 Flappy Bird 9 Game bắn máy bay 2D

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM

ĐỒ ÁN MÔN HỌC CÔNG NGHỆ PHẦN MỀM

PHẦN MỀM GAME CHRISTMAS EVE

NGÀNH: CÔNG NGHỆ THÔNG TIN

Giảng viên hướng dẫn: Tạ Thu Thủy

Sinh viên thực hiện:

Trang 3

LỜI MỞ ĐẦU

Trong thời đại công nghệ thông tin như hiện nay, sản phẩm côngnghệ ngày càng chịu sự đánh giá khắt khe hơn từ phía những ngườidùng, đặc biệt là về sản phẩm Game được nhận rất nhiều sự đánh giá

từ phía các Game thủ, hay chỉ là những người chơi bình thường.Ngành công nghiệp Game hiện nay có thể nói là bùng nổ, với tốc độphát triển đến chóng mặt, rất nhiều những Game hay và hấp dẫn đãđược ra đời trong thời gian qua Phía sau những Game phát triển và nổitiếng như vậy đều có một Game Engine Game Engine là một công cụ

hỗ trợ, một Middleware giúp người phát triển viết Game một cáchnhanh chóng và đơn giản, đồng thời cung cấp khả năng tái sử dụng cáctài nguyên và mã nguồn cao do có thể phát triển nhiều Game từ mộtGame Engine

Từ xu hướng phát triển và những bất cập trên, đồ án này sẽkhảo sát và nghiên cứu về Engine Unity – một Game Engine rất phổbiến và không kém mạnh mẽ hiện nay nhằm thực nghiệm việc pháttriển một trò chơi (Demo) 2D Chuẩn bị kiến thức và kỹ năng cho địnhhướng nghề nghiệp sau này của chúng em, góp phần vào sự phát triểncủa ngành công nghiệp Game nước nhà Các chương đầu trong tài liệu

sẽ trình bày lần lượt các khái niệm chung về Game Engine và thế giới2D

Các chương tiếp theo sẽ giới thiệu về Engine Unity bao gồm cácđặc điểm, tính năng, công cụ và thành phần trong Engine này Saunhững nội dung về thiết kế, tài liệu sẽ trình bày về việc lập trình trênUnity khi giới thiệu về ngôn ngữ lập trình cùng các lớp, hàm trong thưviện dựng sẵn của Unity thông qua các ví dụ thực tế khi phát triển mộtgame 2D Cuối cùng là giới thiệu về bối cảnh, cốt truyện, tài liệu hướngdẫn sử dụng của trò chơi Demo cùng chương tổng kết về các khó khăn

và những thành quả trong suốt quá trình phát triển trò chơi Demo trênUnity

Trang 4

LỜI CÁM ƠN

Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin,Trường Đại học Công nghệ Thành phố Hồ Chí Minh (HUTECH) đã tạođiều kiện tốt cho chúng em thực hiện đề tài này

Em xin chân thành cảm ơn Cô Tạ Thu Thủy, là người đã tận tìnhhướng dẫn em, chỉ bảo em trong suốt thời gian học tập

Mặc dù chúng 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ếusót, kính mong sự cảm thông và tận tình chỉ bảo của quý Cô và cácbạn

Sinh viên thực hiên

Trần Đức Huy Nguyễn Minh Hiền Phạm Mai Hương Huỳnh Nhật Sang Trần Quang Nghĩa

Trang 5

ĐIỂM VÀ NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Trang 6

Bảng phân công nhiệm vụ

Nguyễn Minh Hiền Programer+Word báo cáoHuỳnh Nhật Sang Graphics Designer+Power point

báo cáoPhạm Mai Hương Graphics Designer+Word báo cáoTrần Đức Huy Audio Maker+Word báo cáoTrần Quang Nghĩa Tester+Powerpoint báo cáo

Trang 7

Mục lục

CHƯƠNG 1: TỔNG QUAN 7

1 Lý do chọn đề tài 7

2 Đối tượng nghiên cứu 8

CHƯƠNG 2: UNITY ENGINE 9

1 GIỚI THIỆU CHUNG 9

2 CÁC THÀNH PHẦN TRONG UNITY 11

2.1 Assets 12

2.2 Scenes 13

2.3 Game Object 13

2.4 Components 14

2.5 Scripts 15

2.6 Prefabs 16

3 GIAO DIỆN CỦA UNITY 17

CHƯƠNG 3: MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME ENGINE TRÊN UNITY 18

1 LOAD HOẠT HỌA 18

1.1 Vấn Đề 18

1.2 Giải Pháp 18

2 CHUYỂN ĐỘNG MÔ HÌNH NHẬT VẬT 2D 19

2.1 Vấn Đề 19

2.2 Giải Pháp 19

3.THÊM SỰ KIỆN VÀO CHUYỂN ĐỘNG CỦA NHÂN VẬT 21

3.1 Vấn đề 21

3.2 Giải pháp 21

4.XÂY DỰNG GIAO DIỆN GAME 23

Trang 8

4.1 Vấn đề 23

4.2 Giải pháp 23

5.ÂM THANH TRONG GAME 25

5.1 Vấn đề 25

5.2 Giải pháp 26

CHƯƠNG 4 ỨNG DỤNG GAME PHÁT TRIỂN TRÊN UNITY 29

1 GIỚI THIỆU GAME 30

2 CÁC QUY LUẬT CHƠI CHÍNH 31

2.1 Di chuyển 31

2.2 Điểm 32

3 DỮ LIỆU GAME CHRISTMAS EVE 33

3.1 Màn Hình Bắt Đầu Lập Trình 33

3.2 Code Trong Game34 4 MỘT SỐ CLASS QUAN TRỌNG TRONG GAME 35

4.1 Santafailscript 35

4.2Backgroudscript 36

4.3Gamecontroller 37

5 MÔ HÌNH CHI TIẾT TỪNG MÀN HÌNH 42

Đạt Được  Đạt Được 48

Thuận Lợi  Đạt Được 49

Khó Khăn  Đạt Được 49

Kinh Nghiệm Rút Ra  Đạt Được 49

Hướng Phát Triển  Đạt Được 49

Trang 9

CHƯƠNG 1: TỔNG QUAN

1 Lý do chọn đề tài

Xã hội ngày càng phát triển, nhu cầu giải trí của con người ngày càng tăng cao Cùng với sự phát triển của công nghệ thông tin, điện tử, các thiết bị chơi game ngày càng phổ biến Trong những năm gần đây ngành công nghệ game nổi lên và đem lại doanh thu khổng lồ Có thể nói game không chỉ là một phương tiện giải trí cơ bản, nó còn là một lĩnh vực đáng quan tâm và theo đuổi Thiết kế game là một công việc không dễ dàng đòi hỏi rất nhiều thời gian và công sức, tuy nhiên qua đó ta có thể biến những dòng code khô khan thành những trải nghiệm thú vị cho người chơi, đồng thời có thể học hỏi những kiến thức mới

về nền tảng Unity Framework và củng cố ngôn ngữ C#.

2 Đối tượng nghiên cứu

Trang 10

CHƯƠNG 2: UNITY ENGINE

1 GIỚI THIỆU CHUNG

Hình 1.1 - Logo của Unity Engine

 Nhà phát triển: Unity Technologies

 Phiên bản mới nhất : 5 (phát hành vào ngày11/4/2012)

 Đượ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, Android, PS3 (chỉ đóng gói ; cần giấyphép bổ sung cho từng nền tảng)

ra Mono trước khi nó được thực thi

Trang 11

Điều này rất quan trọng cho Game để thực thi code vàonhữ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ủanhững thư viện phần mền 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à DirectXcho kết xuất hình ả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ặccông cụ trực quan vào Unity, vì thế chúng ta không cần phải lolắng về việc phải học thế nào để sử dụng chúng một cách riênglẻ

Unity có một cộng đồng người dùng rất mạnh (rất lớn) luônchia sẻ những Plugins, công cụ của họ dưới hình thức gói phầnmề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 một WebPlayer 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ểnGame cho hệ máy Wii của Nintendo và 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 tacòn có thể phát triển Game cho các hệ máy console và thiết bị diđộng

Trang 12

2 CÁC THÀNH PHẦN TRONG UNITY

2.1 Assets

Assets 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àisản (Assets) Điều này lí giải tại sao tất cả các tập tin, thư mụccủa các dự án Unity đều được lưu trữ trong một thư mục có tên

Trang 13

Hình 1.3 - Các Scene của Unity

2.3 Game Object

Khi Assets được sử dụng trong Scene, chúng trở thành GameObject – 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ấtmột thành phần là Transform Transform là thông tin về vị trí, gócxoay và tỉ lệ của đối tượng, tất cả được mô tả bởi bộ 3 số X, Y, Ztrong hệ trục tọa độ Thành phần này có thể được tùy biến lạitrong quá trình lập trình nhằm thay đổi vị trí, góc quay và tỉ lệ củađối tượng qua các đoạn mã

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

Trang 14

2.4 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ạnhkhác trong chức năng của Game Object trong trò chơi Bằngcách “gắn” chúng vào trong Game Object, chúng ta ngay lập tức

có thể áp dụng tác động của chúng lên đối tượng NhữngComponents phổ biến trong quá trình phát triển trò chơi đềuđược Unity hỗ trợ sẵn

Hình 1.5 - Các thành phần trong đối tượng camera

2.5 Scripts

Được Unity xem như một Components, Script là một thànhphần thiết yếu trong quá trình phát triển trò chơi và đáng được đề

Trang 15

cập đến như một khái niệm “chìa khóa” Unity cung cấp chochúng ta khả năng viết Script bằng cả 3 loại ngôn ngữ là:JavaScript, C# và Boo (một dẫn xuất của ngôn ngữ Python).

Hình1.6 -

file

Mộtđoạn

script

thi

được thì nó phải được gắn vào một đối tượng

Hình 1.7 - Một file Script đang gắn vào đối tượng

2.6 Prefabs

Prefabs cho phép chúng ta lưu trữ các đối tượng với nhữngComponents và những thiết đặt hoàn chỉnh

Trang 16

Hình 1.8 - Một số đối tượng trong Prefabs

3 GIAO DIỆN CỦA UNITY

Giao diện của Unity có khả năng tùy chỉnh bố trí tương tự nhưnhiều môi trường làm việc khác Dưới đây là một kiểu bố trí điểnhình trong Unity:

Hình 1.9 - Giao diện của Unity

Chú thích:

∗ Chú thích:

Scene (1): Nơi mà trò chơi sẽ được xây dựng

Hierarchy (2): Danh sách các Game Object trong

scene

Trang 17

Inspector (3): Những thiết lập, thành phần, thuộc

tính của đối tượng (hoặc Asset) đang được chọn

Game (4): Cửa sổ xem trước, nó chỉ hoạt động

trong chế độ “Play” (Preview – xem trước)

Project (5): Danh sách các Assets của dự án,

được ví như thư viện của dự án

CHƯƠNG 3: MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY

DỰNG GAME ENGINE TRÊN UNITY

1 LOAD HOẠT HỌA

1.1 Vấn Đề

Game 2D được xây dựng từ nhiều mô hình 2D được đặt lênkhông gian 2 chiều sao cho hài hòa với nhau để tạo thành cảnhvật trong game Do đó việc nạp và hiển thị được mô hình 2Dtrong game là vô cùng quan trọng

1.2 Giải Pháp

Các mô hình 2D, 3D thông thường được thiết kế sẵn bằng cácphần mềm thiết kế 3D chuyên dụng như Adobe InDesign, AdobePhotoshop, CorelDRAW, Sau đó, mô hình sẽ được đưa vàogame engine để sử dụng

Ta có thể kéo thả để đưa các mô hình 2D vào mục spriteunity như sau:

Trang 18

Hình 2.1 - Minh họa kéo thả các mô hình 2D vào thư mục Sprite

Engine Unity hỗ trợ rất nhiều định dạng mô hình 2D, 3D khácnhau như: PNG, JPG

Unity có hỗ trợ load mô hình bằng cách kéo thả SPRITE vào vịtrí bất kỳ trong Scene

động chuyển thành một AnimationClip Điều này giúp animation

này có thể dùng cho các mô hình khác trong project

Trước hết ta phải tạo AnimationClip từ animation có sẵn của

mô hình Có 2 loại mô hình 2D có sẵn animation:

 Loại thứ nhất:

Trang 19

Mô hình 2D có chứa nhiều animation bên trong Đối tượngsanta (ông già noel) có 2 animation là ridding và flyhigh.

Hình 2.2 - Mô hình 2D bên trong chứa nhiều animation

Trang 20

Tiếp theo, để gọi thực hiện một AnimationClip trong một đốitượng ta chọn vào đối tượng muốn thêm animation Sau đó chọnwindow mở cửa sổ animation và tạo một animation mới bằngthao tác kéo thả quen thuộc trong unity:

Hình 2.4 - Tạo animation bằng cách kéo thả

3.THÊM SỰ KIỆN VÀO CHUYỂN ĐỘNG CỦA NHÂN VẬT

3.1 Vấn đề

Trong lúc lập trình kịch bản game, chúng ta muốn biết khi nàomột nhân vật chuyển động xong để có bước xử lý tiếp theo.Trong Unity, khi một chuyển động chạy xong không tự phát ra sựkiện

3.2 Giải pháp

Trang 21

Hình 2.5 - Đặt điều kiện flypower để chuyển animation.

4.XÂY DỰNG GIAO DIỆN GAME

4.1 Vấn đề

Giao diện đồ họa người dùng là một phần quan trọng khôngthể thiếu trong khi xây dựng một ứng dụng game hay bất cứ mộtứng dụng nào để vẽ các đối tượng đồ họa như Button, Label,Checkbox, Slider, … lên màn hình

4.2 Giải pháp

Để làm được điều này chúng ta dùng cách click phải chuộttạo new gameobject với dạng UI Sau đó click chọn CANVAS

Trang 22

Hình 2.6 - Tạo UI để thêm button

Sau đó tạo click phải chuột tương tự để tạo button trongcanvas như sau:

Trang 24

nhau hay các hiệu ứng đẹp mắt mà không có âm thanh Âmthanh 3 chiều sẽ làm cho game thực hơn và sống động hơn.

Hình 2.9 - Thông tin file âm thanh

 Cách 1: Tạo trên giao diện

Trên menu của Unity, vào GameObject Create Empty Create Empty

Trang 25

Chọn đối tượng vừa tạo và gắn thành phần “AudioSource”cho đối tượng này AudioSource là một đối tượng âm thanh.Muốn Play hay Stop, thay đổi cách lặp, tăng giảm volume nhạcthì phải thông qua đối tượng này.

Hình 2.10 - Thêm thành phần Audio Source

Trang 26

Hình 2.11 - Thêm file âm thanh cho thành phần

AudioSource

Nếu thực hiện xong các bước trên, chúng ta có thể chạy game

để nghe thử Việc tạo đối tượng âm thanh trên giao diện khá đơngiản, nhưng để áp dụng vào cho game thì không được linh hoạtbằng cách sử dụng script

Trang 27

 Cách 2: Cách chơi nhạc bằng code

Gán đường dẫn file nhạc cho âm thanh:

Sau đó chỉ cần gọi các phương thức Play() để chạy file âm thanh

Trang 28

Chương 4 ỨNG DỤNG GAME PHÁT TRIỂN TRÊN UNITY

1 GIỚI THIỆU GAME

Giáng sinh năm này, khi Ông Già Noel cùng những chú Yêu Tinh lùnđang chuẩn bị những món quà cho mọi đứa trẻ đang trông chờ

Hằng năm, những chú Yêu Tinh sẽ được nghỉ trước ngày Giáng Sinh

30 ngày Vậy mà, vì hiện tượng bùng nổ dân số đang ngày càng trầm trọng, nên số lượng quà mỗi năm càng ngày càng tăng vì số lượng trẻ

em càng ngày càng tăng Thế là, con số 30 ngày nghỉ của các chú YêuTinh cứ rút lại dần chỉ còn 20 ngày, 15 ngày, 10 ngày…

Đến nay, sau khi đã hoàn thành tất cả những món quà cho trẻ em trên khắp thế giới thì kì nghỉ Giáng Sinh của những chú Yêu Tinh gần như chả còn ngày nào Từ đó, đã gây nên sự tức giận trong lòng các chú Yêu Tinh lùn Họ muốn được những kì nghỉ như mọi năm, họ lo sợ rằngtrong khi mình chuẩn bị sẵn sàng cho mọi đứa trẻ đón Giáng Sinh thì chính mình còn không có được kì nghỉ Giáng Sinh

Cuối cùng, những chú Yêu Tinh đã quyết định, trút hết cơn giận của mình vào đêm Giáng Sinh năm nay Họ đã lên kế hoạch làm thủng túi quà của Ông Già Noel để làm rơi hết quà Ông ấy không hề biết đến đều này, và Giáng Sinh của chúng ta đang có nguy cơ tan thành mây khói

Trong khi số quà mang theo đang dần dần rơi ra hết, may mắn thay, Ông Già Noel đã phát hiện ra túi quà bị hỏng, thế là, nhiệm vụ của chúng ta là phải giúp ông ấy thu thập lại số quà đã mất để kịp thời cứu lấy đêm Giáng Sinh

Trang 29

 Tích điểm bằng cách thu thập hộp quà.

 Chỉ có thể di chuyển trong phạm vi màn hình camera

Trang 30

Hình 4.2 Màn hình để chơi game

2.2 Điểm

Người chơi sẽ được cộng điểm khi ăn được hộp quà, mỗi lần

ăn được 1 hộp quà người chơi sẽ được cộng 1 điểm, nếu người

chơi va chạm với chứng ngại vật thì game over

Trang 31

Hình 4.3 Số hộp quà người chơi nhận được

3 DỮ LIỆU GAME CHRISTMAS EVE

3.1 Màn Hình Bắt Đầu Lập Trình

Game được hình thành bởi 2 Sence trên màn hình và hoạthọa

Trang 32

Hình 4.4 Tổng thể các Sence để lập trình game

3.2 Code Trong Game

Ngôn ngữ được chọn để lập trình game là ngôn ngữ C# trênMonoDeveloper được Unity hỗ trợ

Trang 33

Hình 4.5 Code C# có trong game

4 MỘT SỐ CLASS QUAN TRỌNG TRONG GAME

4.1 Santafailscript

Hình 4.6 Class santafailscript

Ý nghĩa: đây là đoạn script của đối tượng santa (ông già noel) để điều khiển cách di chuyển của đối tượng này.

Trang 34

+Hàm start(): Đây là hàm mặt định trong unity, những câu lệnh

trong hàm này sẽ được áp dụng trực tiếp khi màn hình (scene) chứa nó được mở ra – Trong trường hợp này là khai báo file âm thanh bellClip (tiếng chuông ông già noel) và đặt các giá trị, biến được dùng là flyPower , gameover (nếu đối tượng gameover là null thì tìm với tag là “gameover” được đặt trước)

+Hàm gameover(): dừng phát âm thanh (bellClip) và gọi hàm

gameover từ class gamecontroller

+Hàm update(): ở hàm này chương trình sẽ nhận vào input là 1

lần click chuột trái hoặc 1 chạm vào màn hình để tăng vị trí trục y của đối tượng santa thêm flyPower đơn vị

+Hàm OnTriggerEnter2D(): đây là một trong những hàm đặc

biệt của unity để xử lý va chạm xuyên vật thể để kích hoạt một hành động nào đó – Trong trường hợp này là tính điểm khi va chạm với hộp quà (gift) trong game

+Hàm OnCollisionEnter2D():hàm đặc biệt của unity để xử lý va

chạm vật thể để kích hoạt một hành động nào đó – Trong trường hợp này là gọi hàm gameover và đặt biến gameover là true

4.2 Backgroudscript

Ngày đăng: 10/08/2020, 22:53

HÌNH ẢNH LIÊN QUAN

Hình 1. 3- Các Scene của Unity - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 1. 3- Các Scene của Unity (Trang 14)
Hình 1.4 - Kéo tài nguyên vào Scene để sử dụng - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 1.4 Kéo tài nguyên vào Scene để sử dụng (Trang 15)
Hình 1.5 - Các thành phần trong đối tượng camera - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 1.5 Các thành phần trong đối tượng camera (Trang 16)
Hình 1.7 - Một file Script đang gắn vào đối tượng - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 1.7 Một file Script đang gắn vào đối tượng (Trang 17)
Hình 1.9 - Giao diện của Unity - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 1.9 Giao diện của Unity (Trang 18)
Hình 1.8 - Một số đối tượng trong Prefabs - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 1.8 Một số đối tượng trong Prefabs (Trang 18)
Hình 2.1 - Minh họa kéo thả các mô hình 2D vào thư mục Sprite - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.1 Minh họa kéo thả các mô hình 2D vào thư mục Sprite (Trang 20)
Hình 2.2 - Mô hình 2D bên trong chứa nhiều animation - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.2 Mô hình 2D bên trong chứa nhiều animation (Trang 21)
Mô hình 2D có chứa nhiều animation bên trong .Đối tượng santa (ông già noel) có 2 animation là ridding và flyhigh. - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
h ình 2D có chứa nhiều animation bên trong .Đối tượng santa (ông già noel) có 2 animation là ridding và flyhigh (Trang 21)
Hình 2.4 - Tạo animation bằng cách kéo thả. - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.4 Tạo animation bằng cách kéo thả (Trang 22)
Hình 2.5 - Đặt điều kiện flypower để chuyển animation. - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.5 Đặt điều kiện flypower để chuyển animation (Trang 23)
Hình 2.6 - Tạo UI để thêm button - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.6 Tạo UI để thêm button (Trang 24)
Hình 2.7 - Tạo Button - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.7 Tạo Button (Trang 25)
Hình 2.8 - Chèn ảnh nền vào panel - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.8 Chèn ảnh nền vào panel (Trang 25)
Hình 2.1 0- Thêm thành phần AudioSource - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.1 0- Thêm thành phần AudioSource (Trang 27)
Hình 2.11 - Thêm file âm thanh cho thành phần AudioSource - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 2.11 Thêm file âm thanh cho thành phần AudioSource (Trang 28)
Hình 4.1 Màn hình để bắt đầu chơi. - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.1 Màn hình để bắt đầu chơi (Trang 30)
Hình 4.2 Màn hình để chơi game - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.2 Màn hình để chơi game (Trang 31)
Hình 4.3 Số hộp quà người chơi nhận được - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.3 Số hộp quà người chơi nhận được (Trang 32)
Hình 4.4 Tổng thể các Sence để lập trình game - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.4 Tổng thể các Sence để lập trình game (Trang 33)
Hình 4.5 Code C# có trong game - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.5 Code C# có trong game (Trang 34)
Hình 4.6 Class santafailscript - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.6 Class santafailscript (Trang 34)
Hình 4.7 Class Backgroundscript - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.7 Class Backgroundscript (Trang 36)
Hình 4.8 Class Gamecontroller - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.8 Class Gamecontroller (Trang 37)
Hình 4.9 Class Menucontroller - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.9 Class Menucontroller (Trang 38)
Hình 4.10 Class Snowfalling - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.10 Class Snowfalling (Trang 40)
5. MÔ HÌNH CHI TIẾT TỪNG MÀN HÌNH - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
5. MÔ HÌNH CHI TIẾT TỪNG MÀN HÌNH (Trang 41)
Hình 4.11 Class Treeiceloop - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 4.11 Class Treeiceloop (Trang 41)
Bảng 5.3 Biến cố trên Scene Main - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Bảng 5.3 Biến cố trên Scene Main (Trang 43)
Hình 5.3-Màn hình game over. - Báo cáo Công nghệ phần mềm, làm quen với Unity và làm game 2D đơn giản
Hình 5.3 Màn hình game over (Trang 44)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w