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 2 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

Định dạng
Số trang 22
Dung lượng 1,1 MB

Nội dung

BÀI TẬP MÔN : CÔNG CỤ VÀ PHÁT TRIỀN PHẦN MỀM Đề tài : Nghiên cứu tìm hiểu Unity ứng dụng phát triển game Giáo viên giảng dạy : Nguyễn Thái Cường CHƯƠNG : TỔNG QUAN VỀ UNITY 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 đa nề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 PC, consoles, thiết bị di động và websites Unity hiểu mợt cách đơn giản 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 máy tính, điện thoại và consoles, được cơng bố lần thế giới với hệ điều hành 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 Quá trình phát triển Unity Ra mắt vào năm 2005 sự kiện Apple’s Worldwide Developer Conference bởi nhà sáng lập David Helgason, trải qua 12 năm phát triển, Unity có version 5.5 hoàn thiện về 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 cho mobile Năm 2014 Unity thắng giải “Best Engine” giải UK’s annual Develop Industry Exellence Mợt sớ thớng kê về Unity: Tính đến quý năm 2016 có 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 ứng dụng bởi unity Trong top 1000 game Mobiles miễn phí thì số lượng game tạo bởi Unity chiếm tới 34% Số lượng người dùng (gamer) Unity đạt tới số 770 triệu, đó số người thường xuyên sử dụng Twitter là 310 triệu người Sự thay đổi cách thức chơi game 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 di động nhiều Ưu điểm của Unity: Chức 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 hình ảnh 2D hoặc 3D, công cụ vật lý (tính tốn và phát 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 liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị và kết nối mạng Nhờ có engine mà công việc làm game trở nên tốn và đơn giản Hỗ trợ đa nền tảng: Một thế mạnh Unity3D là khả hỗ trợ gần toàn bộ nền tảng có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và Flash Nói cách khác, chỉ với một gói engine, studio có thể làm game cho hệ điều hành nào và dễ dàng convert chúng sang hệ điều hành khác Đồng thời, là giải pháp cho game online đa nền tảng – có thể chơi đồng thời nhiều hệ điều hành, phần cứng khác Web, PC, Mobile, Tablet… Dễ sử dụng: Unity3D được built 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 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 lập trình viên không chuyên và studio chuyên nghiệp, nên Unity3D dễ sử dụng Hơn nữa, là một engine phổ biến thế giới, người dùng có thể dễ dàng tìm kiếm kinh nghiệm sử dụng “tiền bối” forum cơng nghệ Tính kinh tế cao: Unity Technologies cung cấp miễn phí engine Unity3D cho người dùng cá nhân và doanh nghiệp có doanh thu 100.000 USD/năm Với Pro, người dùng phải trả 1.500 USD/năm – một số khiêm tốn so với gì engine này mang lại CHƯƠNG : TÌM HIỂU VỀ UNITY ENGINE I Các thành phần Unity Editor Cửa sổ Sences  Phần này phần hiển thị đối tượng scenes một cách trực quan, có thể lựa chọn đối tượng, kéo thả, phóng to, thu nhỏ, xoay đối tượng  Phần này có để thiết lập một số thông số hiển thị ánh sáng, âm anh, cách nhìn 2D hay 3D -Khung nhìn Scene là nơi bố trí Game Object cối, cảnh quan, enemy, player, camera, … game Sự bố trí hoạt cảnh là mợt chức quan trọng Unity Cửa sổ Hierarchy  Tab hierarchy là nơi hiển thị Game Object Sences hành Khi đối tượng được thêm hoặc xóa Sences, tương ứng với đối tượng đó cửa sổ Hierarchy  Tương tự tab Project, Hierarchy có một tìm kiếm giúp quản lý và thao tác với Game Object hiệu đặc biệt là với dự án lớn Cửa sổ Game  Đây là mạn hình demo Game, là góc nhìn từ camera game  Thanh công cụ cửa sổ game cung cấp 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 component Cửa sổ Project  Đây là cưa sổ explorer Unity, hiển thị thông tin tất tài nguyên (Assets) game bạn  Cột bên trái hiển thị assets và mục yêu thích dạng thư mục tương tự Windows Explorer Khi click vào một nhánh thư mục thì toàn bộ nội dung nhánh đó được hiển thị ở khung bên phải Ta có thể tạo thư mục cách Right click -> Create -> Folder hoặc nhấn vào nút Create ở góc bên trái cửa sổ Project và chọn Folder Các tài nguyên game có thể được tạo cách này  Phía thư mục là mục Favorites, giúp truy cập nhanh vào tài nguyên thường sử dụng Chúng ta có thể đưa tài nguyên vào Favorites thao tác kéo thả  Đường dẫn thư mục tài nguyên Chúng ta có thể dễ dàng tiếp cận thư mục hoặc thư mục gốc cách click chuột vào mũi tên hoặc tên thư mục Cửa sổ Inspector  Cửa sổ Inspector hiển thị chi tiết thông tin về Game Object làm việc, kể component được đính kèm và tḥc tính nó Bạn có thể điều chỉnh, thiết lập mọi thông số và chức Game Object thông qua cửa sổ Inspector  Mọi tḥc tính thể 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 định trước Tuy nhiên Scripting API cung cấp một số lượng nhiều và đầy đủ giao diện Inspector là có giới hạn  Các thiết lập từng component được đặt menu Các bạn có thể click chuột phải, hoặc chọn icon hình bánh nhỏ để xuất menu  Ngoài Inspector thể mọi thông số Import Setting asset làm việc hiển thị mã nguồn Script, thông số animation, … II Các khái niệm unity Trong unity có nhiều công cụ nhỏ khác giúp phục vụ cho mục đích khác trình lập trình viên code game Cụ thể: GameObject  Một đối tượng cụ thể game gọi là một game object, có thể là nhân vật, đồ vật nào đó Ví dụ: cối, xe cộ, nhà cửa, người Component  Một GameObject có nhiều thành phần cấu tạo nên nó là hình ảnh (sprite render), tập hợp hành động (animator), thành phần xử lý va chạm (collision), tính tốn vật lý (physical), mã điều khiển (script), thành phần khác thứ vậy gọi là một component GameObject Sprite  Là một hình ảnh 2D một game object có thể là hình ảnh đầy đủ, hoặc có thể là một bộ phận nào đó Animation  Là tập một hình ảnh động dựa sự thay đổi liên tục nhiều sprite khác Key Frame  Key Frame hay Frame là một trạng thái một animation Có thể được tạo nên từ sprite hay nhiều sprite khác Prefabs  Là một khái niệm Unity, dùng để sử dụng lại đối tượng giống có game mà chỉ cần khởi tạo lại giá trị vị trí, tỉ lệ biến dạng và góc quay từ mơt đối tượng ban đầu Ví dụ: Các đối tượng là đồng tiên game Mario đều có xử lý giống nhau, nên ta chỉ việc tạo mợt đối tượng ban đầu, đồng tiền cịn lại sử dụng prefabs Hoặc ta lát gạch cho một nền nhà, viên gạch được sử dụng là prefabs Sounds Đối với game nào, âm là một yếu tố không thể thiếu, âm chất xúc tác nhằm kích thích giác quan người chơi giúp cho game trở nên thu hút và hấp dẫn Cách để phát âm Unity: Audio Source Component: Audio Source là built-in component được Unity xây dựng sẵn để hỗ trợ phát file âm game Để sử dụng Audio Source, chọn Add Component → Audio → Audio Source, tḥc tính Audio Source được hiển thị hình sau: Các tính chính:  AudioClip: file âm được gán vào AudioClip để xử lý và phát âm thiết bị output  Play On Awake: tùy chọn cho phép âm được phát GameObject được kích hoạt  Loop: tùy chọn lặp lại liên tục âm sau phát hết  Mute: tùy chọn ngắt kết nối với thiết bị output âm Âm chạy bình thường không được phát Ngoài cịn mợt số chức và tuỳ chọn khơng được hiển thị Xử lý tính cần thiết này với C# Script Các định dạng hỗ trợ: Theo thơng tin từ trang chủ thức Unity thì định dạng âm được hỗ trợ được thể bảng sau: Format Extension MPEG Layer mp3 OGG Vorbis ogg Microsoft Wave wav Audio Interchange File Format aiff / aif Ultimate Soundtracker Module mod Impulse Tracker Modele it Scream Tracker Module s3m Fast Tracker Module xm Xử lý phát âm với Script: Đầu tiên, để thao tác được với Audio Source, sử dụng dòng code sau: m_audio = GetComponent(); Với C# Script, có thể thực được mọi thao tác với AudioSource, bài viết chỉ hướng dẫn thao tác đơn giản và phổ biến Thay đổi file âm thanh: File âm được lưu trữ biến clip Do đó để thay đổi file âm khác, gán file đó vào biến này Thao tác sau: m_audio.clip = yourAudioFile; yourAudioFile phải được load lên bộ nhớ trước thực dòng code Play - Pause – Stop: hàm này dùng để điều khiển bật hoặc tắt nhạc theo nhu cầu lập trình viên, hàm này thay đổi giá trị biến isPlaying để thể được trạng thái AudioSource m_audio.Play(); m_audio.Pause(); m_audio.Stop(); Hàm Pause dừng chơi nhạc và lưu trữ trạng thái để có thể resume, hàm Stop dừng hoàn toàn và di chuyển về vị trí đầu file âm bợ nhớ isPlaying Biến này có tác dụng một cờ đánh dấu để AudioSource có thể kiểm tra và bật hoặc tắt âm theo ý lập trình viên Để kiểm tra giá trị biến, có thể sử dụng hàm Debug.Log sau: Debug.Log(m_audio.isPlaying); Mute: Dùng để bật hoặc tắt âm phát thiết bị output, thao tác tương tự hướng dẫn ở Script Unity cung cấp sẵn cho nhiều component Physics 2D, Audio, Animation để làm game Tuy nhiên để sử dụng, điều khiển, chỉnh sửa và kết hợp component này một cách linh hoạt, Unity cung cấp thêm một component người dùng tự tạo đó là script Bạn có thể điều chỉnh bất cứ tḥc tính component khác thông qua script Có thể nói script là 'não' người, nó có thể điều khiển bộ phận cịn lại Unity hỗ trợ ngơn ngữ là C#, JavaScript và ngôn ngữ Boo(Ngôn ngữ này được loại bỏ vì được sử dụng) Scenes Với đa số game nay, có nhiều một màn chơi hay cấp độ để thách thức người chơi, tăng tính thú vị game Làm thế nào để chơi hết màn có thể chuyển sang màn chơi mới? Để làm điều này có thể thay thêm popup game hoặc chuyển đổi scene Chuyển đổi scene Tạo Scene Để chuyển đổi scene game, cần hoặc nhiều scene và lưu lại Để thực thử việc chuyển scene, tạo scene main, backbutton và highscore Main scene Backbutton scene Highscore scene Chuyển Scene với C# Script Để chuyển scene đơn giản Unity hỗ trợ việc load một màn chơi game (level) thông qua hàm Application.LoadLevel Nguyên mẫu hàm sau: public static void LoadLevel(int index); public static void LoadLevel(string name); Có thể dùng trực tiếp tên scene để chuyển đổi sang scene đó Cấu hình Build Setting số trường hợp có nhiều màn tương tự nhau, chuyển đổi tên scene có đôi chút phức tạp Do đó có thể sử dụng index scene, là ID scene cửa sổ Build Setting Ngoài có thể truy xuất tên và index scene thông qua thành phần loadedLevel và loadedLevelName nằm lớp Application Sau thực thao tác trên, nếu test thử thì thấy thao tác chuyển scene chưa hoạt động Các scene có thể chuyển qua lại và chỉ chúng được thêm vào Build Setting Lúc này Unity lưu trữ index và name scene, phục vụ cho việc chuyển đổi scene Để mở menu Build Setting, thực cách sau:  Vào menu File → Build Setting  Nhấn tở hợp phím Ctrl + Shift + B Giao diện Build Setting ra, thực kéo thả tất scene liên quan vào mục Scene In Build Mỗi scene có 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 build lại scene trùng lặp Đến thì 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à tài nguyên được sử dụng việc phát triển game Unity bao gồm tất gì phục vụ cho dự án game sprite, animation, sound, script, scenes… Các Assets này có thể là hình ảnh, mô hình 3D, âm thanh, hiệu ứng, được tạo bởi nhà phát triển, có thể được download miễn phí hoặc trả phí Tính này giúp giảm thiểu 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 mọi nền tảng phát triển game, với thao tác chỉnh sửa và chuyển đổi camera, có thể tạo 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 Projection Có loại phép chiếu camera:  Orthographic: phép chiếu song song, được sử dụng game 2D, đối tượng được vẽ tỉ lệ dù ở khoảng cách nào chiều sâu  Perspective: phép chiếu phối cảnh, được ứng dụng game 3D, mô lại thế giới thực người Các vật thể càng ở xa thì tỉ lệ hình ảnh càng nhỏ và ngược lại Field of view (fov) Là góc mở camera Perspective Đối với Orthographic camera, tham số này được bỏ qua Fov được mô tả thông qua hình minh hoạ sau: Với cùng đối tượng và vị trí, nếu fov càng lớn, đối tượng càng nhỏ và ngược lại Đây là đặc điểm thú vị và được ứng dụng việc tạo hiệu ứng zoom 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 camera tính theo chiều sâu vật muốn được hiển thị phải nằm phạm vi nhìn thấy camera, bao gồm khoảng cách từ camera đến vật đó Nếu gần hoặc xa, camera không thu được hình ảnh để hiển thị lên màn hình Camera Unity Tuỳ chỉnh Inspector Tại Inspector, có thể chỉnh sửa tḥc tính minh hoạ ở hình Chi tiết số tḥc tính thường dùng:  Clear Flag: quy định cách thức xoá đối tượng Trong 3D game tuỳ chọn Skybox thường được sử dụng và tuỳ chọn Solid color game 2D  Background: màu nền sau đối tượng được render  Culling Mask: quy định layer được vẽ hoặc ẩn  Projection: chọn phép chiếu cho camera  Size: kích thước camera Tuỳ chọn này chỉ có phép chiếu được chọn là Orthographic  Field of view: góc đo tính đợ, là góc đo chiều rộng góc nhìn Camera  Clipping Planes: bao gồm tḥc tính Near và Far Là khung nhìn thấy camera  Viewport Rect: kích thước camera và vị trí nó màn hình Các giá trị này sử dụng hệ toạ độ Screen Coordinate (giới thiệu ở phần dưới) Một số thao tác C# Script Thơng thường, tḥc tính quy định tính chất camera được chỉnh sửa script Tuy nhiên, có thể thay đổi chúng Runtime để tạo hiệu ứng Camera Zoom, thay đổi màu sắc Background qua từng màn chơi, … số tḥc tính Camera: Tḥc tính Chức main Trả về đối tượng camera được gắn tag "MainCamera" allCameras Trả về tất đối tượng camera được kích hoạt allCamerasCount Số lượng camera scene aspect Tỉ lệ màn hình, tính công thức aspect = width / height backgroundColor Màu nền clearFlags Cờ quy định việc xoá camera sau frame fieldOfView Góc nhìn 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ạ độ không gian camera sang toạ độ thế giới game worldToCameraMatrix Ma trận 4x4 biến đổi toạ độ thế giới game sang toạ độ không gian camera Các hệ toạ độ Unity World Coordinate Là hệ toạ độ thế giới thực game Hệ toạ độ này tuân theo quy tắc bàn tay trái:  Chiều x dương là bên phải  Chiều y dương hướng lên  Chiều z dương hướng vào bên màn hình Toạ độ đối tượng được thể thành phần Transform là toạ đợ World coordinate Các đối tượng cịn có toạ đợ khác được lưu trữ tḥc tính localPosition, localRotation và localScale Transform Viewport Coordinate Là hệ toạ độ camera Trong Unity, trục toạ độ World space và Viewport space trùng nhau, khác về đơn vị trục Trong camera, góc bên trái có toạ độ (0, 0), góc 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 Inspector đối tượng Camera Screen Coordinate Screen Coordinate là hệ toạ độ màn hình hiển thị Đơn vị trục là pixel  Góc bên trái màn hình có toạ độ (0, 0)  Góc bên phải là (screenWidth – 1, screenHeight – 1) UI Coordinate Là hệ toạ độ đối tượng UI, giá trị trục toạ độ nằm khoảng (0, 1)  Góc bên trái có toạ độ (0, 0)  Góc bên phải là (1, 1) Chuyển đổi hệ toạ độ Unity Trong thao tác với đối tượng thông qua script, nhiều trường hợp nhận được input từ sự kiện click chuột, touch,… và dùng nó để thao tác với đối tượng Thông thường sự kiện này trả về toạ độ Screen space Vậy làm có thể chuyển đổi sang World space để thao tác được với đối tượng xác? Unity hỗ trợ sẵn hàm chuyển đổi Coordinate system Các hàm này được gắn vào camera được sử dụng (trong trường hợp game có nhiều camera):       Camera.WorldToScreenPoint Camera.WorldToViewportPoint Camera.ScreenToViewportPoint Camera.ScreenToWorldPoint Camera.ViewportToScreenPoint Camera.ViewportToWorldPoint Các hàm nhận vào Vector3 và trả về Vector3 tương ứng với hệ toạ độ cần chuyển thao tác liên tiếp hỗ trợ việc chuyển từ Ui sang Screen Coordinate và ngược lại  GUIUtility.ScreenToGUIPoint  GUIUtility.GUIToScreenPoint 12 Transform Là phép biến đổi tịnh tiến, quay theo trục, và phóng to thu nhỏ một đối tượng ...CHƯƠNG : TỔNG QUAN VỀ UNITY 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 đa nền tảng được phát triển bởi Unity Technologies Game engine này... dụng để phát trển game PC, consoles, thiết bị di động và websites Unity hiểu một cách đơn giản 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... kê về Unity: Tính đến quý năm 2016 có 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 ứng dụng bởi unity Trong top 1000 game Mobiles

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

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

TÀI LIỆU LIÊN QUAN

w