1. Trang chủ
  2. » Giáo Dục - Đào Tạo

lập trình trò chơi bắn súng với unity3d game engine

104 1,4K 5
Tài liệu đã được kiểm tra trùng lặp

Đ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 104
Dung lượng 12,35 MB

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

Nội dung

LỊCH SỬ GIẢI QUYẾT VẤN ĐỀVới vấn đề nêu trên thi có rất nhiều công cụ hỗ trợ nổi tiếng giúp cho việc phát triển Game và được nhiều lập trình viên sử dung Game 3D như: Blender, Cinema4D h

Trang 1

MỤC LỤC

Trang 2

Hình 3 5 Diễn hoạt trong Unity

Hình 3 6 Diễn hoạt thay đạn

Hình 3 7 Hệ thống diễn hoạt

Hình 3 8 Điều chỉnh diễn hoạt

Hình 3 9 Thành phần trạng thái trong hệ thống diễn hoạtHình 3 10 Chuyển trạng thái trong hệ thống diễn hoạt

Hình 3 11 Paramaters trong hệ thống diễn hoạt

Hình 3 12 Layer trong hệ thống diễn hoạt

Hình 3 13 Công cụ nâng địa hình

Hình 3 14 Công cụ hạ địa hình

Hình 3 15 Công cụ tạo độ mượt địa hình

Hình 3 16 Công cụ tạo bề mặt địa hình

Hình 3 17 Công cụ tạo cây

Hình 3 18 Công cụ tạo cây cỏ, đá

Hình 3 19 Công cụ tùy chỉnh địa hình

Hình 3 20 Địa hình trong trò chơi

Hình 3 21 Hệ thống hạt

Hình 3 22 Hiệu ứng khi bắn

Hình 3 23 Mô hình chức năng của plugin giao diện

Trang 3

Hình 3 25 Giao diện trong trò chơi

Hình 3 26 Thành phần script của nhân vật

Hình 3 27 Thành phần Camera của nhân vật góc nhìn thứ nhấtHình 3 28 Xa/gần của Camera

Hình 3 29 Mô phỏng người chơi ở góc nhìn thứ nhất

Hình 3 30 Vị trí của trang bị trong thẻ Inspector

Hình 3 31 Giao diện túi trang bị

Hình 3 32 Mô tả Ray Casting

Hình 3 43 Tìm ngược lại để ra ô cha

Hình 3 44 Hệ thống lưới tìm đường đi

Hình 3 45 Cờ báo hiệu trạng thái

Trang 4

Hình 3 52 Hiệu ứng sau khi sử dụng kỹ thuật tối ưu

Hình 3 53 Hướng dẫn người chơi

Trang 5

DANH MỤC BẢNG

Bảng 3 1 Thuộc tính của trang bị vũ khí

Bảng 3 2 Trang bị, vũ khí, hiệu ứng và thuộc tính

Bảng 3 3 Thuộc tính, chức năng của quái vật

Trang 6

KÍ HIỆU VÀ VIẾT TẮT THUẬT NGỮ

(Giao diện người dùng)

(Ngôn ngữ đổ bóng OpenGL)

4 LOD Level of detail (cấp độ chi tiết)

(Bắn súng góc nhìn thứ nhất)

(Điều khiển góc nhìn thứ nhất)

Trang 7

TÓM TẮT

Trong xã hội hiện đại, cùng với sự phát triền mạnh mẽ của khoa học công nghệ, các hình thức giải trí ngày càng trở nên đa dạng và phong phú để đáp ứng nhu cầu giải trí của con người Trong đó, game là một trong những hình thức giải trí tốt với nhiều thể loại game đặc sắc khác nhau Tuy nhiên, để thiết kế một game thì cần tốn nhiều thời gian, công sức Chính vì vậy, để đáp ứng cho sự phát triền của game, các nhà khoa học công nghệ game đã cho ra đời các Game Engine để giảm thời gian thiết kế và tăng hiệu quả cũng như chất lượng game, đặc biệt là những nhóm phát triền game không chuyên Hiện nay, có rất nhiều Game Engine phổ biến như: Cry Engine, Unreal, X-Ray, Vision,

… Trong đó, Unity3D là Game Engine được đánh giá tốt nhất và được nhiều người lựa chọn nhất Đặc biệt Unity3d hỗ trợ trên nhiều nền tảng: PC, Adroid, Windows Phone, Mac, …và trình duyệt Web Player với chất lượng hình ảnh tốt và đặc sắc Đây cũng là

lý do em chọn đề tài

Từ khóa: Game Engine, nhu cầu giải trí, Unity3D

Trang 8

In the modern society, beside the growing up of techonology, many kinds of entertaiment also develop to reponse human needed and game become more and more popular in the world Inside of intertaiment, game is more diversity and plentiful with a lot of type gameplay However, to build a good game, it isn’t easy and has to spend to time and efford To solve this problem, a lot of Game Engines were created to help the game developing easier especially for amateurs Nowadays, there are many popular Game Engines such as: Cry Engine, Unreal, X-Ray, Vision, …In these, Unity3D is the most Game Engines and many people are chosen and good review The special things

of Unity is it suporting multi-platform such as: PC, Adroid, Windows Phone, Mac, …and web brower with Unity Web Player with high quaility game This is reason why I choose Unity to perform this topic

Key Word: Game Engine, entertaiment, Unity3D

Trang 9

CHƯƠNG 1: TỔNG QUAN1.1 ĐẶT VẤN ĐỀ

Ở thế kỉ XXI, công nghệ vi xử lý và card đồ họa đang dần tiên tiến cho ra đời nhiều sản phẩm Game với cách chơi và hình ảnh sinh động, đưa thế giới ảo trong Game như đời thực Ngành công nghiệp Game ngay phát triển mạnh mẽ và hấp dẫn người chơi với nhiều lối chơi khác nhau Có rất nhiều nhà phát hành game thân thuộc với các gamer trên thế giới như: Clover Studios, Konami, Nintendo, Capcom , những hãng game này cho ra đời rất nhiều game với công nghệ đột phá trên nhiều thiết bị và nền tảng khác nhau: PC, mobile, tablet Phía sau những Game và nhà phát hành Game điều có một Game Engine - một công cụ hỗ trợ cho những nhà sản xuất Game, giúp những lập trình viên Game viết Game một các nhành chóng, hiệu quả cao Tại Việt Nam, ngành công nghiệp Game đang phát triển theo hình thức phát hành Game Đa số các công ty ở Việt Nam chỉ phát triển Game với những dự án nhỏ, đồ họa kém hấp dẫn không lôi cuốn được nhiều game thủ

Với xã hội ngày nay thì nhu cầu giải trí ngày càng được chú trọng Sau thời gian học tập và làm việc mệt mỏi, chơi game là cách giải trí hiệu quả và tốt nhất Chơi game còn giúp cho tư duy bản thân con người trở nên nhạy bén, nhanh nhẹn Và một game hiện nay được cộng đồng game Việt Nam cũng như thế giới yêu thích đó là game “Thể loại hành động bắn súng góc nhìn thứ nhất”

Trang 10

1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ

Với vấn đề nêu trên thi có rất nhiều công cụ hỗ trợ nổi tiếng giúp cho việc phát triển Game và được nhiều lập trình viên sử dung Game 3D như: Blender, Cinema4D hay 3DsMax.Từ việc tạo ra những khối câu, những khối lập phương đơn giản đến những hình ảnh phức tạp bằng cách xử lý và ghép những khối hình đơn giản lại.Có rất nhiều công cụ hỗ trợ được phát triển : Unreal, X-Ray, Vision, Unity 3D, Trong đó công cụ được ưa chuộng và giúp cho việc viết Game trở nền tiết kiệm thời gian, hiệu quả đó là Unity 3D.Công cụ nay hỗ trợ trên đa nền tảng như Windows, Adroid, IOS, Xbox, Wii Ngoài ra, phần mềm Unity 3D còn tương tác với nhiều chương trình đồ họa 3D khác giúp cho việc thiết kế đồ họa trở nền sống động, chân thực hơn

1.3 HƯỚNG GIẢI QUYẾT VẤN ĐỀ

Từ những xu hướng và những bất cập trên, em sẽ khảo sát và nghiên cứu về một Engine Game, đó là Unity Engine

Unity Game là một trong những engine khá phổ biến, có khả năng phát triển trò chơi trên đa nền tảng Unity tạo ra được nhiều thể loại game với nhiều góc nhìn khác nhau,

có hỗ trợ mô hình trực tiếp, với nguồn tài liệu hấp dẫn được cộng đồng lập trình viên

ưa chuộng Unity đến nay cho ra đời 2 phiên bản: Unity Pro (có tính phí) và Unity Free (không tính phí) Unity không chỉ dành cho những công ty phát triển Game chuyên nghiệp mà còn dành cho tất cả giới làm game nghiệp dư cũng có thể dễ dàng

Trang 11

1.4 CÁCH GIẢI QUYẾT VẤN ĐỀ

Đề tài nay thuộc hướng tìm hiểu về công nghệ tư đó xây dựng và phát triển các ứng dụng game Mục tiêu chủ yếu của đề tài nay là Engine Unity Game Việc xây dựng các game dựa trên nhiều thuật toán xử lý character, camera, wave path, các và chạm, các hiệu ứng giúp cho scene, character trong không gian 3D với mô hình game thể loại bắn súng hành động góc nhìn thứ nhất Để thực hện mục đích trên nội dung đề tài cần đạt được những tiêu chí sau:

• Tìm hiểu về tổng quan về Unity, tạo các hình thể trong không gian 3 chiều

• Tìm hiểu các vấn đề trong game như: tạo nhân vật (character), môi trường (scene), tài nguyên, âm thanh(sound), các text hay các hiệu ứng hạt (particle),

• Tìm hiểu về cách giải quyết, tạo ra kịch bản (scrpit), giao diện đồ họa, cách khởi tạo và quản lý trong môi trường game

• Xây dựng và phát triển thể loại hành động bắn súng góc nhìn thứ nhất (FPS)

Trang 12

CHƯƠNG 2: SƠ LƯỢC VỀ UNITY 3D2.1 GIỚI THIỆU SƠ LƯỢC VỀ UNITY 3D

Hình 2 Logo Unity

• Nhà phát triển: Unity Techonologies

• Phiên bản mới nhất: Unity version 5.4.1, 28/7/2016

• Ngôn ngữ phát triển: C#, Boo, Javascrpit

• Phát triển Game trên đa hệ điềuhành: Windows, MAC OS X, Wii, Iphone/Ipad, Xbox 360, Android, PS3

• Giấy phép: Độc quyền

• Wesbsite: www.unity3d.com

Unity3D là phần mềm làm game trực tiếp theo thời gian thực, mà không cần render, cho phép người design game có thể thiết kế InterfaceGraphic, map hay character…từ một phần mềm thứ 2 (thường là các phần mềm thiết kế đồ họa chuyên nghiệp như 3Dsmax, Blender, Maya, XSL,Cinema4D,Cheetah3D, Modo, Autodesk FBX, LightWave…) sau đó chỉ việc import nó vào trong Unity với định dạng của tập tin là

*.FBX hay *.dae, *.3DS, *.dxf và *.obj, nhưng định dạng *.FBX hay được dùng vì được tối ưu hóa hơn, còn dùng các định dạng khác ngoài FBX thì phải cài phần mền thiết kế character tưng ứng thì mới dùng được (tức là dùng Maya có định dạng *.mb,

*.mà thì muốn dùng được phải cài Maya)

Ngoài ra khi chúng ta design được một game thì chúng ta có thể xuất được ra một file.exe và có thể chạy và chơi được trên PC khác

Trang 13

Uinty sử dụng thư viện mã nguồn mỡ C++ Mono, được sự hỗ trợ của Just-In-Tìme Compilation(JIT) nền tốc độ biên dịch rất nhanh Những đoạn code do chúng ta viết sẽ được Unity biên dịch ra Mono trước khi 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 quá trình chạy (Run time).Ngoài thư viện Mono, Unity cũng tận dụng được những chức năng của những phần mềm khác, 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 các tính năng tư động hoặc trực quan vào Unity

Một thế mạnh nữa của Unity là chúng ta có thể chạy demo game của chúng ta ngay trong khi design, nó có hỗ trợ hai chế độ là Scene và Game, rất thuận tiện cho việc test thử các mô-đun Game

Khi tải Unity về các chúng ta cài đặt bình thường, đến khi kết thúc cài đặt nền các chúng ta chọn phiên bản Pro thì cần phải mua, còn nếu là người dùng free thì các chúng ta chọn kích hoạt qua web, chỉ cần có kết nối mạng internet, sau đó chọn cài đặt thủ công và nhập mail, chọn free là chúng ta có thể sử dụng một bản Unity free

Trang 14

Egine – Đặc điểm CryEngine 3 jMonkeyEngine Unity 3D

Languge

blend, …Level Editor Sandbox jMonkey Plaforms MonoDevelop

extensions

Bảng 2 Bảng so sánh đặc điểm Unity Engine với các Engine khác

2.2 CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG CỦA UNITY3D

2.2.1 Rendering (Kết xuất hình ảnh)

Giống như tất cả các Engine hoàn chỉnh khác, Unity hỗ trợ đầy đủ khả năng kết xuất hình ảnh (Redering) cùng nhiều hỗ trợ cho phép áp dụng các công nghệ phổ biến trong lĩnh vực đồ họa 3D nhằm cải thiện chất lượng hình ảnh Các phiên bản gần đây nhất của Unity được xây dựng lại thuật toán nhằm cải thiện hiệu suất kết xuất hình ảnh đồng thời tăng cường chất lượng hình ảnh sau khi kết xuất

Trang 15

Hình 2 Kết xuất hình ảnh

Một số hỗ trợ:

• Unity cung cấp sẵn 100 Shaders với đầy đủ các loại phổ biến nhất

• Hỗ trợ Surface Shaders, Occlusion Culling, GLSL Optimizer

• Hỗ trợ LOD

Trang 16

2.2.2 Lighting (ánh sáng)

Ánh sáng là một điều thiết yếu giúp môi trường trở nên đẹp và thực tế hơn Unity cũng cung cấp nhiều giải pháp đa dạng cho phép chúng ta áp dụng ánh sáng một cách tốt nhất vào môi trường trong trò chơi với nhiều loại nguồn sáng như ánh sáng có hướng (Directional Light), ánh sáng điểm (Point Light), Một số công nghệ và kỹ thuật về ánh sáng được Unity hỗ trợ: Lingtmapping, Realtime Shadows, hiệu ứng Sunshafts và Lens Flares

Hình 2 Minh họa về ánh sáng

2.2.3 Terrains (địa hình)

Terrains còn gọi chung là địa hình bao gồm phần đất nền của môi trường trong trò chơi cùng các đối tượng gắn liền như cây, cỏ, …Unity cung cấp một công cụ hỗ trợ rất tốt khả năng này với tên gọi là Terrains Tools cho phép chúng ta thiết kế địa hình với các công cụ vẽ dưới dạng Brush có nhiều thông số tùy chỉnh để tạo hình và lát Texture cho địa hình Cùng với Terrain Tools là Tree Creator, một công cụ mạnh mẽ cho phép chúng ta tạo ra cây cối với hình dạng, kích thước và kiểu cách đa dạng

Hình 2 Minh họa địa hình

Trang 17

2.2.4 Substances (Texture thông minh)

Substances có thể hiểu đơn giản là một dạng tùy biến Textures nhằm làm đa dạng chúng trong nhiều điều kiện môi trường khác nhau Unity cung cấp khả năng này thông qua các API dựng sẵn trong thư viện, hỗ trợ lập trình viên lập trình để tùy biến hình ảnh được kết xuất của Texture

Hình 2 Minh họa texture

2.2.5 Physics (vật lí)

PhysX là một Engine mô phỏng và xử lí vật lý cực kỳ mạnh mẽ được phát triển bởi nhà sản xuất card đồ họa hàng đầu thế giới NVIDIA Unity đã tích hợp Engine này vào để đảm nhận mọi vấn đề vật lý Một số vấn đề vật lý được hỗ trợ bởi Unity như: Soft Bodies, Rigitbodies, Ragdolls, Joints, Cars, …

Trang 18

2.2.6 Pathfinding (tìm đường)

Đây là một tính năng rất mới mẻ đến từ phiên bản Unity 3.5 Với các phiên bản trước,

để phát triển khả năng tìm đường cho trí thông minh nhân tạo (AI), nhà phát triển phải hoàn toàn tự xây dựng cho mình một hệ thống tìm đường riêng biệt Tuy nhiên ở phiên bản 3.5, Unity hỗ trợ cho chúng ta tính năng Pathfinding cho phép tạo ra khả năng tìm đường cho AI nhờ vào khái niệm lưới định hướng (NavMesh)

Hình 2 Hệ thống lưới định hướng

2.2.7 Audio (âm thanh)

Về âm thanh, Unity tích hợp FMOD – công cụ âm thanh thuộc hàng mạnh nhất hiện nay Qua đó Unity hỗ trợ chúng ta nhập và sử dụng nhiều định dạng tập tin âm thanh khác nhau

2.2.8 Programming (lập trình)

Lập trình là một trong những yếu tố quan trọng nhất trong phát triển Game Lập trình cho phép nhà phát triển tạo nên khả năng tương tác, trí thông minh và yếu tố Gameplay cho trò chơi Unity cho phép chúng ta lập trình bằng nhiều ngôn ngữ mạnh

mẽ và phổ biến với các lập trình viên như: C#, Java Scrip và Boo

Trang 19

2.2.9 Networking

Networking cho phép chúng ta tạo ra các trò chơi trực tuyến (online) – một trong những thể loại trò chơi thu hút được nhiều người chơi nhất Tính năng này sẽ hỗ trợ đầy đủ để chúng ta tạo nên các khía cạnh phổ biến trong Game online như hệ thống điểm kinh nghiệm, chat và tương tác thời gian thực, … Một số tính tăng cung cấp bởi Networking như: State Synchronization, Realtime Networking, Remote Procedure Calls, Backend Connectivity, Web Browser Integration, Web Connectivity

2.3 CÁC THÀNH PHẦN TRONG UNITY3D

2.3.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 2 Minh họa tài nguyên

Trang 20

2.3.2 Scenes

Trong Unity, chúng ta cần hiểu một cảnh (hay một phân đoạn) nghĩa là một màn chơi riêng biệt hoặc một khu vực hay thành phần có trong nội dung của trò chơi (ví dụ như Game menu) Bằng cách tạo nên nhiều 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 2 Minh họa phân đoạn (cảnh)

2.3.3 Game Object

Khi Assets được sử dụng trong Scene, chúng trở thành Game Object – một thuật ngữ được sử dụng trong Unity (đặc biệt là trong mảng lập trình) Tất cả các Game Object đều chứa ít nhất một thành phần là Transform Transform là thông tin về vị trí, góc xoay và tỉ lệ của đối tượng, tất cả được mô tả bởi bộ 3 số X, Y, Z trong hệ trục tọa độ Thành phần này có thể được tùy biến lại trong quá trình lập trình nhằm thay đổi vị trí, góc quay và tỉ lệ của đối tượng qua các đoạn mã Từ các thành phần cơ bản này, chúng

ta sẽ tạo ra Game Object với các thành phần khác, bổ sung chức năng cần thiết để xây dựng nên bất kỳ một thành phần nào trong kịch bản Game mà chúng ta đã tưởng tượng

Trang 21

2.3.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 Ví dụ như thành phần Rigidbody đã được đề cập hay các yếu tố đơn giản khác như ánh sáng, Camera và nhiều thành phần khác Để tạo nên các yếu tố tương tác trong trò chơi, chúng ta sẽ sử dụng Script (mã kịch bản), chúng cũng được xem như là một Components trong Unity

Hình 2 Các thành phần trong Unity

Trang 22

2.3.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 2 Minh họa script gắn vào đối tượng

Trang 23

Unity không đòi hỏi chúng ta phải học làm thế nào để lập trình trong Unity, nhưng hầu như chúng ta phải sử dụng Script tại mỗi thành phần trong kịch bản mà chúng ta phát triển Unity đã xây dựng sẵn một tập hợp đa dạng các lớp, hàm mà chúng ta hoàn toàn

có thể ứng dụng trong quá trình lập trình cho trò chơi của mình Để viết script, chúng

ta sẽ làm việc với một trình biên tập Script độc lập của Unity, hoặc với chương trình Mono Developer được tích hợp và đồng bộ với Unity trong những phiên bản mới nhất hiện nay Mono developer là một IDE khá tốt để lập trình khi cung cấp nhiều chức năng tương tự như Visual studio Mã nguồn viết trên Mono Developer sẽ được cập nhật và lưu trữ trong dự án Unity

Hình 2 Script trong Mono Develop

Trang 24

2.3.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 Có thể so sánh với khái niệm cơ bản là MovieClip trong Adobe

Flash, Prefabs chỉ đơn giản là một Container (một đối tượng chứa) rỗng mà chúng ta

có thể đưa bất kì một đối tượng hay dữ liệu mẫu nào mà chúng ta muốn tái sử dụng về

sau.

Hình 2 Minh họa về Prefab

Trang 25

2.3 GIAO DIỆN CỦA UNITY 3D

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 2 Giao diện của Unity

Chú thích:

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

• Hierarchy: Danh sách các Game Object trong scene

• Inspector: 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: Cửa sổ xem trước, nó chỉ hoạt động trong chế độ “Play” (Preview – xem trước)

Trang 26

2.3.1 Cửa sổ Scene và Hierarchy

Cửa sổ scene là nơi mà chúng ta sẽ xây dựng các thực thể, đối tượng của dự án vào đó Cửa sổ cung cấp góc nhìn phối cảnh (Perspective (góc nhìn 3D), chúng ta có thể chuyển qua các góc nhìn khác như từ trên xuống hoặc từ dưới lên (Top Down), từ trái sang phải hoặc phải sang trái (Side On), từ trước ra sau hoặc sau đến trước (Front On) Cửa sổ này sẽ kết hình xuất đầy đủ những hình ảnh trong thế giới của trò chơi mà chúng ta tạo ra dưới dạng một vùng biên tập mà chúng ta có thể biên tập, chỉnh sửa trực tiếp thế giới đó

Khi kéo thả Assest vào cửa sổ Scene, Assets sẽ trở thành Game Object Cửa sổ Scene được ràng buộc cùng với cửa sổ Hierarchy, cửa sổ Hierarchy liệt kệ danh sách các Game Object có trong Scene và được sắp xếp theo thứ tự chữ cái từ A-Z

Hình 2 Minh họa cửa sổ Scene

Trang 27

Cửa sổ Scene còn đi kèm với 4 bốn nút chức năng hữu ích được hiển thị dưới dạng hình ảnh như trên Chúng có thể được lựa chọn thông qua các phím tắt Q, W, E và R Những nút này có các chức năng như sau:

• Công cụ xoay (E): Công cụ này có đặc điểm và cách sử dụng giống với công cụ

di chuyển, tuy nhiên thay vì để di chuyển vị trí của đối tượng thì công cụ này giúp chúng ta xoay đối tượng xoay quanh trục hay tâm của đối tượng

• Công cụ điều chỉnh tỉ lệ (R): Cũng tương tự như công cụ di chuyển và xoay, công cụ này cho phép chúng ta tùy chỉnh kích thước, tỉ lệ của đối tượng một cách tùy ý

Trang 28

2.3.2 Cửa sổ Inspector

Cửa sổ Inspector có thể được xem như một công cụ cho phép chúng ta tùy chỉnh các thiết đặt, các thành phần của Game Object hoặc Assets đang được chọn Cửa sổ này sẽ hiển thị đầy đủ các Components của đối tượng mà chúng ta chọn Nó cho phép chúng

ta điều chỉnh các biến của Components dưới các hình thức như: Textbox, Slider, Button, Drop-dowm Menu… Ngoài việc hiển thị các Component của đối tượng được chọn, cửa sổ Inspector còn hiển thị các thiết đặt chung của hệ thống hay của trò chơi khi ta chọn chúng từ menu Edit

Hình 2 Minh họa cửa sổ Inspector

Trong hình trên, chúng ta thấy cửa sổ Inspector đang hiển thị một vài thuộc tính, Components của một đối tượng đang được chọn Trong đó, bao gồm 2 Components là Transform và Animation Cửa sổ Inspector sẽ cho phép chúng ta thay đổi các thiết đặt trên Các Components này còn có thể được tạm thời vô hiệu hóa vào bất kỳ lúc nào chúng ta muốn bằng cách bỏ chọn Checkbox ở góc trên bên trái của mỗi Component, việc này sẽ rất hữu ích cho chúng ta khi muốn kiểm tra hay thử nghiệm các Components này Ngoài ra, cửa Inspector còn cho phép chúng ta vô hiệu hóa toàn bộ một đối tượng đang được chọn bằng cách bỏ chọn Checkbox ở trên cùng góc trái của cửa sổ Inspector

Trang 29

Hình 2 Minh họa cửa sổ Project

Trang 30

2.3.4 Cửa sổ Game

Cửa sổ Game sẽ được gọi khi chúng ta nhấn vào nút Play (là một hành động thực hiện test trò chơi) Cửa sổ này cho phép chúng ta tùy chọn về thiết đặt tỉ lệ màn hình, nó phản ánh phạm vi trong Scene mà người chơi có thể thấy được với mỗi tỉ lệ màn hình tương ứng, ví dụ như với mỗi tỉ lệ màn hình 4:3, 16:9 thì người chơi sẽ có một phạm

vi nhìn thấy khác nhau Sau khi nhấn vào nút Play, chúng ta sẽ ở chế độ Testing, lúc này mọi thay đổi về các thuộc tính, Components, … của đối tượng sẽ chỉ là tạm thời Tức là chúng sẽ trở về như ban đầu (trước khi nhấn nút Play) sau khi kết thúc chế độ

Testing.

Hình 2 Minh họa cửa sổ trò chơi

Trang 31

2.4 TỔNG QUAN KIẾN TRÚC GAME ENGINE UNITY 3D

2.4.1 Kiến trúc tổng quan

Engine Unity hỗ trợ cho chúng ta UnityAPI để viết các script game UnityAPI là API lập trình game trong Unity rất mạnh UnityAPI chứa các đối tượng và phương thức hỗ trợ hầu hết các đối tượng và các loại thành phần trong Unity

Trong một scene thường có nhiều đối tượng game Mỗi đối tượng này có thể có hoặc không có đoạn scrpit nào gắn lên đó Nếu muốn gắn scrpit vào đối tượng, ta bắt buộc phải thừa kế class đó tù lớp MonoBehaviour của UnityAPI và tên class phải trùng với file scrpit Mỗi script khi gắn lên đối tượng game đều được đối tượng game xem như một thành phần bên trong và được cấp phát vùng nhớ khi chạy game

Bên trong UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có một số lớp quan trọng như:

MonoBehaviour: tất cả các script muốn gắn vào một đối tượng game bắt buộc phải thừa kế lớp này

• GameObject: lớp cha của tất cả các thực thể trong scene

• Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng

• Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ đối tượng

• Input: hỗ trợ lập trình với các thiết bị ngoại vi khác

• Camera: giúp lập trình camera

• Light: giúp tạo ánh sáng trong game

• Projector: giúp chiếu các texture lên bề mặt vật thể

• ParticleEmitter: hỗ trợ tạo các hiệu ứng về hạt

• Audio: hỗ trợ về lập trình âm thanh

• Animation: chạy chuyển động với mô hình nhân vật

• Rigidboy: giúp tạo các hiệu ứng vật lý liên quan đến trọng lực, khố lượng

• CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình

• Collider: hỗ trợ lập trình về va chạm vật lý giữa các vật thể

• GUI: giúp hỗ trợ lập trình giao diện người dùng trong Unity3D

Trang 32

2.4.2 Chu kỳ sống của các thành phần script gắn trên đối tượng game

Hình 2 Chu kỳ sống của thành phần trong script

Trang 33

Trong script Unity, có một số chức năng sự kiện được thực hiện theo một thứ tự xác định trước như một script được thực thi Tùy theo trạng thái của scene mà sự kiện tương ứng được gọi:

 Chương trình biên soạn (Editor)

• Reset(): hàm này được gọi lại để khởi tạo các thuộc tính của script khi nó lần đầu được gắn vào đối tượng

 Khi Scene đầu tiên được tải (Frist Scene Load), các chức năng này được gọi sau khi một scene bắt đầu (một lần cho mỗi đối tượng trong scene):

• Awake(): hàm nay luôn được gọi trước hàm Start() và cũng chỉ sau một prefab được khởi tạo

• OnEnable(): chỉ được gọi khi đối tượng đang hoạt động Chức năng này được gọi chỉ sau khi đối tượng được kích hoạt Điều này xảy ra trong trường hợp MonoBehaviour dược tạo, chẳng hạn như khi một mức độ được nạp hoặc một GameObject với các thành phần script được khởi tạo

 Trước khi cập nhật khung hình đầu tiên (Before the first time farme update)

• Start(): hàm này được gọi đầu tiên nếu script được kích hoạt Cho đối tượng được thêm vào scene, hàm Start() sẽ được gọi trên tất cả script trước khi cập nhật

 Ở giữa khung hình (In between frame)

• OnApplicationPause(): hàm này được gọi cuối khung hình, nơi tạm dừng được phát hiện, có hiệu quả giữa các bản cập nhật khung bình thường Một khung phụ sẽ được phát hành sau sự kiện OnApplicationPause được gọi để cho phép hiển thị đồ họa

 Thứ tự cập nhật:

• FixedUpdate(): được gọi nhiều lần trong mỗi khung hình Tất cả những tính toán vật lý sẽ có hiệu lực sau khi gọi hàm này FixedUpdate được gọi trên một

bộ đếm đáng tinh cậy và không phụ thuộc vào tỉ lệ khung hình

• Update(): được gọi mỗi lần trong một khung hình

• LastUpdate(): được gọi mỗi lần trong một khung hình sau khi hàm Update() kết thúc

 Kết xuất hình ảnh (Rendering):

• OnPreCull(): được gọi trước khi camera chọn cảnh Việc lựa chọn quyết định

Trang 34

• OnGUI(): được gọi lại nhiều lần mỗi khung hình để đáp ứng sự kiện GUI Những sự kiện giao diện (Layout)

• OnDrawGizmo(): được sử dụng để vẽ Gizmos trong khung nhìn scene cho các mục đích trực quan

 Coroutines: là những thành phần chương trình máy tính khái quát chương trình con cho đa nhiệm, bằng cách cho phép nhiều điểm kiểm soát đình chỉ và hồi phục việc thực thi tại các điểm nhất định Coroutines phù hợp cho việc cài đặt nhiều thành phần chương trình giống nhau như nhiệm vụ hợp tác (cooperative tasks), (exceptions), vòng lặp sự kiện (event loop), vòng lặp (iterators), danh sách vô hữu hạn (infinite lists), ống dẫn (pipes)

• Yield(): coroutine sẽ tiếp tục sau khi tất cả các hàm Update() được gọi trong khung hình kế tiếp

• Yield WaitForSeconds(): coroutine tiếp sau một khoảng thời gian chờ, sau khi tất cả các hàm Update() được gọi trong khung hình

• Yield WaitForFixedUPdate(): coroutine tiếp tục sau khi tất cả các hàm FixedUpdate() được gọi trên tất cả các script

• Yield WWW(): coroutine tiếp tục sau khi tải về WWW đã hoàn thành

• Yield StartCorountine(): nối kết các coroutine và chời đợi cho coroutine hoàn thành lần đầu tiên

Trang 35

 Khi đối tượng bị hủy (When the Object is destroyed)

• OnDestroy(): hàm được gọi sau khi cập nhật tất cả các khung hình cho đến khung hình cuối thể hiện sự tồn tại của đối tượng

 Khi thoát khỏi ứng dụng (When quitting)

• OnApplicationQuit(): chức năng được gọi trên tất cả các đối tượng game trước khi ứng dụng được hủy Trong trình soạn thảo, chức năng được gọi khi người dùng dừng chế độ playmode Trong phần web, chức năng được gọi khi khung nhìn web được đóng

• OnDisible(): chức năng được gọi khi hành vi trở nên vô hiệu hóa hoặc không hoạt động

Trang 36

CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU

3.1 NẠP VÀ HIỂN THỊ MÔ HÌNH 3D

3.1.1 Đặt vấn đề

Game 3D được xây dựng từ rất nhiều mô hình 3D đặt trên không gian 3 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ị mô hình 3D trong game là vô cùng quan trọng

Mô hình 3D được tạo từ rất nhiều đa giác để tạo nên khối vật thể Mô hình trong game thường có thể chia làm 2 loại: tĩnh và động Mô hình loại tĩnh thường là địa hình và các vật thể dùng để trang trí như nhà, đá, cây cối, … Mô hình động thường là mô hình nhân vật và các loại lính, quái vật

3.1.2 Cách giải quyết

Các mô hình 3D thường được thiết kế sẵn bằng các phần mềm chuyên dụng như Blender, 3Ds MAX, Cinema 4D, … Sau đó được đưa vào game engine để sự dụng.Unity Engine hỗ trợ rất nhiều định dạng mô hình 3D: 3DS, OBJ, MAX, FBX, BLEND,

MA, … Tuy nhiên, khi đưa mô hình vào project để sử dụng thì Unity tự chuyển các mô hình thành định dạng FBX Sau đó, mô hình sẽ được nạp sẵn các Component cần thiết

và được chuyển thành một Prefab để có thể tái sử dụng

Trang 37

Các mô hình có thể được nạp bằng cách kéo thả vào trong cửa sổ sau đó được tùy chỉnh sao cho hợp lý Mô hình được đưa vào game thường có 3 loại: Generic, Humnoid, Legacy Trong đó, 2 loại Generic và Humanoid điều khiển chuyển động thông qua Animator (máy trạng thái) Còn chuyển động của Legacy được lưu trong một thành phần gọi là Animation và được điều khiển thông qua các câu lệnh.

•Mô hình Humanoid

Hệ thống chuyển động của mô hình là một hệ thống tương tự với mô hình khung xương người Một bước cơ bản trong việc tạo ra chuyển động cho mô hình là thiết lập ánh xạ giữa các cấu trúc xương trong mô hình nhân vật và cấu trúc xương người đơn giải trong mô hình Humanoid Thuật ngữ này được gọi là Avatar

Hình 3 Mô hình Humanoid

Trang 38

• Mô hình Legacy

Hệ thông mô hình chuyển động Legacy thích hợp cho các mô hình chuyển động với các khung xương đặc biệt mà việc điều khiển khung xương không thông qua máy trạng thái Unity sử dụng hệ thống chuyển động riêng của mô hình và cho khả năng tương thích ngược

Hình 3 Mô hình Legacy

•Mô hình Generic

Mô hình chuyển động này không giống con người cũng được hỗ trợ mặc dù không có trong hệ thống Avatar và tính năng khác Trong hệ thống Mecanim, hình ảnh động không giống với con người được gọi là Generic Animations

Trang 39

Chúng ta đã nạp được mô hình trong trò chơi, vậy làm thế nào để làm cho các mô hình

đó có thể chuyển động trong môi trường không gian 3 chiều

3.2.2 Cách giải quyết

Trong các mô hình 3D cần phải có các hoạt cảnh (Animation) bên trong để hỗ trợ cho

Trang 40

được thực hiện trực tiếp trên đối tượng hoặc hệ thống khung xương được thiết kế từ trước trong các phần mềm hỗ trợ diễn hoạt.

Cửa sổ Animation trong Unity được truy xuất bằng cách vào menu Window/Animation Tại đây, chúng ta thấy giao diện của cửa sổ thiết kế diễn hoạt (hay cửa sổ biên tập Animtion) tương tự như nhiều phần mềm hỗ trợ diễn hoạt khác Cửa sổ cho phép chúng ta tạo ra các Animation Clip cho bất kỳ một đối tượng hay đối tượng con của một đối tượng nào đó đang được chọn trong scene, chúng ta có thể record, tạo

ra các frame trên thanh time line, điều chỉnh vị trí và thuộc tính của các frame này, chạy thử animation, …

Khi thiết kế diễn hoạt trong Unity, chúng ta được Unity cung cấp cho một khả năng rất hữu ít đó là Animation Event, chức năng này cho phép chúng ta gọi và thực thi một hàm bất kỳ có trong script được gắn với đối tượng được diễn hoạt tại một điểm bất kỳ trên timeline

Hình 3 Diễn hoạt trong Unity

Ngày đăng: 14/05/2017, 11:35

HÌNH ẢNH LIÊN QUAN

Hình 2.  Kết xuất hình ảnh - lập trình trò chơi bắn súng với unity3d game engine
Hình 2. Kết xuất hình ảnh (Trang 15)
Hình 2.  Minh họa về ánh sáng - lập trình trò chơi bắn súng với unity3d game engine
Hình 2. Minh họa về ánh sáng (Trang 16)
Hình 2.  Các thành phần trong Unity - lập trình trò chơi bắn súng với unity3d game engine
Hình 2. Các thành phần trong Unity (Trang 21)
Hình 2.  Giao diện của Unity - lập trình trò chơi bắn súng với unity3d game engine
Hình 2. Giao diện của Unity (Trang 25)
Hình 2.  Minh họa cửa sổ Inspector - lập trình trò chơi bắn súng với unity3d game engine
Hình 2. Minh họa cửa sổ Inspector (Trang 28)
Hình 3.  Diễn hoạt thay đạn - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Diễn hoạt thay đạn (Trang 41)
Hình 3.  Hệ thống diễn hoạt - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Hệ thống diễn hoạt (Trang 43)
Hình 3.  Mô hình chức năng của plugin giao diện - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Mô hình chức năng của plugin giao diện (Trang 57)
Hình 3.  Mô phỏng người chơi ở góc nhìn thứ nhất - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Mô phỏng người chơi ở góc nhìn thứ nhất (Trang 63)
Hình 3.  Hệ thống lưới tìm đường đi - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Hệ thống lưới tìm đường đi (Trang 79)
Hình 3.  Hệ thông máy trạng thái - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Hệ thông máy trạng thái (Trang 81)
Hình 3.  Thẻ Visualization trong Occlusion - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Thẻ Visualization trong Occlusion (Trang 89)
Bảng 3.  Trang bị, vũ khí, hiệu ứng và thuộc tính - lập trình trò chơi bắn súng với unity3d game engine
Bảng 3. Trang bị, vũ khí, hiệu ứng và thuộc tính (Trang 95)
Hình 3.  Chế độ chiến đấu - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Chế độ chiến đấu (Trang 98)
Hình 3.  Minh họa thiết kế trò chơi - lập trình trò chơi bắn súng với unity3d game engine
Hình 3. Minh họa thiết kế trò chơi (Trang 99)

TỪ KHÓA LIÊN QUAN

w