1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình game 2D với UNITY

74 1,5K 4

Đ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 74
Dung lượng 2,52 MB

Nội dung

Bài 0 Lập Trình Game 2D Với Unity Đôi nét về Unity và bài viết,Bài 1 Lập Trình Game 2D Với Unity Các khái niệm cơ bản,Bài 2 Lập Trình Game 2D Với Unity Tạo dự án game 2D, Sprite và GameObject,Bài 3 Lập Trình Game 2D Với Unity Animation và điều khiển hành động nhân vật (Animator),Bài 4 Lập Trình Game 2D Với Unity Prefab, Script và một số xử lý cơ bản,Bài 5 Lập Trình Game 2D Với Unity Thành phần vật lý và xử lý va chạm,Bài 6 Lập Trình Game 2D Với Unity Text, Particle System và chuyển đổi màn chơi

Trang 1

Làm Game 2D bằng Unity - Phần 0 - Đôi nét về Unity và bài viết

7 January 2014 at 01:58

Chào các bạn,

Để tạo điều kiện cho các bạn đam mê và yêu thích lập trình game có thể thoã sức sáng tạo, làmquen với môi trường Unity, các bạn đang muốn tìm hiểu về lập trình game chưa có cơ hội tiếpxúc và tự tay phát triển một game, hoặc các bạn là chuyên gia về lập trình game có cái để góp ý,thể hiện với đàn em nên hôm nay mình sẽ viết một bài hướng dẫn "Làm game 2D bằng

Unity3D"

Nội dung bài viết bao gồm các thuật ngữ, các khái niệm cơ bản thường thấy trong lập trình game

và Unity, cách tạo, xử lý các đối tượng cơ bản nhất của một game 2D được sưu tầm từ nhiềunguồn trên Internet, bạn bè, người thân và rút ra từ kinh nghiệm của bản thân

Để cho cụ thể, dễ hiểu và thuận tiện hơn bài viết của mình sẽ hướng đến làm game "RunningMan" Đây là một game với kịch bản khá quen thuộc

Running Man

I Giới thiệu về Unity

- Unity3D là một môi trường phát triển tích hợp, mạnh mẽ, hỗ trợ thao tác kéo thả, tuỳ biến giaodiện nhanh chóng, trực quan

- Cung cấp các công cụ xử lý đồ hoạ, tích hợp sẵn thư viện vật lý, tính toán va chạm

- Hỗ trợ phát triển cả game 2D và 3D

- Hỗ trợ nhiều nền tảng thông dụng như OSX, Linux, Window, Web, iOS, Window Phone 8,Android, PS3, BB…

Trang 2

Đến với Unity, các bạn sẽ không cần phải băng khoăn về các vấn đề xử lý, các khái niệm đồ hoạ

phức tạp tất cả đều trở nên dễ dàng và nhanh chóng với Unity

Một số game được phát triển trên Unity như AngryBird, Elegy of War,…

Trang 3

https://www.facebook.com/notes/hội-lập-trình-viên-game-đà-nẵng/làm-game-Làm Game 2D bằng Unity - Phần 2 - Tạo dự án game 2D, Sprite và GameObject

https://www.facebook.com/notes/hội-lập-trình-viên-game-đà-nẵng/làm-game-Ở phần trước chúng ta đã tìm hiểu mố số khái niệm cơ bản trong lập trình game, mà đặc biệt đó

là lập trình game 2D và làm quen với môi trường Unity 2D Ở phần này sẽ hướng dẫn tạo dự ántrong Unity, và thao tác với các đối tượng cơ bản đã nhắc ở phần trước

II Làm quen với môi trường Unity (tiếp theo)

Trang 4

New Project

Chọn loại project là 2D sau đó gõ tên project xong nhấn Create Project Kết quả như sau:

First look

b Cấu hình dự án 2D

Sau khi tạo dự án xong, ở Hierarchy sẽ có một đối tượng là Main Camera

Chúng ta cần điều chỉnh kiểu hiển thị Scene là 2D

Ở cửa sổ Hierarchy chọn Main Camera Ở cửa sổ Inspector sẽ hiển thị các thông số của camera,

ta sẽ chọn lại giá trị Projection hay phép chiếu là phép chiếu vuông góc thay cho phép chiếu phối

cảnh

Trang 5

Chọn phép chiếu vuông góc

Tiếp theo, ở cửa sổ Project, ta sẽ tạo sẵn các thư mục để chứa tất cả các tài nguyên có sử dụngtrong game sau này lần lượt là: Animations, Prefabs, Scripts, Sprites, Sounds, Scenes.R-Click vào thư mục Assets ở cửa sổ Project, ta chọn Create, chọn Folder

Tạo folder

Trang 6

Kết quả như hình sau:

III Tạo các đối tượng cơ bản

1 Game Object

a Empty Object

- Ở menu ta chọn GameObject, chọn Create Empty

New object

Ta có thể đổi tên, sao chép hay xoá các đối tượng thông qua cửa sổ này

- Empty game object là một đối tượng đơn giản nhất, khi mới tạo ra, chỉ chứa các thông số biếnđổi (transform) ngoài ra nó sẽ không chứa bất kỳ một component nào cả

Trang 7

Chúng ta có thể thêm các component hoặc để nhóm các đối tượng khác lại với nhau thành mộtnhóm, hoặc sử dụng các empty object cho các mục đích khác (sẽ ứng dụng sau)

b Parent object và Child object

- Parent object: là một đối tượng chứa các đối tượng con khác, gắn liền với nhau.

- Child object: là một đối tượng nằm trong một đối tượng khác, gắn liền với nhau.

Để tạo các đối tượng parent và child, ta chỉ việc kéo thả một đối tượng có sẵn vào trong đốitượng đã có trong cửa sổ Hierarchy Khi thay đổi các đối tượng con thì chỉ có tác động trên đốitượng con đó

- Khi thay đổi đối tượng cha thì các đối tượng con sẽ thay đổi theo

Đối tượng Girl có các đối tượng con là Bag, Hat

Trang 8

Danh sách các tag của người dùng

2 Sprite

- Có 2 loại sprite là Single sprite và Multiple sprite

Single sprite

Trang 9

Multiple sprite

a Single sprite

Ở cửa sổ Project, chọn thư mục Assets, R-Click vào thư mục Sprites, chọn Import New

Assets, sau đó tìm đến một hình ảnh nào đó (Sử dụng hai ảnh ground.png và coin_gold.png, để

tiếp tục làm game ở các phần sau)

Trang 10

Import New Assets

Ở cửa sổ Inspector, chọn Texture Type là Sprite, Sprite Model là single, sau đó nhấn Apply

Chọn texture type là Sprite

b Multiple sprite

- Tiến hành tương tự, Import New Assets, chọn đến một tập tin ảnh chứa nhiều Sprite như ở ví

Trang 11

dụ trên, sau đó ở cửa sổ Inspector chọn Texture Type là Sprite, Sprite Model là Multiple Xongnhấn Apply.

Multiple sprite

Tiếp theo ta cần xác định các vùng bao, để xác định các sprite con thuộc Multiple sprite vừaimport vào đó bằng cách ở bảng Inspector chọn Sprite Editor

Ở cửa sổ Sprite Editor, ta chọn Slice, sau đó để mặc định các thông số, chọn nút Slice, Unity sẽ

tự động xác định vùng bao nhỏ nhất cho các sprite cho chúng ta Hoặc chúng ta có thể tự dùngchuột để xác định các vùng bao này

Trang 12

Sprite editor

Sau đó nhấn nút Apply ở cửa sổ Sprite Editor để áp dụng.Vậy là ta đã tạo xong hai loại sprite bằng Unity

Trang 13

c Thêm Sprite render cho Empty GameObject

- Tạo một Empty GameObject, đặt tên là Ground Sau đó chọn đối tượng này, ở cửa sổ Inspector

ta chọn Add Component sau đó chọn Rendering, chọn Sprite Render.

Tiếp theo, ở mục Sprite Render ở cửa sổ Inspector, ta chọn Sprite để vẽ (Nút khoan tròn đỏ)

Trang 14

Chọn Sprite

Mách nước: bạn có thể kéo thả trực tiếp từ thư mục sprite vào cửa sổ Scenes.

Phần tiếp theo mình sẽ hướng dẫn, cách tạo Animation, và điều khiển các hành động nhân vật (Animator).

Data và dự án mẫu các bạn có thể tải ở

đây:https://www.dropbox.com/sh/ts3o67arbhcwv24/5MiyT03YOa

Link phần tiếp theo:game-2d-bằng-unity-phần-3-animation-và-điều-khiển-hành-động-nhân-vật-

https://www.facebook.com/notes/hội-lập-trình-viên-game-đà-nẵng/làm-animato/233104363528500?ref=notif&notif_t=like

Trang 15

Làm Game 2D bằng Unity - Phần 2 - Tạo dự án game 2D, Sprite và GameObject

https://www.facebook.com/notes/hội-lập-trình-viên-game-đà-nẵng/làm-game-Ở phần trước chúng ta đã tìm hiểu mố số khái niệm cơ bản trong lập trình game, mà đặc biệt đó

là lập trình game 2D và làm quen với môi trường Unity 2D Ở phần này sẽ hướng dẫn tạo dự ántrong Unity, và thao tác với các đối tượng cơ bản đã nhắc ở phần trước

II Làm quen với môi trường Unity (tiếp theo)

Trang 16

New Project

Chọn loại project là 2D sau đó gõ tên project xong nhấn Create Project Kết quả như sau:

First look

b Cấu hình dự án 2D

Sau khi tạo dự án xong, ở Hierarchy sẽ có một đối tượng là Main Camera

Chúng ta cần điều chỉnh kiểu hiển thị Scene là 2D

Ở cửa sổ Hierarchy chọn Main Camera Ở cửa sổ Inspector sẽ hiển thị các thông số của camera,

ta sẽ chọn lại giá trị Projection hay phép chiếu là phép chiếu vuông góc thay cho phép chiếu phối

cảnh

Trang 17

Chọn phép chiếu vuông góc

Tiếp theo, ở cửa sổ Project, ta sẽ tạo sẵn các thư mục để chứa tất cả các tài nguyên có sử dụngtrong game sau này lần lượt là: Animations, Prefabs, Scripts, Sprites, Sounds, Scenes.R-Click vào thư mục Assets ở cửa sổ Project, ta chọn Create, chọn Folder

Tạo folder

Trang 18

Kết quả như hình sau:

III Tạo các đối tượng cơ bản

1 Game Object

a Empty Object

- Ở menu ta chọn GameObject, chọn Create Empty

New object

Ta có thể đổi tên, sao chép hay xoá các đối tượng thông qua cửa sổ này

- Empty game object là một đối tượng đơn giản nhất, khi mới tạo ra, chỉ chứa các thông số biếnđổi (transform) ngoài ra nó sẽ không chứa bất kỳ một component nào cả

Trang 19

Chúng ta có thể thêm các component hoặc để nhóm các đối tượng khác lại với nhau thành mộtnhóm, hoặc sử dụng các empty object cho các mục đích khác (sẽ ứng dụng sau)

b Parent object và Child object

- Parent object: là một đối tượng chứa các đối tượng con khác, gắn liền với nhau.

- Child object: là một đối tượng nằm trong một đối tượng khác, gắn liền với nhau.

Để tạo các đối tượng parent và child, ta chỉ việc kéo thả một đối tượng có sẵn vào trong đốitượng đã có trong cửa sổ Hierarchy Khi thay đổi các đối tượng con thì chỉ có tác động trên đốitượng con đó

- Khi thay đổi đối tượng cha thì các đối tượng con sẽ thay đổi theo

Đối tượng Girl có các đối tượng con là Bag, Hat

Trang 20

Danh sách các tag của người dùng

2 Sprite

- Có 2 loại sprite là Single sprite và Multiple sprite

Single sprite

Trang 21

Multiple sprite

a Single sprite

Ở cửa sổ Project, chọn thư mục Assets, R-Click vào thư mục Sprites, chọn Import New

Assets, sau đó tìm đến một hình ảnh nào đó (Sử dụng hai ảnh ground.png và coin_gold.png, để

tiếp tục làm game ở các phần sau)

Trang 22

Import New Assets

Ở cửa sổ Inspector, chọn Texture Type là Sprite, Sprite Model là single, sau đó nhấn Apply

Chọn texture type là Sprite

b Multiple sprite

- Tiến hành tương tự, Import New Assets, chọn đến một tập tin ảnh chứa nhiều Sprite như ở ví

Trang 23

dụ trên, sau đó ở cửa sổ Inspector chọn Texture Type là Sprite, Sprite Model là Multiple Xongnhấn Apply.

Multiple sprite

Tiếp theo ta cần xác định các vùng bao, để xác định các sprite con thuộc Multiple sprite vừaimport vào đó bằng cách ở bảng Inspector chọn Sprite Editor

Ở cửa sổ Sprite Editor, ta chọn Slice, sau đó để mặc định các thông số, chọn nút Slice, Unity sẽ

tự động xác định vùng bao nhỏ nhất cho các sprite cho chúng ta Hoặc chúng ta có thể tự dùngchuột để xác định các vùng bao này

Trang 24

Sprite editor

Sau đó nhấn nút Apply ở cửa sổ Sprite Editor để áp dụng.Vậy là ta đã tạo xong hai loại sprite bằng Unity

Trang 25

c Thêm Sprite render cho Empty GameObject

- Tạo một Empty GameObject, đặt tên là Ground Sau đó chọn đối tượng này, ở cửa sổ Inspector

ta chọn Add Component sau đó chọn Rendering, chọn Sprite Render.

Tiếp theo, ở mục Sprite Render ở cửa sổ Inspector, ta chọn Sprite để vẽ (Nút khoan tròn đỏ)

Trang 26

Chọn Sprite

Mách nước: bạn có thể kéo thả trực tiếp từ thư mục sprite vào cửa sổ Scenes.

Phần tiếp theo mình sẽ hướng dẫn, cách tạo Animation, và điều khiển các hành động nhân vật (Animator).

Data và dự án mẫu các bạn có thể tải ở

đây:https://www.dropbox.com/sh/ts3o67arbhcwv24/5MiyT03YOa

Link phần tiếp theo:game-2d-bằng-unity-phần-3-animation-và-điều-khiển-hành-động-nhân-vật-

https://www.facebook.com/notes/hội-lập-trình-viên-game-đà-nẵng/làm-animato/233104363528500?ref=notif&notif_t=like

Trang 27

Làm Game 2D bằng Unity - Phần 3 - Animation và điều khiển hành động nhân vật (Animator)

20 January 2014 at 22:43

Chào các bạn,

Ở phần trước chúng ta đã biết cách tạo các game object, và các sprite cho các game object Ởphần này chúng ta sẽ tìm hiểu cách tạo một animation và điều khiển các hành động của

animation đó ví dụ như đi, đứng, chạy, nhảy

Trước khi đi tiếp, nếu bạn nào chưa đọc các phần trước, ta có thể tham khảo lại ở đây

Link bài viết trước:game-2d-bằng-unity-phần-2-tạo-dự-án-game-2d-sprite-và-gameobject/232425046929765

https://www.facebook.com/notes/hội-lập-trình-viên-game-đà-nẵng/làm-Dự án mẫu cho phần 3 ở đây:https://www.dropbox.com/sh/b9uear8vzocr6kj/-SEOHSwc_c

III Tạo các đối tượng cơ bản

1 Game Object

2 Sprite

3 Animation

Một animation là một hình ảnh động mô tả một đối tượng nào đó trong game

Ví dụ: có thể là một chiếc xe đang chạy, hay một nhân vật đang đi

Một animation trong Unity có thể bao gồm nhiều hành động, một hành động như vậy gọi là mộtclip

Ví dụ: một nhân vật có thể có các hành động đi, đứng, nhảy

Có hai kỹ thuật để tạo animation (cả 2D và 3D): đó là kỹ thuật key frame và kỹ thuật skeletal hayspine

a Kỹ thuật tạo animation

* Kỹ thuật key frame

Đối với kỹ thuật key frame, người ta sử dụng một sprite cho một key frame của hành động

Trang 28

Mỗi sprite là một keyframe

Để tạo ra chuyển động, ta sẽ vẽ một key frame tại thời điểm đầu và thay đổi tuần tự các keyframe sau, chúng ta sẽ có được một animation

Đây là phương pháp đơn giản nhất để tạo chuyển động, nhưng lại tốn kém về bộ nhớ, vì ta phảitốn nhiều sprite cho nhiều chuyển động khác nhau

* Kỹ thuật skeletal hay spine hay bộ xương

Đối với kỹ thuật này, người ta chia đối tượng ra thành nhiều sprite, mỗi sprite là một bộ phận củađối tượng (giống như 1 khúc xương của bộ xương) Để tạo ra một key frame mới, ta sẽ thay đổicác sprite về vị trí, độ lớn, xoay của các sprite thành phần có liên quan đến chuyển động Sau đókết hợp các key frame lại với nhau như kỹ thuật key frame để tạo thành các animation

Chúng ta có thể xem các sprite cấu tạo nên một key frame ở ảnh dưới

Trang 29

2D Spine

Cách này có vẻ tốn thời gian hơn, nhưng lại rất là hiệu quả, đặc biệt là tiết kiệm được nhiều bộ

nhớ ( Ngoài lề một tí thì nếu trong một quy trình làm game chuyên nghiệp, cách tạo các

animation này thuộc về vai trò của game designer, chứ không phải của lập trình viên Có thể bạn

là một trình viên nếu bạn đang đọc bài viết này :D )

b Tạo animation bằng Unity

Do sự giới hạn về tài nguyên và thời gian nên trong bài viết này mình chỉ hướng dẫn cách tạoanimation theo kỹ thuật Key Frame Cách tạo animation theo skeletal cũng tương tự

Từ phần trước chúng ta đã tạo được những Sprite cơ bản như sau:

Trang 30

Bước 1: Tạo một Empty GameObject đặt tên là MainCharacter (Parent Object)

Bước 2: Tạo một đối tượng Empty GameObject nữa, đặt tên là Animations, là đối tượng con của

MainCharacter (Đối tượng con nên đặt ở vị trí 0,0,0)

Bước 3: Thêm Sprite Render cho đối tượng con Animations vừa tạo Rồi chọn sprite hiển thị

mặc định cho Animation này Kết quả như sau:

Bước 4: Chọn đối tượng MainCharacter ở cửa sổ Hierarchy, rồi chọn Menu -> Window ->

Animation

Một cửa sổ Animation editor hiện ra như sau:

Trang 31

* Hình chữ nhật đỏ nhỏ: nút play để xem trước animation

* Hình chữ nhật đỏ lớn: danh sách các clip hiện thời của aniamtion

* Hình chữ nhật vàng: thanh key frameĐầu tiên ta sẽ click vào danh sách clip rồi chọn Create New Clip, ta đặt tên clip là Running, rồi

save lại ở thư mục Animations của Assets

Bước 5: Ở cửa sổ Animation Editor, chọn Add Curve, chọn Animations (Đối tượng con của đối tượng MainCharacter) chọn Sprite Render, chọn Sprite (Đối với một clip bất kỳ, bước này bắt

buộc phải có)

Kết quả như sau, mặc định sẽ tạo ra tối thiếu là 2 Key Frame

Trang 32

Tiếp theo ta chọn key frame thứ 2, ở cửa sổ Inspector, ở component Sprite Render, ta tiến hành

đổi sprite khác (RunningVolt1 thay vì RunningVolt0) Chọn nút được bao quanh bởi ô tròn đỏ,

rồi chọn Sprite khác từ cửa sổ mới hiện ra

Trang 33

Bây giờ, chúng ta chỉ cần click đúp vào thanh Key Frame (Thanh có ô vuông màu vàng ở hìnhtrước) để thêm các key frame và kéo thả các key frame sao cho thời gian phù hợp để có được

chuyển động cần thiết

Trang 34

Ngoài thay đổi sprite chúng ta có thể thay đổi Transform (Translate, Scale, Rotation) cho spritetại mỗi key frame, bằng cách thêm Curve Transform cho đối tượng Animation như hình:

Sau đó ta chỉ việc chọn các key frame, rồi đặt các giá trị transform cho phù hợp theo ba trục x, y,

z

Trang 35

Tương tự ta sẽ tạo các clip Jump (nhảy), Idle (trạng thái nghỉ) cho đối tượng.

- Đối với các hành động nhảy chúng ta sẽ không thay đổi vị trí các key frame, vì làm như vậy khithêm thành phần vật lý vào đối tượng cha, lúc nhân vật nhảy, hình ảnh của nó nhảy lên nhưng vịtrí của nó để tính vật lý (theo đối tượng cha) vẫn nằm ở dưới hoặc thấp hơn hình ảnh > Khôngđúng thực tế

Đối với hành động nhảy này, ta chỉ cần chọn sprite đang ở tư thế nhảy mà thôi

- Một Clip bất kỳ, phải có tối thiểu 2 key frame

Như vậy chúng ta đã có 3 clip cho animation của đối tượng MainCharacter

c Điều khiển các hành động nhân vật - Animator

Ở phần trên chúng ta đã tìm hiểu cách tạo các clip hay các hành động của một animation Vớimột animation như vậy ta sẽ có một Controller (MainCharacter.controller) đi kèm theo [Hoặcnếu chưa có, chúng ta có thể add thêm và kéo thả các clip này vào :D)

Phần này ta sẽ hướng dẫn cách chuyển qua lại giữa các hành động bằng máy trạng thái

Trang 36

Ở cửa sổ Hierarchy chọn đối tượng MainCharacter, chọn Menu, chọn Window, chọn Animator,cửa sổ Animator sẽ xuất hiện như sau:

(Hoặc chúng ta có thể click đúp vào MainCharacter.controller cũng có kết quả tương tự.)

Danh sách các state, mỗi state tương ứng với một clip

Trang 37

Click chuột phải vào state Idle, chọn Set Default để thiết lập state mặc định cho đối tượng.

Chọn Make Transition, sau đó đưa chuột đến trạng thái đích Với mỗi transition vừa tạo, cónghĩa rằng nhân vật từ trạng thái hiện tại có thể chuyển đổi trực tiếp qua trạng thái đích Kết quảthu được ta gọi là máy trạng thái hay sơ đồ chuyển đổi trạng thái

Ngày đăng: 19/06/2016, 08:45

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w