Tower defense game with Unity

35
Họ Tên SV:Hoàng Tất Đạt MSSV:09520497 GVHD: Ths Nguyễn Duy Khánh

Transcript of Tower defense game with Unity

Họ Tên SV:Hoàng Tất ĐạtMSSV:09520497

GVHD: Ths Nguyễn Duy Khánh

I. GIỚI THIỆU VỀ UNITY3D

Game Engine Unity được tạo ra bởi Unity Technologies năm 2005 với tiêu

chí tối ưu hóa việc sản xuất game cho những nhà phát triển nhỏ với giá

thành hợp lý. Có phiên bản miễn phí cho cá nhân và cả doanh nghiệp (có

thu nhập < 100.000$) dùng.

I. GIỚI THIỆU VỀ UNITY3DCác tính năng nổi bật của Unity:

Unity mạnh ở khả năng cross-platform - phát triển game cho nhiều nền tảng

(Desktop như Windows, Mac, Linux, Hệ máy console: Xbox360, Nintendo

Wii, PS3, Mobile: Android, IOS ... Web: Unity Web Player và gần đây là

WebGL) với chung 1 source code.

Unity tích hợp nhiều công cụ, công nghệ bao gồm Graphic Rendering(

DirectX, OpenGL, ...), Physic( NVIDIA PhysX), audio( OpenAL) giúp cho

quá trình phát triển game thuận lợi và đơn giản hơn nhờ có sự gắn kết liền

mạch giữa nhiều mảng.

Unity tương thích với nhiều phần mềm thiết kế chuyên biệt để tạo model,

mesh, animation như: Blender, 3D Max, Photoshop, ...

I. GIỚI THIỆU VỀ UNITY3DCác tính năng nổi bật của Unity (tt):

Được viết trên nền C++ nhưng người dùng Unity sẽ phát triển dựa trên 3

ngôn ngữ C#, Javascript hoặc Boo với hệ thống API đồ sộ.

Unity có các công cụ, tính năng đầy trục quan, thân thiện, hỗ trợ thuận lợi

cho designer.Sau khi import vào project Unity, những thành phần đó trở

thành asset của Game. Asset game là tất cả những thành phần người dùng

cần để tạo ra game: graphics file, script code file, sound file, ... Unity

Technologies cho phép người dùng bán hoặc mua các asset game thông qua

Asset Store( thông qua Unity IDE hay qua web).

• Cộng đồng phát triển lớn mạnh và nhà phát triển cũng thường xuyên tổ

chức hội nghị, hội thảo, công bố tài nguyên, kiến thức học tập.

I. GIỚI THIỆU VỀ UNITY3DCác platform Unity hiện nay đang hỗ trợ:

Asset Store của Unity:

I. GIỚI THIỆU VỀ UNITY3DMàn hình Unity trong lúc phát triển dự án:

I. GIỚI THIỆU VỀ UNITY3DCác khái niệm, thành phần của Unity:

Asset: những tài nguyên cần có để xây dựng nên 1 game trong Unity. Từ những graphic file cho đến file âm thanh hay file scritp code, ... Tất cả được lưu trữ trong folder Assets nằm trong folder project.

Scenes: 1 màn chơi, 1 phân đoạn của game được tách biệt thành 1 file trong Unity. Một hay nhiều scene sẽ được build cùng nhau để tạo thành 1 game.

GameObject: Một khái niệm trừu tượng quan trọng trong Unity. Mọi object trong game Unity đều là GameObject.

Components: Một khái niệm trừu tường khác, quan trong trong Unity. Chúng giúp định hình hành vi, biểu thị,... để tạo nên 1 khía cạnh của GameObject khi được gắn( attach vào)

Script: là một component. Script là thành phần thiết yếu trong game.

I. GIỚI THIỆU VỀ UNITY3DSơ đồ thể hiện mối liên hệ giữa GameObject và Component trong Unity

II. PROJECT GAMEKết quả project:

II. PROJECT GAMEDựng mặt bàn chơi:

II. PROJECT GAMEDựng mặt bàn chơi (tt):

Mặt bàn chơi gồm:

1 khối lập phương để tạo độ dày cho mặt bàn chơi

1 mặt phẳn ở phía trên khối lập phương

Để tạo bề mặt cho mặt bàn ta dùng texture.

II. PROJECT GAMEDựng mặt bàn chơi (tt):

Mặt bàn chơi là 1 hệ thống lưới 8x8 nên ta sẽ tạo ra 1 tile mẫu rồi tạo ra 8x8

tile tương tự và đặt theo tile theo vị trí hàng, cột được tính toán dựa theo

kích thước bàn chơi

Ta tạo tile mẫu từ 1 khối lập phương và cũng thêm material tương tự mặt

bàn chơi

+ +

II. PROJECT GAMEDựng mặt bàn chơi (tt):

Tile và mặt bàn sau khi lợp tile

II. PROJECT GAMEDựng mặt bàn chơi (tt):

Tile được nâng lên và dao động điều hòa quanh mặt bàn chơi:

II. PROJECT GAMEÁnh sáng:

Thiết lập ánh sáng sử dụng Directional light (giống như ánh sáng ngoài

thiên nhiên với các điểm trên cùng một mặt phẳng sẽ được chiếu sáng theo

cùng 1 hướng, cường độ như nhau)

II. PROJECT GAMEÁnh sáng (tt):

Ta cũng cần bật chế độ nhận bóng (Cast Shadow) của vật thể cho mặt bàn

chơi.

II. PROJECT GAMECamera:

Thiết lập camera với góc để có thể quan sát toàn bộ bề mặt bàn chơi:

II. PROJECT GAMEGUI:

Hệ thống GUI gồm :Các button để mua tower

Hệ thống chỉ số người chơi gồm số lượng tiền hiện có và số lượng mạng hiện có

Ta sẽ sử dụng Canvas GameObject của Unity để xây dựng( hiện chỉ có trên Unity beta 4.6)

II. PROJECT GAMEGUI( tt):

Đăng ký sự kiện cho mỗi button mua tower để ta có thể thực hiện thao tác

kiểm tra người mua có thể mua tower chỉ định hiện có được hay không. Có

thể đăt tower đã mua lên vị trí chỉ định trên bàn chơi hay không?

II. PROJECT GAMEGUI( tt):

Luật khi mua và đặt tower lên mặt bàn chơi:

Không cho phép người mua tower có giá > số tiền hiện tại.

Không cho phép đặt tower lên bàn chơi mà khiến UFO không thể đi từ vị trí

xuất phát đến vị trí đích.

Không cho phép mua 1 vị trí > 1 tower.

Phải chỉ định nơi đặt Tower trước khi mua.

II. PROJECT GAMETạo Tower:

Có 3 loại tower. Tất cả đều có chung 1 tập thuộc tính với các giá trị khác

nhau để phân loại:

Giá có thể mua

Loại đạn

Tầm bắn

Tiếp theo sẽ là phương pháp tạo ra tower loại 1. Tower loại 2, 3 có thể tạo

tương tự

II. PROJECT GAMETạo Tower(tt):

Model và Texutre của tower được tạo từ 1 chương trình 3D sau đó được

import vào porject Unity

II. PROJECT GAMETạo Tower(tt):

Ta tạo vùng bắn cho tower bằng cách sử dụng collider sphere để chỉ định

bán kính của vùng bắn. Bất kì UFO nào có khoảng cách đến tower < bán

kính vùng bắn sẽ bị tấn công

II. PROJECT GAMETạo Tower(tt):

mRangeShoot là bán kính của vùng bắn

II. PROJECT GAMETạo Tower(tt):

mRangeShoot là bán kính của vùng bắn

II. PROJECT GAMETạo Tower(tt):

Các loại Tower trong Game:

II. PROJECT GAMETạo Đạn:

Giống như tower , ta sẽ có nhiều loại đạn khác nhau có chung thuộc tính

nhưng phân biện bằng giá trị.

2 thuộc tính quan trọng: Lượng damage + Vận tốc đạn.

Để có thể bắn đạn từ tower về phía UFO. Mỗi khi có UFO đi vào vùng bắn

của 1 tower. Ta tạo ra 1 đạn ứng với tower đó.

Đạn sẽ quay về hướng của UFO bị tấn công:

II. PROJECT GAMETạo Đạn(tt):

Để đạn chuyển động, ta sẽ tạo ra 1 rigidbody component cho Đạn

GameObject.

Ta tính vận tốc của đạn bằng công thức. Vector đơn vị của hướng nhìn của

đạn vào UFO * vận tốc đạn.

II. PROJECT GAMETạo Đạn(tt):

Đạn cũng có collider componet nhằm phát hiện khi nào sẽ có object UFO bị

va chạm với đạn. Nếu có ta sẽ thông báo cho object UFO bị trừ số lượng

máu = số lượng damage của đạn. Sau đó đạn cần bị hủy.

Ta cũng cần hủy đạn khi đạn đi ra khỏi phạm vi bàn chơi.

II. PROJECT GAMETạo UFO:

Giống như Tower, Đạn. Ta cũng sẽ tạo ra 1 loại UFO, các loại khác tương

tự, chỉ khác chỉ số. Ta sử dụng chung 1 model cho tất cả 5 loại UFO, sau đó

sẽ thay texture để tạo ra loại UFO mới.

Yếu tố quan trọng nhất của 1 UFO là Số lượng máu( Health) của nó. Khi số

lượng máu <= 0 thì UFO sẽ bị nổ và hủy đi.

UFO cũng gây cho người chơi mất 1 mạng khi đi được đến hàng cuối cùng

trong bàn chơi.

UFO cần phải tự tìm đường: khi bắt đầu đi, khi bị chặn, khi bàn cờ có thay

đổi.

II. PROJECT GAMETạo UFO(tt):

Model và Textures của UFO

II. PROJECT GAMETạo UFO(tt):

Ta dùng thuật toán A* để tìm đường đi cho UFO.

Chỉ cần xét điểm đến là hàng cuối cùng.

Đường đi cần phải tính lại khi UFO bị chặn bởi 1 tower mới đặt

Sử dụng interpolate trong 1 khoảng thời gian để di chuyển UFO từ 1 ô sang

ô kế tiếp trong đường đi

Đi đến hàng cuối cùng sẽ trừ đi 1 mạng của người chơi.

II. PROJECT GAMETạo UFO(tt):

Các loại UFO trong game:

II. PROJECT GAMETạo UFO(tt):

Khi UFO hết máu, ta sẽ tạo ra 1 particle để thể hiện cảnh UFO bị nổ

Particle sẽ cần phải tự hủy khi kết thúc life time của mình

III. KẾT THÚC

CẢM ƠN ĐÃ LẮNG NGHE!