4. - Unity là một game engine đa nền tảng được phát triển bởi Unity Technologies, mà
chủ yếu để phát triển video game cho máy tính, consoles và điện thoại.
- Lần đầu tiên nó được công bố chạy trên hệ điều hành OS X, tại Apple's Worldwide
Developers Conference vào năm 2005, đến nay đã mở rộng 27 nền tảng.
1.1 Unity là gì?
5. • 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.
• 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.
1.2 Ưu điểm của Unity
6. • 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.
• 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.
1.2 Ưu điểm của Unity
7. - GameObject
Một đối tượng cụ thể trong game gọi là một object, có thể là đồ vật, nhân vật nào đó.
- Component
Một GameObject sẽ có nhiều thành phần cấu tạo như là hình ảnh, tập hợp các hành động,
tính toán vật lý, thành phần xử lý va chạm, mã điều khiển, các thành phần khác… mỗi thứ như vậy gọi
là một component của GameObject.
- Sprite
Là một hình ảnh 2D của một GameObject có thể là hình ảnh đầy đủ, hoặc là một bộ phần
nào đó.
- Animation
Là tập một hình ảnh động dựa trên sự thay đổi liên tục của nhiều Sprite khác nhau.
1.3 Các đối tượng cơ bản trong Unity
8. - Key Frame
Hay Frame là một trạng thái của một animation. Có thể được tạo nên từ 1 sprite hay nhiều
sprite khác nhau
- Prefabs
Dùng để sử dụng lại các đối tượng giống nhau có trong game mà chỉ cần khởi tạo lại các
giá trị vị trí, tỉ lệ biến dạng và góc quay từ một đối tượng ban đầu.
- Sounds
Âm thanh trong game.
- Script
Là tập tin chứa các đoạn mã nguồn, dùng để khởi tạo và xử lý các đối tượng trong game.
1.3 Các đối tượng cơ bản trong Unity
9. - Scenes
Quản lý tất cả các đối tượng trong một màn chơi của game
- Assets
Bao gồm tất cả những gì phục vụ cho dự án game như sprite, animation, sound, script,
scenes…
- Camera
Là một game object đặc biệt trong scene, dùng để xác định tầm nhìn, quan sát các đối
tượng khác trong game.
- Transform
Là 3 phép biến đổi tịnh tiến, quay theo các trục và phóng to thu nhỏ đối tượng.
1.3 Các đối tượng cơ bản trong Unity
11. Cửa sổ Scene
Cửa sổ scene là nơi mà chúng ta sẽ xây dựng các thực thể, đối
tượng của dự án vào đó. Cửa sổ cung cấp góc nhìn phối cảnh
(góc nhìn 3D). Cửa sổ này sẽ kết hình xuất đầy đủ những hình
ảnh trong thế giới của trò chơi mà chúng ta tạo ra dưới dạng một
vùng biên tập mà chúng ta có thể biên tập, chỉnh sửa trực tiếp
thế giới đó.
1.4 Giao diện của Unity
12. Hierarchy
Khi kéo thả Assest vào cửa sổ Scene, Assets sẽ trở thành Game
Object. Cửa sổ Scene được ràng buộc cùng với cửa sổ
Hierarchy, cửa sổ Hierarchy liệt kệ danh sách các Game Object
có trong Scene
1.4 Giao diện của Unity
13. Cửa sổ Inspector
Cửa sổ Inspector có thể được xem như một công cụ cho phép
chúng ta tùy chỉnh các thiết đặt, các thành phần của Game
Object hoặc Assets đang được chọn.
Cửa sổ này sẽ hiển thị đầy đủ các Components của đối tượng
mà chúng ta chọn. Nó cho phép chúng ta điều chỉnh các biến
của Components dưới các hình thức như: Textbox, Slider,
Button, Drop-dowm Menu…
1.4 Giao diện của Unity
14. Cửa sổ Project
Cửa sổ Project là cửa sổ cho phép chúng ta nhìn thấy trực
tiếp nội dung của thư mục Assets của dự án. Mỗi dự án Unity
đều được chứa trong một thư mục cha. Trong đó có 3 thư
mục con là Assets, Library và Temp (chỉ có khi Unity đang
chạy). Đặt tất cả các Assets vào thư mục Assets có nghĩa là
ngay lập tức chúng ta sẽ thấy chúng xuất hiện trong cửa sổ
Project.
1.4 Giao diện của Unity
15. Cửa sổ Game
Cửa sổ Game sẽ được gọi khi chúng ta nhấn vào nút Play (là
một hành động thực hiện test trò chơi). Cửa sổ này cho phép
chúng ta tùy chọn về thiết đặt tỉ lệ màn hình, nó phản ánh phạm
vi trong Scene mà người chơi có thể thấy được với mỗi tỉ lệ màn
hình tương ứng, ví dụ như với mỗi tỉ lệ màn hình 4:3, 16:9 thì
người chơi sẽ có một phạm vi nhìn thấy khác nhau.
1.4 Giao diện của Unity
18. Cách di chuyển và cách chơi:
*Cách di chuyển:
Người chơi sẽ sử dụng thao tác nhấn giữ và vuốt điều hướng máy bay.
*Cách chơi:
Người chơi lúc đầu sẽ có 100% máu. Khi bị Enemy nhỏ đâm vào hoặc
đạn của Enemy to bắn trúng, người chơi sẽ bị mất 1 lượng máu nhất
định, khi hết máu => Thua. Người chơi sẽ cố gắng né Enemy nhỏ, né
đạn, cố gắng tiêu diệt hết số Enemy và thu thập Vàng. Wave cuối sẽ có
Boss, tiêu diệt Boss để hoàn thành màn chơi. Sau khi Lose hoặc Win,
sẽ có UI hiện ra 2 tùy chọn: Chơi lại hoặc thoát ra Main Menu
2.2 Gameplay
19. Các loại Enemy thường
2.2 Gameplay
STT Tên Enemy Ảnh
1 Enemy
2 Enemy2
3 Medium Enemy
4 mEnemy3
20. 2.3 Ứng dụng và các thư viện sử dụng
Rider Unity
DOTweenPro
21. Player
- Tạo Project Unity Game 2D
- Tạo các GameObject cho Player
2.4 Thực hiện
22. Player
- Tạo hiệu ứng đuôi máy bay bằng
Particle
- Sử dụng EnergyParticle đã được
tạo trong Prefab
- Sau đó thêm Script điều khiển cho
máy bay
2.4 Thực hiện
23. Bullet
- Tạo Prefab Bullet
- Thêm các Component và Script xử lý đạn
- Bước tiếp theo cần tạo ra các viên đạn tại
các vị trí bắn của máy bay
- Để tránh tối đa việc Destroy/Instantiate
object gây nặng cho hệ thống ta sẽ sử dụng
Object Pooling để xử lý
2.4 Thực hiện
24. Bullet
- Tiếp theo ta sẽ tạo những vị trí đạn bắn ra
từ máy bay, tạm thời ta sẽ tạo 4 vị trí
(FirePoints)
- Tạo script bắn đạn
2.4 Thực hiện
25. Boundary
- Hiện tại những object Bullet đang được
khởi tạo liên tục nên ta sẽ tạo Collider phía
trên để khi đạn va chạm ta sẽ Deactive đi.
2.4 Thực hiện
26. Background
- Ta sẽ sử dụng 2 back ground di chuyển
xuống và viết Script Loop BackGround
2.4 Thực hiện
27. Level Manager
- Viết Script tạo LevelTable
- Viết Script để load LevelTable và tạo
Level
- LevelTable sau khi được tạo sẽ nằm trong
Assets/Resources
- Sử dụng Bảng này để tạo ra các Wave
2.4 Thực hiện
28. Enemy
- Enemy nhỏ, không có chức năng bắn đạn
- Di chuyển theo Path, khi đâm vào Player
sẽ gây sát thương và phát nổ
2.4 Thực hiện
29. Enemy 2
- Enemy nhỏ, không có chức năng bắn đạn
- Di chuyển theo Path, khi đâm vào Player
sẽ gây sát thương và phát nổ
2.4 Thực hiện
30. Medium Enemy
- Sau mỗi khoảng thời gian 1s, enemy sẽ
xoay theo hướng vị trí của Player. Góc
xoay trong khoảng (-20, 20).
- Mỗi 2s sẽ bắn đạn
- Mỗi lần bắn đạn sẽ chia làm 2 turn cách
nhau 1s
2.4 Thực hiện
31. mEnemy3
- Di chuyển theo Path
- Mỗi 2s sẽ bắn 4 viên đạn
- Sau mỗi 3s, enemy sẽ bắn 1 tên lửa, tên
lửa bay lên trên trong 0.3s thì sẽ bay đuổi
theo vị trí player
- Tên lửa chỉ đuổi theo player trong 3s rồi
bay thẳng theo hướng hiện tại
2.4 Thực hiện
32. Boss
- Boss có 2 state
- Có 4 loại súng:
+WingGun
+Minigun
+WaveGun –riêng WaveGun có 2 state
+HandGun(FireGun)
2.4 Thực hiện
33. Boss State 1
- Wing gun
- Có 2 State đạn:
2.4 Thực hiện
Wing1:
Speed
MinSpeed
DeltaSpeed // tốc độ bị giảm sau mỗi frame
CurrentSpeed
Bullet di chuyển chậm dần tới khi MinSpeed thì sẽ nổ ra 4 viên đạn nhỏ
Wing2:
MiniBullet sẽ bay theo 4 hướng cách nhau 90° và xoay
tròn khi bay.
34. Boss State 1
- Minigun
2.4 Thực hiện
- BulletMiniGun:
Mô tả: Mỗi viên đạn sẽ bay theo 2 quỹ đạo:
+ Đạn bay ra từ súng với khoảng cách ngẫu nhiên (1f, 2f)
+ Sau đó bay theo hướng vị trí Player.
+Sau 1s không đuổi nữa, bay thẳng hướng hiện tại
35. Boss State 1
- WaveGun State 1
- + WaveGun sẽ xoay theo vị trí của Player
- +Limit góc quay (-60,-10) và (10,60)
- + Lúc bắn đạn thì tạm ngưng, bắn xong thì xoay tiếp
2.4 Thực hiện
- BulletWaveGun:
- Đạn bay ra và Scale lớn hơn
36. Boss State 2
- Khi 2 WingGun bị tiêu diệt thì Boss
chuyển sang State 2, trong thời gian
chuyển trạng thái thì Active Shield chắn
cho Boss, Active Health Bar cho
WaveGun và HandGun
- - Shield:
2.4 Thực hiện
37. Boss State 2
- WaveGun State 2
2.4 Thực hiện
- BulletWaveGun2:
- Đạn bay ra từ vị trí 1 và 2, sau 0.5s thì đuổi theo vị trí Player
- Đạn đuổi theo Player trong 2.5s rồi bay thẳng theo hướng hiện tại
38. Boss State 2
- HandGun(FireGun)
2.4 Thực hiện
- BulletWaveGun2:
- Sử dụng ParticleSystem
39. Boss State 2
- Khi tất cả mọi súng của
Boss bị phá thì hiện thanh
healthbar của boss
- BOSS DEMO
2.4 Thực hiện
43. - Tối ưu hóa game mượt hơn nữa
- Tăng thêm Wave
- Thêm vũ khí, đạn dược, nâng cấp máy bay và vũ khí
- Thêm hiệu ứng âm thanh
- Cung cấp thêm công cụ để người chơi chọn và chỉnh sửa tạo riêng cho mình những nhân vật,
skin…
3.1 Hướng phát triển