Tải bản đầy đủ (.docx) (104 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.52 MB, 104 trang )

Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

MỤC LỤC

-1-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

DANH MỤC HÌNH ẢNH

Hình 3. 1 Mô hình Humanoid
Hình 3. 2 Mô hình Legacy
Hình 3. 3 Mô hình Generic
Hình 3. 4 Nạp và hiển thị mô hình
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ạt
Hì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
Hình 3. 24 Các thành phần trong plugin NGUI
-2-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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ất
Hì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. 33 Mô tả va chạm
Hình 3. 34 Bản đồ nhìn trên cao xuống
Hình 3. 35 Bản đồ dạng lưới 2D
Hình 3. 36 Các ô bên cạnh cần xét
Hình 3. 37 Tính vị trí G
Hình 3. 38 Tính vị trí của H
Hình 3. 39 Vị trí bắt đầu
Hình 3. 40 Bước 2
Hình 3. 41 Bước 3
Hình 3. 42 Tìm đến mục tiêu
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

Hình 3. 46 Hệ thông máy trạng thái
Hình 3. 47 Tài nguyên âm thanh
Hình 3. 48 Mô tả âm thanh nền
Hình 3. 49 Đánh dấu đối tượng
Hình 3. 50 Thẻ Object và Bake trong Occlusion
Hình 3. 51 Thẻ Visualization trong Occlusion
-3-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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
Hình 3. 54 Hai chế độ bắn
Hình 3. 55 Giao diện Menu
Hình 3. 56 Chế độ chiến đấu
Hình 3. 57 Minh họa thiết kế trò chơi

-4-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

-5-



Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

Thuật ngữ / Từ viết tắt

Giải Thích

1

CSDL

Cơ sở dữ liệu

2

GUI

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

3

GLSL

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


4

LOD

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

5

FPS

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

6

FPC

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

-6-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

-7-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

ABSTRACT
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


-8-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

CHƯƠNG 1: TỔNG QUAN
1.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”.

-9-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine


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.

-10-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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).

-11-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

CHƯƠNG 2: SƠ LƯỢC VỀ UNITY 3D
2.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.

-12-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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.

-13-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

Egine – Đặc điểm

CryEngine 3

jMonkeyEngine

Unity 3D

Author

Crytek

jME core Team

Unity Technologies

Plaforms

Windows,
PlayStation3, Xbox

360

Windows, MAC OS
X, Linux, Solàris

Windows, MAC OS
X, Linux, Web,
PlayStation3, iOS,
Android

Primary Programing
Languge

C++ Lua

Java

Javascrpit, C#, Boo

Graphics

DirectX 11

OpenGL

Direct X 9, OpenGL

Audio

FMOD


OpenAL

FMOD

Physics

CryENGINE 3
physics

jBullet, Native Bullet

PhysX

Networking

CryNetwork,
CryLobby

SpiderMonkey

Unity networking

User Interface

Scaleform GFx

Nifty GUI

Unity GUI


Model formàt

COLLÀDA

OgreXML, blend

COLLÀDA, FBX,
blend, …

Level Editor

Sandbox

jMonkey Plaforms

MonoDevelop

Scene Animàtion

Track View

API only

AnimationView

Visual Scrpitng

Flow Graph


none

Third-party
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.

-14-


Đề tài: 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
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.

-15-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine


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

-16-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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, …

Hình 2. Các thành phần vật lý

-17-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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.

-18-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

-19-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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.

Hình 2. Minh họa về các đối tượng
-20-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

-21-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

-22-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

-23-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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

-24-


Đề tài: Lập trình trò chơi bắn súng với Unity3D Game Engine

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).
• Project: Danh sách các Assets của dự án, được ví như thư viện của dự án.

-25-


×