1. Trang chủ
  2. » Tất cả

Nghiên cứu và tìm hiểu về unity và ứng dụng về phát triển game

22 4 0

Đ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

Tiêu đề Nghiên cứu và tìm hiểu về Unity và ứng dụng về phát triển game
Người hướng dẫn Nguyễn Thái Cường
Trường học Đại học Công nghệ Thông tin - Đại học Quốc gia TP.HCM
Chuyên ngành Phát triển Game, Công cụ và phát triển phần mềm
Thể loại Bài tập môn
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 1,1 MB

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

Nội dung

 Tương tự trong tab Project, Hierarchy cũng có một thanh tìm kiếm giúp quản lý và thao tác với các Game Object hiệu quả hơn đặc biệt là với các dự án lớn... Đối với bất kỳ gam

Trang 1

BÀI TẬP MÔN : CÔNG CỤ VÀ PHÁT TRIỀN PHẦN MỀM

Đề tài : Nghiên cứu và tìm hiểu về Unity và ứng dụng về phát triển game

Giáo viên giảng dạy : Nguyễn Thái Cường

Trang 2

CHƯƠNG 1 : TỔNG QUAN VỀ UNITY

1 Khái niệm Unity

Unity là một “cross- flatform game engine” tạm hiểu là công cụ phát triển game đanền tảng được phát triển bởi Unity Technologies Game engine này được sử dụng để phát trển game trên PC, consoles, thiết bị di động và trên websites

Unity hiểu một cách đơn giản nhất chính là phần mềm được sử dụng để làm game

đa nền tảng và được phát triển bởi Unity Technologies Phần mềm này chủ yếu áp dụng cho hệ điều hành trên máy tính, điện thoại và consoles, được công bố lần đầu tiên trên thế giới với hệ điều hành của OS X vào năm 2005 Đến nay, phần mềm này đã được phát triển, mở rộng đến 27 nền tảng mới

2 Quá trình phát triển Unity

Ra mắt đầu tiên vào năm 2005 tại sự kiện Apple’s Worldwide Developer

Conference bởi nhà sáng lập David Helgason, trải qua hơn 12 năm phát triển, nay Unity đã có version 5.5 hoàn thiện hơn về rất nhiều mặt Tháng 5-2012 theo cuộc khảo sát Game Developer Megazine được công nhận là Game engine tốt nhất cho mobile Năm 2014 Unity thắng giải “Best Engine” tại giải UK’s annual Develop Industry Exellence

3 Một số thống kê về Unity:

Tính đến quý 3 năm 2016 đã có 5 tỉ lượt download game và ứng dụng được phát triển bởi Unity

2,4 tỉ thiết bị di động đã từng tải ít nhất 1 ứng dụng bởi unity

Trong top 1000 game Mobiles miễn phí thì số lượng game tạo ra bởi Unity chiếm tới 34%

Trang 3

Số lượng người dùng (gamer) của Unity đạt tới con số 770 triệu, trong khi đó số người thường xuyên sử dụng Twitter là 310 triệu người.

Sự thay đổi trong cách thức chơi game của người chơi hay nói cách khác là xu hướng mọi người tập trung vào game trên di động nhiều hơn

4 Ưu điểm của Unity:

Chức năng cốt lõi đa dạng bao gồm: 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ò ng dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị và kết nối mạng Nhờ có các engine mà công việc làm game trở nên ít tốn kém và đơn giản hơn

Trang 4

Hỗ trợ đa nền tảng: Một trong các thế mạnh của Unity3D chính là khả năng hỗ trợ gần như toàn bộ các nền tảng hiện có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và cả Flash Nói cách khác, chỉ với một gói engine, các studio có thể làm game cho bất

kỳ hệ điều hành nào và dễ dàng convert chúng sang những hệ điều hành khác nhau.Đồng thời, đây cũng là giải pháp cho các game online đa nền tảng – có thể chơi đồng thời trên nhiều hệ điều hành, phần cứng khác nhau như Web, PC, Mobile, Tablet…

Dễ sử dụng: Unity3D được built 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 Do được hướng đến đồng thời cả lập trình viên không chuyên và studio chuyên nghiệp, nên Unity3D khá dễ sử dụng Hơn nữa, đây là một trong những engine phổ biến nhất trên thế giới, người dùng cóthể dễ dàng tìm kiếm kinh nghiệm sử dụng của “tiền bối” trên các forum công nghệ

Trang 5

Tính kinh tế cao: Unity Technologies hiện cung cấp bản miễn phí engine Unity3D cho người dùng cá nhân và các doanh nghiệp có doanh thu dưới 100.000

USD/năm Với bản Pro, người dùng phải trả 1.500 USD/năm – một con số rất khiêm tốn so với những gì engine này mang lại

CHƯƠNG 2 : TÌM HIỂU VỀ UNITY ENGINE

I Các thành phần trong Unity Editor

Trang 6

1 Cửa sổ Sences

 Phần này phần hiển thị các đối tượng trong scenes một cách trực quan, có thể lựa chọn các đối tượng, kéo thả, phóng to, thu nhỏ, xoay các đối tượng

 Phần này có để thiết lập một số thông số như hiển thị ánh sáng, âm anh, cáchnhìn 2D hay 3D -Khung nhìn Scene là nơi bố trí các Game Object như cây cối, cảnh quan, enemy, player, camera, … trong game Sự bố trí hoạt cảnh là một trong những chức năng quan trọng nhất của Unity

2 Cửa sổ Hierarchy

 Tab hierarchy là nơi hiển thị các Game Object trong Sences hiện hành Khi các đối tượng được thêm hoặc xóa trong Sences, tương ứng với các đối tượng đó trong cửa sổ Hierarchy

 Tương tự trong tab Project, Hierarchy cũng có một thanh tìm kiếm giúp quản lý và thao tác với các Game Object hiệu quả hơn đặc biệt là với các dự

án lớn

3 Cửa sổ Game

Trang 7

 Đây là mạn hình demo Game, là góc nhìn từ camera trong game.

 Thanh công cụ trong cửa sổ game cung cấp các tùy chỉnh về độ phân giải man hình, thông số (stats), gizmos, tùy chọn bật tắt các component

4 Cửa sổ Project

 Đây là cưa sổ explorer của Unity, hiển thị thông tin của tất cả các tài nguyên(Assets) trong game của bạn

 Cột bên trái hiển thị assets và các mục yêu thích dưới dạng cây thư mục tương tự như Windows Explorer Khi click vào một nhánh trên cây thư mục thì toàn bộ nội dung của nhánh đó sẽ được hiển thị ở khung bên phải Ta có thể tạo ra các thư mục mới bằng cách Right click -> Create -> Folder hoặc nhấn vào nút Create ở góc trên bên trái cửa sổ Project và chọn Folder Các tài nguyên trong game cũng có thể được tạo ra bằng cách này

 Phía trên cây thư mục là mục Favorites, giúp chúng ta truy cập nhanh vào những tài nguyên thường sử dụng Chúng ta có thể đưa các tài nguyên vào Favorites bằng thao tác kéo thả

 Đường dẫn của thư mục tài nguyên hiện tại Chúng ta có thể dễ dàng tiếp cận các thư mục con hoặc thư mục gốc bằng cách click chuột vào mũi tên hoặc tên thư mục

5 Cửa sổ Inspector

 Cửa sổ Inspector hiển thị chi tiết các thông tin về Game Object đang làm việc, kể cả những component được đính kèm và thuộc tính của nó Bạn có thể điều chỉnh, thiết lập mọi thông số và chức năng của Game Object thông qua cửa sổ Inspector

 Mọi thuộc tính thể hiện trong Inspector đều có thể dễ dàng tuỳ chỉnh trực tiếp mà không cần thông qua một kịch bản định trước Tuy nhiên Scripting API cung cấp một số lượng nhiều và đầy đủ hơn do giao diện Inspector là cógiới hạn

 Các thiết lập của từng component được đặt trong menu Các bạn có thể clickchuột phải, hoặc chọn icon hình bánh răng nhỏ để xuất hiện menu

 Ngoài ra Inspector cũng thể hiện mọi thông số Import Setting của asset đanglàm việc như hiển thị mã nguồn của Script, các thông số animation, …

II Các khái niệm cơ bản trong unity

Trang 8

Trong unity có rất nhiều công cụ nhỏ khác nhau giúp phục vụ cho các mục đích khác nhau trong quá trình lập trình viên code game Cụ thể:

7 Sounds

Trang 9

Đối với bất kỳ game nào, âm thanh là một trong những yếu tố không thể thiếu, âm thanh như chất xúc tác nhằm kích thích các giác quan của người chơi giúp cho game trở nên thu hút và hấp dẫn hơn.

Cách để phát âm thanh trong Unity:

Audio Source Component:

Audio Source là 1 built-in component được Unity xây dựng sẵn để hỗ trợ phát các file âm thanh trong game

Để sử dụng Audio Source, chọn Add Component → Audio → Audio Source, các thuộc tính của Audio Source được hiển thị trong hình sau:

Các tính năng chính:

AudioClip: file âm thanh sẽ được gán vào AudioClip để xử lý và phát âm

thanh ra các thiết bị output

Play On Awake: tùy chọn cho phép âm thanh được phát ngay

khi GameObject được kích hoạt

Loop: tùy chọn lặp lại liên tục âm thanh sau khi đã phát hết.

Mute: tùy chọn ngắt kết nối với các thiết bị output âm thanh Âm thanh sẽ

vẫn chạy bình thường nhưng sẽ không được phát ra

Trang 10

Ngoài ra còn một số chức năng và tuỳ chọn không được hiển thị Xử lý các tính năng cần thiết này với C# Script.

Các định dạng hỗ trợ:

Theo thông tin từ trang chủ chính thức của Unity thì các định dạng âm thanh được

hỗ trợ được thể hiện trong bảng sau:

Xử lý và phát âm thanh với Script:

Đầu tiên, để thao tác được với Audio Source, sử dụng dòng code sau:

m_audio = GetComponent<AudioSource>();

Với C# Script, có thể thực hiện được mọi thao tác với AudioSource, nhưng bài viết

sẽ chỉ hướng dẫn các thao tác đơn giản và phổ biến

Thay đổi file âm thanh:

Trang 11

File âm thanh sẽ được lưu trữ dưới biến clip Do đó để thay đổi file âm thanh khác,gán file đó vào biến này Thao tác như sau:

m_audio.clip = yourAudioFile;

yourAudioFile phải được load lên bộ nhớ trước khi thực hiện dòng code trên

Play - Pause – Stop:

3 hàm này dùng để điều khiển bật hoặc tắt nhạc theo nhu cầu của lập trình viên, các hàm này sẽ thay đổi giá trị của biến isPlaying để thể hiện được trạng thái

isPlaying

Biến này có tác dụng như một cờ đánh dấu để AudioSource có thể kiểm tra và bật hoặc tắt âm thanh theo ý lập trình viên Để kiểm tra giá trị của biến, có thể sử dụng hàm Debug.Log như sau:

component khác thông qua script Có thể nói script như là 'não' người, nó có thể điều khiển các bộ phận còn lại

Trang 12

Unity hỗ trợ 2 ngôn ngữ chính là C#, JavaScript và ngôn ngữ Boo(Ngôn ngữ này

đã được loại bỏ vì ít được sử dụng)

9 Scenes

Với đa số game hiện nay, có nhiều hơn một màn chơi hay cấp độ để thách thức người chơi, tăng tính thú vị của game Làm thế nào để khi chơi hết 1 màn có thể chuyển sang màn chơi mới? Để làm điều này có thể thay thêm các popup trong game hoặc chuyển đổi scene

Chuyển đổi giữa các scene

Tạo Scene

Để chuyển đổi giữa các scene trong game, cần 2 hoặc nhiều scene và sao lưu lại.Để thực hiện thử việc chuyển scene, tạo scene main, backbutton và highscore

Main scene

Trang 13

Backbutton scene

Highscore scene

Chuyển Scene với C# Script

Trang 14

Để chuyển scene khá đơn giản do Unity đã hỗ trợ việc load một màn chơi trong game (level) thông qua hàm Application.LoadLevel Nguyên mẫu của hàm như sau:

public static void LoadLevel(int index);

public static void LoadLevel(string name);

Có thể dùng trực tiếp tên của scene để chuyển đổi sang scene đó

Cấu hình Build Setting

1 số trường hợp có nhiều màn tương tự nhau, chuyển đổi bằng tên scene có đôi chút phức tạp hơn Do đó có thể sử dụng index của scene, là ID của scene trong cửa sổ Build Setting

Ngoài ra có thể truy xuất tên và index của scene hiện tại thông qua các thành phần loadedLevel và loadedLevelName nằm trong lớp Application

Sau khi thực hiện các thao tác trên, nếu test thử thì thấy các thao tác chuyển scene vẫn chưa hoạt động Các scene có thể chuyển qua lại khi và chỉ khi chúng được thêm vào Build Setting Lúc này Unity sẽ lưu trữ index và name của scene, phục vụ cho việc chuyển đổi scene

Để mở menu Build Setting, thực hiện 1 trong những cách sau:

 Vào menu File → Build Setting

 Nhấn tổ hợp phím Ctrl + Shift + B

Giao diện Build Setting hiện ra, thực hiện kéo thả tất cả các scene liên quan vào mục Scene In Build Mỗi scene sẽ có 1 index và có thể kéo thả nhiều lần Do đó cần cẩn thận để tránh lãng phí tài nguyên khi build lại những scene trùng lặp

Trang 15

Đến đây thì các scene đã sẵn sàng để có thể chuyển đổi qua lại theo logic game Nhấn nút Play và kiểm tra.

10 Assets

Assets là những tài nguyên được sử dụng trong việc phát triển game trong Unity bao gồm tất cả những gì phục vụ cho dự án game như sprite, animation, sound, script, scenes…

Trang 16

Các Assets này có thể là hình ảnh, mô hình 3D, âm thanh, hiệu ứng, được tạo ra bởi các nhà phát triển, có thể được download miễn phí hoặc trả phí Tính năng này giúp giảm thiểu rất nhiều thời gian cho việc thiết kế và lập trình game.

11 Camera

Camera là một khái niệm quen thuộc đối với mọi nền tảng phát triển game, với cácthao tác chỉnh sửa và chuyển đổi camera, có thể tạo ra vô số hiệu ứng độc đáo và ứng dụng vào game một cách sinh động và hấp dẫn, thu hút nhiều người chơi

Các khái niệm cơ bản

Projection

Có 2 loại phép chiếu của camera:

 Orthographic: phép chiếu song song, được sử dụng trong các game 2D, các đối tượng sẽ được vẽ đúng tỉ lệ dù ở bất kỳ khoảng cách nào của chiều sâu

 Perspective: phép chiếu phối cảnh, được ứng dụng trong game 3D, mô phỏng lại thế giới thực của con người Các vật thể càng ở xa thì tỉ lệ hình ảnh sẽ càng nhỏ và ngược lại

Field of view (fov)

Là góc mở của camera Perspective Đối với Orthographic camera, tham số này sẽ được bỏ qua Fov được mô tả thông qua hình minh hoạ sau:

Với cùng 1 đối tượng và 1 vị trí, nếu fov càng lớn, đối tượng sẽ càng nhỏ và ngượclại Đây là đặc điểm thú vị và được ứng dụng trong việc tạo hiệu ứng zoom trong môi trường 3D

Near - Far

Near và Far là hai mặt phẳng cắt, quy định khoảng nhìn thấy của camera tính theo chiều sâu 1 vật muốn được hiển thị phải nằm trong phạm vi nhìn thấy của camera,

Trang 17

bao gồm cả khoảng cách từ camera đến vật đó Nếu quá gần hoặc quá xa, camera

sẽ không thu được hình ảnh để hiển thị lên màn hình

Camera trong Unity

Tuỳ chỉnh tại Inspector

Tại Inspector, có thể chỉnh sửa các thuộc tính minh hoạ ở trong hình Chi tiết 1 số thuộc tính thường dùng:

 Clear Flag: quy định cách thức xoá các đối tượng Trong 3D game tuỳ chọn Skybox thường được sử dụng và tuỳ chọn Solid color đối với game 2D

 Background: màu nền sau khi các đối tượng đã được render

 Culling Mask: quy định các layer sẽ được vẽ hoặc ẩn đi

 Projection: chọn phép chiếu cho camera

 Size: kích thước của camera Tuỳ chọn này chỉ có khi phép chiếu được chọn là Orthographic

 Field of view: góc đo tính bằng độ, là góc đo chiều rộng góc nhìn của

Trang 18

Thông thường, các thuộc tính quy định tính chất của camera sẽ ít khi được chỉnh

sửa trong script Tuy nhiên, có thể thay đổi chúng trong Runtime để tạo ra các hiệu

ứng như Camera Zoom, thay đổi màu sắc Background qua từng màn chơi, …

1 số thuộc tính chính của Camera:

main Trả về đối tượng camera đầu tiên được gắn tag "MainCamera"

allCameras Trả về tất cả các đối tượng camera đang được kích hoạt

allCamerasCount Số lượng camera trong scene hiện tại

aspect Tỉ lệ màn hình, tính bằng công thức aspect = width / height

backgroundColor Màu nền

clearFlags Cờ quy định việc xoá camera sau mỗi frame

fieldOfView Góc nhìn của camera, sử dụng cho phép chiếu Perspective

orthographicSize Kích thước camera, sử dụng với phép chiếu Orthographic

cameraToWorldMatrix Ma trận 4x4 biến đổi toạ độ trong không gian camera sang toạ độ thế giới

Trang 19

 Chiều y dương hướng lên trên.

 Chiều z dương hướng vào bên trong màn hình

Toạ độ của đối tượng được thể hiện trong thành phần Transform chính là toạ độ trong World coordinate

Các đối tượng con còn có 1 toạ độ khác được lưu trữ tại các thuộc

tính localPosition, localRotation và localScale của Transform

Viewport Coordinate

Là hệ toạ độ của camera Trong Unity, các trục toạ độ của World space và

Viewport space trùng nhau, nhưng khác nhau về đơn vị của các trục

Trong camera, góc dưới bên trái có toạ độ (0, 0), góc trên bên phải có toạ độ (1, 1).Các giá trị này có thể được chỉnh sửa thông qua Viewport Rect trong Inspector củađối tượng Camera

Screen Coordinate

Screen Coordinate là hệ toạ độ của màn hình hiển thị

Đơn vị của các trục là pixel

 Góc dưới bên trái màn hình có toạ độ (0, 0)

 Góc trên bên phải là (screenWidth – 1, screenHeight – 1)

UI Coordinate

Là hệ toạ độ của các đối tượng UI, giá trị của các trục toạ độ sẽ nằm trong

khoảng (0, 1)

 Góc trên bên trái có toạ độ (0, 0)

 Góc dưới bên phải là (1, 1)

Chuyển đổi giữa các hệ toạ độ trong Unity

Trong khi thao tác với các đối tượng thông qua script, nhiều trường hợp nhận đượcinput từ các sự kiện click chuột, touch,… và dùng nó để thao tác với các đối tượng.Thông thường các sự kiện này sẽ trả về toạ độ của Screen space Vậy làm sao có thể chuyển đổi sang World space để thao tác được với các đối tượng chính xác?

Ngày đăng: 25/02/2023, 10:08

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w