Game Engine là một công cụ hỗ trợ 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
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Trang 2LẬP TRÌNH GAME ĐA NỀN TẢNG VỚI UNITY
Sinh viên thực hiện: Nguyễn Trọng Tuyến
Lớp: 53K1 - CNTT
Giáo viên hướng dẫn: ThS Lê Văn Thành
Trang 3
LỜI CẢM ƠN
Trong khoảng thời gian học tập và rèn luyện tại trường Đại học Vinh, em xin chân thành cảm ơn tất cả thầy cô trong trường nói chung và trong Khoa Công nghệ thông tin nói riêng đã tận tình giảng dạy, hướng dẫn, truyền đạt những kiến thức, kinh nghiệm quý báu cho em Với những kiến thức đó, em thực sự tự tin trở thành một Kỹ
sư Công nghệ thông tin
Đặc biệt, em xin gửi lời cảm ơn chân thành tới thầy giáo ThS Lê Văn Thành, người đã tận tình hướng dẫn, định hướng, giúp đỡ và truyền đạt những kinh
nghiệm, phương pháp nghiên cứu khoa học cho em suốt quá trình thực hiện đồ án tốt nghiệp này
Tuy nhiên, do thực hiện trong một thời gian ngắn cũng như kiến thức của em
c n có nhiều hạn chế nên trong đồ án còn có nhiều sai sót Em rất mong nhận được sự quan tâm góp ý của quý thầy cô và các bạn
Xin chân thành cảm ơn!
Trang 4MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC ii
LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ GAME ENGINE 2
1.1 Khái niệm Game Engine 2
1.2 Mục đích 2
1.3 Xu hướng hiện tại 3
1.4 Phần mềm trung gian 4
1.5 Một số Game Engine nổi tiếng hiện nay 5
CHƯƠNG 2: UNITY ENGINE 6
2.1 Giới thiệu chung 6
2.2 Lí do nên chọn Unity để phát triển game 7
2.3 Các thành phần của Unity 9
2.3.1 Các khái niệm cơ bản trong Unity 9
2.3.2 Giao diện của Unity Editor 14
CHƯƠNG 3: LẬP TRÌNH TRÒ CHƠI GOKURUN 18
BẰNG ENGINE UNITY 18
3.1 Ý tưởng 18
3.2 Các bước tiến hành 19
3.2.1 Diễn hoạt (animation) 19
3.2.2 Tạo animation theo kỹ thuật Key Frame 20
Trang 53.2.9 Cơ sở dữ liệu trong Unity 32
3.2.10 Build game 34
CHƯƠNG 4: GIỚI THIỆU GAME DEMO - GAME GOKURUN 36
4.1 Giao diện các màn chơi 36
4.2 Hướng dẫn chơi game 38
KẾT LUẬN 40
1 Những vấn đề đạt được 40
2 Hạn chế 40
3 Hướng phát triển 40
TÀI LIỆU THAM KHẢO 41
Trang 6LỜ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 (công cụ) Game Engine là một công cụ hỗ trợ 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ại Việt Nam, ngành công nghiệp Game mới chỉ đang phát triển đa số chủ yếu vẫn là phát hành Game Các công ty hiện nay đa số đều chỉ nhen nhóm những dự án nhỏ và kém hấp dẫn gây nên không ít thất vọng từ những Game thủ ủng hộ Game nước nhà
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 Chuẩn bị kiến thức và kỹ năng cho định hướng nghề nghiệp (phát triển Game) sau này của em, góp phần vào sự phát triển của ngành công nghiệp Game nước nhà
Nghệ An, tháng 5 năm 2017
Sinh viên thực hiện
Nguyễn Trọng Tuyến
Trang 7CHƯƠNG I TỔNG QUAN VỀ GAME ENGINE
1.1 Khái niệm Game Engine
Một Game Engine (hay công cụ tạo Game / động cơ Game) là một phần mềm được viết cho mục đích thiết kế và phát triển video Game Có rất nhiều loại Game Engine dùng để thiết kế Game cho các hệ máy như hệ Consoles hay máy tính cá nhân (PC) Chức năng cốt lõi của Game Engine phần lớn nằm trong công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2 chiều (2D) hay 3 chiều (3D), công cụ vật lý (hay công
cụ tính toán và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động (Animation), trí tuệ nhân tạo, phân luồng, tạo dòng dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị,
và kết nối mạng Quá trình phát triển Game tiết kiệm được rất nhiều thời gian và kinh phí vào việc tái sử dụng và tái thích ứng một Engine để tạo nhiều Game khác nhau
1.2 Mục đích
Thuật ngữ Game Engine xuất hiện lần đầu vào giữa những năm 90, và với tốc
độ phát triển công nghệ nhanh đến chóng mặt, rất nhiều Game Engine đã ra đời cho nhiều mục đích khác nhau, không chỉ còn giới hạn cho giải trí đơn thuần mà còn cho các mục đích khác như Mô phỏng, huấn luyện ảo, y tế ảo, mô phỏng các ứng dụng quân sự,…
Game Engine cung cấp một bộ các công cụ phát triển trực quan và có thể tái sử dụng từng thành phần trong đó Nói chung các bộ công cụ này cung cấp một môi trường phát triển tích hợp được đơn giản hóa Phát triển ứng dụng nhanh (Rapid Application Development) cho Game theo cách lập trình hướng dữ liệu Những Game Engine này đôi khi c n được gọi là các "phần mềm trung gian cho Game" (Game Middleware), như ý nghĩa của thuật ngữ, chúng cung cấp một nền tảng phần mềm linh hoạt và dễ dàng sử dụng lại với mọi chức năng cốt lõi cần thiết ngay trong nó để có thể phát triển một ứng dụng Game đồng thời giảm giá thành, độ phức tạp, và kịp thời hạn phát hành - tất cả các yếu tố quan trọng trong ngành công nghiệp Game đầy cạnh tranh
Giống như các phần mềm trung gian khác, Game Engine thường cung cấp một nền tảng trừu tượng hóa, cho phép một Game có thể chạy trên nhiều hệ máy bao gồm các hệ console hoặc máy tính cá nhân với một vài thay đổi (nếu cần) trong mã nguồn của Game đó Thông thường, phần mềm trung gian cho Game được thiết kế với một nền tảng kiến trúc dựa trên các thành phần khác, cho phép các hệ thống khác nhau trong Engine có thể thay thế hoặc mở rộng với các phần mềm trung gian khác chuyên
Trang 8biệt hơn như là Havok cho hệ thống vật lý trong Game, Miles Sound System cho âm thanh, hay Bink cho các đoạn video
Game engine cung cấp một bộ các công cụ phát triển trực quan và có thể tái sử dụng từng thành phần trong đó Nói chung các bộ công cụ này cung cấp một môi trường phát triển tích hợp được đơn giản hóa Phát triển ứng dụng nhanh (tiếng Anh:rapid application development) cho game theo cách lập trình hướng dữ liệu Những game engine này đôi khi c n được gọi là các "phần mềm trung gian cho game"(game middleware), như ý nghĩa của thật ngữ, chúng cung cấp một nền tảng phần mềm linh hoạt và dễ dàng sử dụng lại với mọi chức năng cốt lõi cần thiết ngay trong nó để có thể phát triển một ứng dụng game đồng thời giảm giá thành, độ phức tạp, và kịp thời hạn phát hành- tất cả các yếu tố quan trọng trong ngành công nghiệp game đầy cạnh tranh
1.3 Xu hướng hiện tại
Với công nghệ tạo Game Engine càng phát triển và trở nên thân thiện hơn với người sử dụng, ứng dụng của nó càng được mở rộng, và giờ đây được sử dụng để tạo các Game mang mục đích khác với giải trí đơn thuần như: mô phỏng, huấn luyện ảo, y
tế ảo, và mô phỏng các ứng dụng quân sự
Nhiều Game Engine đang được tạo ra bằng các ngôn ngữ lập trình cấp cao như Java và C# hay NET (ví dụ: TorqueX, và Visual3D.NET) hay Python (Panda3D)
Vì hầu hết các Game 3D hiện nay đều có giới hạn cho GPU (giới hạn bởi sức mạnh của card đồ họa), khả năng gây chậm máy của các ngôn ngữ lập trình cấp cao trở nên không đáng kể, trong khi việc tăng năng suất được cung cấp bởi các ngôn ngữ này lại có lợi cho các nhà phát triển Game Engine
Thêm vào đó, nhiều game engine đang được tạo ra bằng các ngôn ngữ lập trình cấp cao như Java và C# hay NET (ví dụ TorqueX, và Visual3D.NET) hay Python (Panda3D) Vì hầu hết các game 3D hiện nay đều có giới hạn cho GPU(giới hạn bởi sức mạnh của card đồ họa), khả năng gây chậm máy của các ngôn ngữ lập trình cấp
Trang 9này trở nên dễ dàng hơn và rẻ hơn bao giờ hết để phát triển một game đa hệ máy có hỗ trợ managed frameworks
Game engine hiện đại là một trong những ứng dụng được viết ra (bằng các ngôn ngữ lập trình) phức tạp nhất, thường xuyên phải có rất nhiều tinh chỉnh trong hệ thống
để đảm bảo kiểm soát chính xác trải nghiệm người dùng Sự phát triển liên tục của game engine đã tạo ra một sự phân chia mạnh mẽ giữa dựng hình, kịch bản, thiết kế hình ảnh, và thiết kế cấp độ(các màn chơi ) Bây giờ thông thường nhất là: một đội ngũ phát triển game điển hình phải có số lượng họa sĩ gấp vài lần số lượng lập trình viên
Mặc dù thuật ngữ lần đầu được sử dụng vào những năm 90, nhưng vẫn có một vài hệ thống trước đó trong thập niên 80 cũng được coi như là game engine, như là AGI và SCI của Sierra, SCUMM của LucasArts và Freescape engine của Incentive Software Không như hầu hết các game engine ngày nay, các engine này chưa bao giờ được sử dụng bởi bất kỳ một hãng thứ 3 nào(trừ trường hợp hê thống SCUMM đã được cấp phép và sử dụng bởi Humongous Entertainment)
1.4 Phần mềm trung gian
Một số hãng hiện nay chuyên tập trung vào phát triển các bộ phần mềm gọi là
phần mềm trung gian (middleware) Các nhà phát triển middleware cố gắng "tái phát minh ra bánh xe" bằng cách phát triển một bộ phần mềm mạnh mẽ (là khả năng của
một hệ thống máy tính để đối phó với các lỗi trong khi thực hiện để tiếp tục hoạt động bất chấp những bất thường ở đầu vào, tính toán) mà bao gồm hầu hết các yếu tố một nhà phát triển game cần đến để xây dựng một game Phần lớn các chương trình phần mềm trung gian cung cấp các cơ sở để phát triển một cách dễ dàng, như hình ảnh, âm thanh, hệ thống vật lý và chức năng AI Gamebryo và RenderWare là hai phần mềm trung gian được sử dụng khá rộng rãi
Một số middleware chỉ làm một chức năng nhưng nó c n hiệu quả hơn cả toàn
bộ engine Ví dụ, SpeedTree được sử dụng để dựng hình ảnh cây cối thêm thực tế trong game nhập vai: The Elder Scrolls IV: Oblivion
Bốn gói phần mềm trung gian được sử dụng rộng rãi nhất mà cung cấp các chức năng trong hệ thống con gồm có Bink của hãng RAD Game Tools, hãng Firelight với FMOD, Havok, và GFx của Scaleform RAD Game Tools phát triển Bink cho dựng hình video cơ bản, đi cùng với âm thanh Miles, và dựng hình 3D Granny FMOD của Firelight là một thư viện và bộ công cụ phần mềm âm thanh mạnh mẽ giá rẻ Havok cung cấp một hệ thống mô phỏng vật lý mạnh, cùng với các bộ phần mềm hình ảnh động và mô phỏng hành vi Scaleform đem lại GFx dùng cho các biểu diễn cao
Trang 10cấp trên nền giao diện Flash, cùng với các giải pháp trình chiếu video chất lượng cao,
và một Input Method Editor (IME) phần bổ sung nhằm hỗ trợ tr chuyện trong game bằng ngôn ngữ châu Á
Một số middleware bao gồm toàn bộ mã nguồn trong nó, số khác chỉ cung cấp một giao diện lập trình ứng dụng dùng để tham khảo như một thư viện mã nhị phân Mặt khác một số có thể được cấp phép, thường là phải trả một cái giá cao hơn cho toàn
bộ mã nguồn
1.5 Một số Game Engine nổi tiếng hiện nay
Nếu các gõ từ khóa Top 5/10 Game Engine tìm kiếm thì sẽ thấy rất nhiều bảng tống sắp khác nhau, thực sự mỗi Game Engine đang tồn tại và phát triển được đều phải
có thế mạnh của mình trên các tiêu chí khác nhau Một số Game Engine phục vụ xây dựng các ứng dụng đa nền tảng, một số chỉ dành cho Mobile, một số cho HTML5,… hoặc thậm chí một số giúp bạn tạo ra game của riêng mình không cần phải thông qua lập trình mà chỉ đơn thuần dùng kéo thả
Em xin đưa ra một số Game Engine nổi tiếng như: Unreal Engine, Unity3D,
CryEngine, GameMaker, Construct, PlayCanvas, Godot, Cocos 2D
Trang 11CHƯƠNG II UNITY ENGINE
2.1 Giới thiệu chung
Hình 2.1: Logo của Unity
- Nhà phát triển: Unity Technologies
- Phát hành đầu tiên: 8/6/2005
- Phiên bản mới nhất tính đến thời điểm này là phiên bản 5.6, dưới dạng 4 phiên bản (Persional, Plus, Pro, Enterprise) có thể tải trực tiếp trên trang chủ của unity https://unity3d.com
Unity là một Game Engine được xây dựng bởi đội ngũ Unity Technologies từ
2005 Version hiện tại là 5.3.x có trên cả 2 nền tảng Window và Mac Các phiên bản đời đầu (1x-2x) chỉ hướng đến các nhà làm Game không chuyên với những khả năng đơn giản Tuy nhiên các phiên bản về sau đã có sự phát triển mạnh mẽ và những cải tiến vượt bậc, trở thành công cụ được rất nhiều cá nhân và các công ty sử dụng (đặc biệt là thị trường Mobile)
- Phát triển Game cho các hệ điều hành: Android, IOS, WindowsPhone,…
- Được phát triển bởi ngôn ngữ C/C++ và có khả năng hỗ trợ mã viết bằng C#, Java hoặc Boo
- Những tựa game nổi tiếng được xây dựng bởi Unity Engine:
+ Deus Ex: The Fall
+ Assassin’s Creed: Identity
Trang 12+ Wasteland 2
+ Hearthstone: Heroes of Warcraft
+ Kerbal Space Program
Hình 2.2: Một số game nối tiếng được xây dựng bởi unity engine
2.2 Lí do nên chọn Unity để phát triển game
Một hệ sinh thái game gồm có các chức năng cơ bản nhƣ: cung cấp công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2D hoặc 3D, công cụ vật lý (tính toán và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, tạo dò nguồn dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị và kết nối mạng Ngoài những chức năng cơ bản của một hệ sinh thái đó, Unity c n có những ƣu việt vƣợt trội
so với các engine khác:
- Ngôn ngữ lập trình phổ biến Việt Nam: C#, Java,…
- Hỗ trợ đa nền tảng: Những nền tảng mà Unity đang hỗ trợ gồm PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, Web,…
Trang 13Hình 2.3: Unity hỗ trợ đa nền tảng (23 nền tảng) và vẫn đang tiếp tục tăng
- Dễ sử dụng, ngay cả với Lập trình viên nghiệp dư, do Unity được xây dựng trong một môi trường phát triển tích hợp, cung cấp một hệ thống toàn diện cho các lập trình viên, từ soạn thảo mã nguồn, xây dựng công cụ tự động hóa đến trình sửa lỗi
- Tính kinh tế cao: Những cá nhân và doanh nghiệp có doanh thu dưới 100.000 USD/năm được dùng miễn phí engine Unity, và Unity Technology chỉ thu phí 1.500 USD/năm cho bản Pro- một con số rất khiêm tốn so với những gì engine này mang lại
- Rất được ưa chuộng tại Việt Nam, ngay cả trong các game studio lớn như VTC, VNG, Glass-Egg
- Thư viện phong phú, đa dạng: Unity có nhiều thư viện, các công cụ hỗ trợ làm game nhanh hơn, thông minh hơn, các đối tượng được tạo sẵn, và tất cả các thư viện này đều “mở”, cho phép cộng đồng tự do sử dụng và sáng tạo nên các sản phẩm của chính mình, thậm chí có thể bán trên Asset Store của Unity Unity3D có Asset Store của mình, ở đây bao gồm các Plugin được cộng đồng Unity phát triển và bán, có cả những bản free (mách nhỏ là nhiều plugin hay ho trên này các bạn có thể tìm thấy qua torrent)
- Cộng đồng rất lớn mạnh: là 1 trong số những engine phổ biến nhất trên thế giới, Unity có cộng đồng sử dụng rất lớn mạnh Mọi thắc mắc của bạn về Unity đều sẽ được trả lời trên website cộng đồng http://answers.unity3d.com Unity rất chú trọng vào việc xây dựng một cộng đồng người dùng đông đảo và lớn mạnh, giúp trao đổi, giải quyết các vấn đề bạn cần thắc mắc hoặc quan tâm Nhiều các tutorials từ cơ bản đến nâng cao, documents, ebook phong phú và các buổi training được diễn ra thường xuyên
- Hỗ trợ Game 2D: Mặc dù tên gọi đầy đủ là Unity3D nhưng Unity hỗ trợ việc xây dựng game 2D rất tốt và có rất nhiều game 2D nổi tiếng trên các nền tảng khác nhau sử dụng Game Engine này
Trang 14Unity hỗ trợ import hầu như tất cả các định dạng 3D model hiện nay Khi một đối tượng hay vật thể 3D được import hoặc tạo ra trong Unity, nó được gọi là asset Khi lưu trữ asset, nên lưu trong thư mục Assets đặt trong thư mục Project của bạn Lúc mở project, Unity sẽ tự động dò tìm và import tất cả vào trong Project
Khi bạn chọn một asset trong Project View, những thông số import cho asset
sẽ hiển thị ở Inspector Mỗi loại asset sẽ có mỗi kiểu thông số khác nhau
Chỉ cần click-drag các khung lưới được vẽ trong 3D (mesh) từ Project View vào cửa sổ Hierarchy hoặc Scene View để thêm nó vào trong Scene Khi thêm một mesh vào trong scene, tức là bạn đã tạo ra một GameObject có Mesh Renderer Component Tương tự khi thêm vật liệu, hoặc âm thanh, bạn cũng phải gán nó vào một GameObject đã có sẵn trong Scene hay Project
Trang 15Hình 2.4 Asset trong Unity
b) Scene
Là nơi bạn Design Game của bạn, đối tượng Maneuvering và Importanting trong Scene view (chuyển động và điều khiển) là hai trong số các chức năng quan trọng của Unity, ở góc bên phải của Scene là Scene Gizmo, nó thể hiện hướng nhìn trong không gian của camera trong Scene View hiện thời, cho phép thay đổi góc
nhìn trực quan và nhanh chóng
Click lên các nhánh hình nón để chuyển qua các góc nhìn khác nhau có thể xem ở chế độ Isometric Model(tức ở dạng mặt cắt hai chiều), để chuyển qua chế độ 3d bạn Click vào hình vuông ở giữa hay giữ phím Shift.Khi xây dựng một Game, bạn
sẽ đặt rất nhiều đối tượng vào trong Game của bạn Bạn có thể dử dụng các công cụ Transform Tools ở trong Toolbar để di chuyển, xoay, phóng to tu nhỏ từng đối tượng.Khi bạn chọn một đối tượng trong Scene View, xung quanh đối tượng được chọn sẽ có những thay đổi tương ứng với từng chế độ trong Transform Tools.Sau đó bạn thay đổi đối tượng tùy ý, nếu muốn chính xác bạn có thể chỉnh chi tiết ở bảng Inspector
Thanh điều khiển Scene view cho phép bạn xem screen Game với nhiều chế độ như đã phủ vật liệu (material), khung lưới(wireframe), RGB, Overdraw, …Bạn cũng
Trang 16có thể xem và cả nghe những hiệu ứng ánh sáng, âm thanh, những thành phần động trong Game… ngay tại Scene
Hình 2.5 Các scene của Unity
c) Game Object
Khi một tài nguyên đƣợc sử dụng trong một scene, khi đó chúng ta có thể coi tài nguyên này là một “Game Object” mới Mỗi GameObject phải chứa ít nhất một thành phần, đó là thành phần “Transform” Transform chứa các phép để biến đổi góc quay, tỷ lệ hay tịnh tiến của đối tƣợng Từ đây trong báo cáo này chúng em sẽ gọi
GameObject trong cửa sổ Hierarchy là đối tượng game
Trang 17Hình 2.6 Kéo tài nguyên vào Scene để sử dụng
d) Component
Component là các thành phần trong một Game Object của Unity Bằng cách đính kèm các thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các phần mới của game engine vào đối tượng Thông thường các thành phần này được Unity xây dựng sẵn như ánh sáng, camera, particle, hiệu ứng vật lý…
Hình 2.7 Các thành phần trong đối tượng Camera
e) Script
Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là linh hồn của game Chúng ta có thể viết kịch bản cho game bằng C#, Java Scripts, hoặc Boo (một dẫn xuất của ngôn ngữ Python) Theo nhiều người đã sử dụng Unity thì code bằng C# sẽ giúp game chạy nhanh hơn và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng Mặt khác ngôn ngữ C# rất tiện dụng để lập trình, nên trong luận văn này, chúng em dùng ngôn ngữ C# để viết kịch bản cho game Mỗi file
script C# là một class bắt buộc kế thừa từ lớp MonoBehaviour, có tên class phải trùng
với tên file script
Trang 18Hình 2.8 Cách tạo file script mới
Giao diện code C# rất quen thuộc khi edit trên Visual Studio 2010
Trang 19Hình 2.10 Một file script đang gắn vào đối tượng
f) Prefab
Hãy tưởng tượng Prefab là một cái thùng rỗng, mà bên trong nó chúng ta có thể chứa đựng các thành phần hay đối tượng khác nhau, chúng ta có thể viết kịch bản cho hành động của Prefab (khởi tạo, di chuyển, hay hủy đối tượng) Chúng ta có thể sử dụng đối tượng này nhiều lần trong tr chơi, và cũng có thể sử dụng lại cho project khác Prefab cho phép chúng ta lưu trữ các đối tượng, toàn bộ thành phần bên trong và cấu hình hiện tại
Prefabs là một tính năng hữu ích trong Unity, nó là một bộ sưu tập của nhiều GameObject và Components mà có thể được dùng lại nhiều lần trong scene Nhiều đối tượng riêng biệt có thể được tạo ra chỉ bằng một Prefab, được gọi là Intance Thật dễ dàng và nhanh chóng, Prefab sẽ giúp bạn tiết kiệm rất nhiều thời gian
Để tạo ra một Prefab từ một GameObject trong scene, đầu tiên, khởi tạo trước một Prefab mới trong Project View, đặt tên cho Prefab đó theo ý bạn thích, sau đó, click và drag đối tượng GameObject mà bạn muốn nó trở thành một Prefab vào trong Prefab, khi đó tên của GameObject sẽ chuyển sang xanh dương
2.3.2 Giao diện của Unity Editor
Trang 20Giao diện Unity, giống như nhiều môi trường làm việc khác, layout có thể tùy chỉnh Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt Chúng ta hãy xem xét một cách bố trí giao diện Unity điển hình:
Hình 2.11 Giao diện Editor của Unity
Như hình trên chúng ta thấy có 5 khung khác nhau:
o Scene [1] - nơi xây dựng tr chơi
o Game [2] - cửa sổ xem trước game, chỉ hoạt động ở chế độ chơi (khi nhấn Play)
o Hierarchy [3] - danh sách các GameObject trong một cảnh game
o Inspector [4] - màn hình cài đặt cho tài nguyên/đối tượng đang được chọn
o Project [5] - danh sách các tài nguyên trong project, đóng vai tr như một thư viện
Trang 21Cửa sổ Scene cũng kèm theo bốn nút điều khiển tiện lợi như hình trên Truy cập
từ bàn phím bằng cách sử dụng các phím Q, W, E, và R Các phím thực hiện các hoạt động sau đây:
o Công cụ bàn tay [Q]: công cụ này cho phép di chuyển trong cửa sổ Scene, xoay góc nhìn, phóng to, thu nhỏ góc nhìn
o Công cụ di chuyển [W]: Công cụ này dùng để di chuyển một đối tượng
o Công cụ xoay [E]: Công cụ này cho phép chúng ta xoay nhân vật theo một trục nào đó trong không gian
o Công cụ tỷ lệ [R]: Công cụ này cho phép chúng ta tăng giảm tỷ lệ kích thước của đối tượng
b) Inspector
Games trong Unity được tạo ra bởi tập hợp rất nhiều GameObject, trong đó bao gồm meshes, scripts, âm thanh, hay những đối tượng Graphic như nguồn sáng v v Inspector sẽ hiển thị mọi thông tin về đối tượng đang làm việc một cách chi tiết, kể cả những Components được đính kèm và những thuộc tính của nó Tại đây bạn có thể điều chỉnh, thiết lập mọi thông số chức năng của những mối liên kết
GameObject-Component
Mọi thuộc tính thể hiện trong Inspector đều có thể được tùy biến một cách trực tiếp Ngay cả với những biến trong script cũng có thể được hiệu chỉnh mà không cần xem mã Trong script, nếu bạn định nghĩa một giá trị là public cho một kiểu đối tượng (như GameObject hay Transform), bạn có thể drag-drop một
GameObject hay một Prefab vào trong Inspector để gán giá trị cho nó
Chúng ta có thể click lên icon hình bánh răng nhỏ bên phải hay click chuột phải lên tên cảu Component để xuất hện context menu dành cho những thiết lập
của Component
Inspector cũng sẽ thể hiện mọi thông số Import Setting của assets đang làm
việc
Trang 22Hình 2.12 Cửa sổ Inspector hiển thị thông tin một đối tượng
c) Cửa sổ Game
Cửa sổ này sẽ hiển thị những gì có trong cửa sổ Scene và sẽ hoạt động khi nhấn nút Play Trong cửa sổ này chúng ta có thể chọn các kích cỡ hiển thị khác nhau để build cho các loại máy khác nhau Chúng ta có thể chơi thử game trên cửa sổ này khi
đã nhấn nút Play Lưu ý rằng khi cửa sổ này hoạt động rồi thì mọi chỉnh sửa trên cửa
sổ Scene và cài đặt cho các đối tượng chỉ là tạm thời và khi nhấn nút Stop, cửa sổ này
về lại trạng thái tĩnh thì mọi chỉnh sửa trước đó là không c n
d) Cửa sổ Project
Mỗi Project của Unity đều chứa một thư mục Assets.Nội dung của thư mục này được hiển thị trong Project View Đây là nơi chứa tất cả các assets để tạo Game của bạn như Scenes, Script, 3D models, Textures, Audio, Prefabs Chúng ta không nên di chuyển asseets bằng cách sử dụng Window Explorer (hay Finder trong MAC), vì nó
sẽ phá vỡ cấu trúc siêu dữ liệ của assets với nhau, và luôn sử dụng Project View để cấu trúc assets của mình
Để thêm assets vào project của mình, chúng ta có thể kéo thả bất kỳ file nào
Trang 23CHƯƠNG 3 LẬP TRÌNH TRÒ CHƠI GOKURUN
BẰNG ENGINE UNITY
3.1 Ý tưởng
Tr chơi xuất phát từ ý tưởng của tr chơi Flappy bird, nhân vật game sẽ vượt qua các chướng ngại vật để dành điểm, nếu nhân vật chạm vào chướng ngại thì trò chơi sẽ kết thúc
Hình 3.1 Thuật toán chính của game