Upload
hoang-song
View
332
Download
1
Embed Size (px)
Citation preview
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 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.
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 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 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 Đạ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):
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):
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