



















Preview text:
Contents
Scripts/AI.......................................................................................................................1
BT.cs..........................................................................................................................1
GunnerBeam.cs......................................................................................................5
GunnerBeamController.cs......................................................................................6
GunnerProjectile.cs................................................................................................7
InstantiateObject.cs................................................................................................8
MissileGolem.cs....................................................................................................9
SendSignal.cs.......................................................................................................11
AudioSurface.cs...................................................................................................12
BackgroundMusicPlayer.cs..................................................................................13
Assets/2DGamekit/Scripts/Audio/MixerSliderLink.cs........................................14
Assets/2DGamekit/Scripts/Audio/RandomAudioPlayer.cs..................................15
Assets/2DGamekit/Scripts/Character/Editor/CharacterStateSetterEditor.cs.........16
Assets/2DGamekit/Scripts/Character/Editor/DamageableEditor.cs.....................18
Assets/2DGamekit/Scripts/Character/Editor/DamagerEditor.cs..........................18
Assets/2DGamekit/Scripts/Character/Editor/PlayerCharacterEditor.cs................20
Assets/2DGamekit/Scripts/Character/Editor/PlayerInputEditor.cs.......................21
Assets/2DGamekit/Scripts/Character/MonoBehaviours/Bullet.cs.......................23
Assets/2DGamekit/Scripts/Character/MonoBehaviours/BulletPool.cs................25
Assets/2DGamekit/Scripts/Character/MonoBehaviours/CharacterController2D.cs
.............................................................................................................................26
Assets/2DGamekit/Scripts/Character/MonoBehaviours/Damageable.cs.............28
Assets/2DGamekit/Scripts/Character/MonoBehaviours/Damager.cs...................30
Assets/2DGamekit/Scripts/Character/MonoBehaviours/EnemyBehaviour.cs......32
Assets/2DGamekit/Scripts/Character/MonoBehaviours/InputComponent.cs......36
Assets/2DGamekit/Scripts/Character/MonoBehaviours/PlayerCharacter.cs........38
Assets/2DGamekit/Scripts/Character/MonoBehaviours/PlayerInput.cs...............40
Assets/2DGamekit/Scripts/Character/MonoBehaviours/SpitterBT.cs..................41
Assets/2DGamekit/Scripts/Character/MonoBehaviours/VFXController.cs.........42
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Enemies/
ChomperAttackSMB.cs.......................................................................................44
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Enemies/
ChomperDeathSMB.cs........................................................................................45
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Enemies/
ChomperPatrolSMB.cs........................................................................................46
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Enemies/
ChomperRunToTargetSMB.cs.............................................................................47
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
AirborneMeleeAttackSMB.cs..............................................................................48
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
AirborneSMB.cs..................................................................................................50
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
AirborneWithGunSMB.cs....................................................................................51
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
CrouchSMB.cs.....................................................................................................53
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
CrouchWithGunSMB.cs......................................................................................54
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
DeadLandingSMB.cs...........................................................................................56
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
DeadSMB.cs........................................................................................................57
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
HurtSMB.cs.........................................................................................................59
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
LocomotionSMB.cs.............................................................................................60
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
LocomotionWithGunSMB.cs...............................................................................62
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
MeleeAttackSMB.cs............................................................................................64
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
PushingSMB.cs....................................................................................................65
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
RespawnSMB.cs..................................................................................................67
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
SceneLinkedSMB.cs............................................................................................68
Assets/2DGamekit/Scripts/Character/StateMachineBehaviours/Player/
TriggerVFX.cs.....................................................................................................69
Assets/2DGamekit/Scripts/Core/CameraShaker.cs..............................................70
Assets/2DGamekit/Scripts/Core/Checkpoint.cs...................................................71
Assets/2DGamekit/Scripts/Core/InteractOnButton.cs..........................................72
Assets/2DGamekit/Scripts/Core/InteractOnButton2D.cs.....................................73
Assets/2DGamekit/Scripts/Core/InteractOnCollision.cs......................................74
Assets/2DGamekit/Scripts/Core/InteractOnCollision2D.cs.................................75
Assets/2DGamekit/Scripts/Core/InteractOnTrigger.cs.........................................75
Assets/2DGamekit/Scripts/Core/InteractOnTrigger2D.cs....................................76
Assets/2DGamekit/Scripts/Core/InventoryController.cs......................................78
Assets/2DGamekit/Scripts/Core/InventoryItem.cs...............................................80
Assets/2DGamekit/Scripts/Core/LayerMaskExtensions.cs..................................82
Assets/2DGamekit/Scripts/Core/ObjectPool.cs...................................................83
Assets/2DGamekit/Scripts/Core/TimedDisabling.cs............................................85
Assets/2DGamekit/Scripts/Effect/DropShadow.cs...............................................86
Assets/2DGamekit/Scripts/Effect/Grenade.cs......................................................87 Scripts/AI BT.cs
Công dụng của file:
File này chứa một thư viện (namespace) có tên là BTAI, cung cấp một hệ thống xây
dựng và quản lý cây Behavior Tree (BT) trong Unity. Behavior Tree là một cấu trúc dữ
liệu cây được sử dụng trong lập trình trí tuệ nhân tạo để mô hình hóa hành vi của các
đối tượng trong trò chơi.
Danh sách các biến: 1. Trong namespace BTAI: •
BTState: Enum định nghĩa các trạng thái của Behavior Tree như Failure, Success, Continue, và Abort. •
BT: Lớp chứa các phương thức tạo ra các nút (node) cơ bản của Behavior Tree. 2. Trong lớp BTNode:
Không có biến nào được khai báo trong lớp này. 3. Trong lớp Branch: •
activeChild: Biến xác định con đang được xử lý. •
children: Danh sách các nút con.
4. Trong lớp Decorator:
child: Nút con của Decorator.
5. Trong lớp Sequence:
Không có biến nào được khai báo thêm.
6. Trong lớp Selector:
shuffle: Biến kiểu bool xác định xem có nên trộn thứ tự của các nút con hay không. 7. Trong lớp Action: •
fn: Phương thức (Action) cần thực hiện. •
coroutineFactory: Phương thức tạo coroutine nếu có.
8. Trong lớp Condition:
fn: Điều kiện cần kiểm tra. 9.
Trong lớp ConditionalBranch: •
fn: Điều kiện cần kiểm tra. •
tested: Biến kiểm tra xem điều kiện đã được kiểm tra chưa. 10.Trong lớp While: •
fn: Điều kiện để duy trì vòng lặp. 11.Trong lớp Block: •
Không có biến nào được khai báo thêm. 12.Trong lớp Root: •
isTerminated: Biến kiểu bool xác định xem Behavior Tree đã kết thúc (Abort) chưa. 13.Trong lớp Repeat: •
count: Số lần lặp cần thực hiện. •
currentCount: Biến kiểm tra số lần lặp hiện tại.
14.Trong lớp RandomSequence: •
m_Weight: Mảng trọng số cho các nút con. •
m_AddedWeight: Mảng trọng số tích lũy. 15.Trong lớp Wait: •
seconds: Số giây cần đợi. •
future: Thời điểm kết thúc đợi.
16.Trong lớp Trigger: •
animator: Animator cần thực hiện trigger. • id: ID của trigger. •
triggerName: Tên của trigger. •
set: Xác định xem trigger nên được set hay reset.
17.Trong lớp SetBool: •
animator: Animator cần thực hiện set bool. • id: ID của bool. •
value: Giá trị bool cần set. •
triggerName: Tên của bool.
18.Trong lớp WaitForAnimatorState: •
animator: Animator cần kiểm tra trạng thái.
id: ID của trạng thái. •
layer: Lớp của trạng thái. •
stateName: Tên của trạng thái.
19.Trong lớp SetActive: •
gameObject: GameObject cần set active. •
active: Giá trị active cần set.
20.Trong lớp WaitForAnimatorSignal: •
isSet: Biến kiểm tra xem tín hiệu đã được nhận hay chưa. •
name: Tên của tín hiệu. •
id: ID của tín hiệu.
21.Trong lớp Terminate: •
Không có biến nào được khai báo thêm. 22.Trong lớp Log: •
msg: Chuỗi thông điệp cần log.
Danh sách các hàm và công dụng của từng hàm: 1. Trong lớp BT:
Nhiều phương thức tạo ra các loại nút khác nhau cho Behavior Tree như
Root, Sequence, Selector, Action, Call, If, While, Condition, Repeat, Wait, Trigger, WaitForAnimatorState, SetBool, SetActive,
WaitForAnimatorSignal, Terminate, Log, RandomSequence. 2. Trong lớp BTNode:
Tick(): Phương thức trừu tượng mà tất cả các nút con phải triển khai để
thực hiện logic của mình. 3. Trong lớp Branch: •
OpenBranch(params BTNode[] children): Phương thức mở một nhánh
với các nút con được truyền vào. •
Children(): Trả về danh sách các nút con. •
ActiveChild(): Trả về chỉ số của nút con đang được xử lý. •
ResetChildren(): Đặt lại trạng thái của tất cả nút con.
4. Trong lớp Decorator:
Do(BTNode child): Phương thức để gán nút con cho Decorator.
5. Trong lớp Sequence:
Tick(): Thực hiện logic cho nút Sequence.
6. Trong lớp Selector: •
Tick(): Thực hiện logic cho nút Selector. 7. Trong lớp Action: •
Tick(): Thực hiện logic cho nút Action. •
ToString(): Override để trả về thông tin chuỗi về nút Action.
8. Trong lớp Condition: •
Tick(): Kiểm tra điều kiện và trả về Success hoặc Failure. •
ToString(): Override để trả về thông tin chuỗi về nút Condition.
9. Trong lớp ConditionalBranch: •
Tick(): Kiểm tra điều kiện và thực hiện logic nút con nếu điều kiện đúng. 10.Trong lớp While: •
Tick(): Thực hiện logic vòng lặp khi điều kiện đúng. •
ToString(): Override để trả về thông tin chuỗi về nút While. 11.Trong lớp Block: •
Tick(): Thực hiện logic cho nút Block. 12.Trong lớp Root: •
Tick(): Thực hiện logic cho nút Root. 13.Trong lớp Repeat: •
Tick(): Thực hiện logic cho nút Repeat. •
ToString(): Override để trả về thông tin chuỗi về nút Repeat.
14.Trong lớp RandomSequence: •
Tick(): Thực hiện logic cho nút RandomSequence. •
PickNewChild(): Chọn một nút con mới ngẫu nhiên. •
ToString(): Override để trả về thông tin chuỗi về nút RandomSequence. 15.Trong lớp Wait: •
Tick(): Thực hiện logic cho nút Wait. •
ToString(): Override để trả về thông tin chuỗi về nút Wait.
16.Trong lớp Trigger: •
Tick(): Thực hiện logic cho nút Trigger. •
ToString(): Override để trả về thông tin chuỗi về nút Trigger.
17.Trong lớp SetBool: •
Tick(): Thực hiện logic cho nút SetBool. •
ToString(): Override để trả về thông tin chuỗi về nút SetBool.
18.Trong lớp WaitForAnimatorState: •
Tick(): Thực hiện logic cho nút WaitForAnimatorState. •
ToString(): Override để trả về thông tin chuỗi về nút WaitForAnimatorState.
19.Trong lớp SetActive: •
Tick(): Thực hiện logic cho nút SetActive. •
ToString(): Override để trả về thông tin chuỗi về nút SetActive.
20.Trong lớp WaitForAnimatorSignal: •
Tick(): Thực hiện logic cho nút WaitForAnimatorSignal. •
ToString(): Override để trả về thông tin chuỗi về nút WaitForAnimatorSignal.
21.Trong lớp Terminate: •
Tick(): Thực hiện logic cho nút Terminate. 22.Trong lớp Log: •
Tick(): Thực hiện logic cho nút Log. GunnerBeam.cs
Công dụng của file:
File này là một script trong môi trường phát triển trò chơi Unity. Nó thuộc namespace
Gamekit2D và triển khai một class có tên GunnerBeam. Chức năng của script này là
liên tục làm cho đối tượng mà nó được gắn vào (thường là một đối tượng 3D trong trò
chơi) nhìn theo một đối tượng mục tiêu được chỉ định.
Danh sách các biến:
1. public Transform target: Một biến công cộng kiểu Transform đại diện cho đối
tượng mà GunnerBeam sẽ nhìn theo.
Danh sách các hàm và công dụng của từng hàm:
1. void Update(): Đây là một phương thức được kế thừa từ MonoBehaviour và
được gọi mỗi frame trong quá trình chạy trò chơi. • Công dụng: •
Hàm này làm cho đối tượng chứa script (thường là một đối tượng
3D) nhìn theo đối tượng target. •
Hàm LookAt của Transform được sử dụng để thiết lập hướng nhìn
của đối tượng chứa script theo đối tượng target. •
Hàm này thường được sử dụng để cập nhật hướng nhìn của đối
tượng theo đối tượng mục tiêu trong mỗi frame.
GunnerBeamController.cs Công dụng của file:
File này là một script trong môi trường phát triển trò chơi Unity. Nó thuộc namespace
Gamekit2D và triển khai một class có tên GunnerBeamController. Tuy nhiên, toàn
bộ nội dung của class này đã được chú thích và là các hàm mẫu không triển khai logic
cụ thể. Class này mở rộng từ StateMachineBehaviour, là một lớp cơ sở của Unity dành
cho việc xử lý sự kiện trong trạng thái của Animator.
Danh sách các biến:
Không có biến được khai báo trong class này.
Danh sách các hàm và công dụng của từng hàm:
Các hàm sau đây là các hàm mẫu không triển khai logic cụ thể:
1. OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi khi một chuyển đổi bắt đầu và máy trạng thái bắt đầu
đánh giá trạng thái này.
2. OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi trong mỗi frame cập nhật giữa các hàm OnStateEnter và
OnStateExit. Chưa được triển khai.
3. OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi khi một chuyển đổi kết thúc và máy trạng thái hoàn thành
đánh giá trạng thái này.
4. OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi ngay sau Animator.OnAnimatorMove(). Dành cho code
xử lý và ảnh hưởng đến root motion. Chưa được triển khai. 5. OnStateIK(Animator
animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi ngay sau Animator.OnAnimatorIK(). Dành cho code
thiết lập inverse kinematics (IK) của animation. Chưa được triển khai.
Lưu ý rằng toàn bộ nội dung của các hàm này đều được chú thích và không chứa logic
cụ thể. Các hàm này thường được override để cung cấp xử lý tùy chỉnh cho các sự kiện
Animator trong quá trình chuyển đổi trạng thái. GunnerProjectile.cs
Công dụng của file:
File này là một script trong môi trường phát triển trò chơi Unity. Nó thuộc namespace
Gamekit2D và triển khai một class có tên GunnerProjectile. Class này có nhiệm vụ
quản lý đạn của Gunner trong trò chơi.
Danh sách các biến:
1. public Vector2 initialForce: Đại diện cho lực đẩy ban đầu được áp dụng cho đối tượng đạn.
2. public float timer = 1: Thời gian tồn tại của đối tượng đạn trước khi tự hủy.
3. public float fuse = 0.01f: Thời gian trước khi đối tượng đạn có thể kích hoạt hoạt động hủy bỏ.
4. public GameObject explosion: Đối tượng hiệu ứng nổ được kích hoạt khi đối tượng đạn bị hủy.
5. public float explosionTimer = 3: Thời gian tồn tại của hiệu ứng nổ trước khi tự hủy.
6. new Rigidbody2D rigidbody: Rigidbody2D được sử dụng để áp dụng lực và
vận động đối tượng đạn.
7. protected GameObject m_HitEffect: Đối tượng hiệu ứng nổ để xử lý khi đối tượng đạn va chạm.
Danh sách các hàm và công dụng của từng hàm:
1. void OnEnable(): Được gọi khi đối tượng đạn được kích hoạt. Thiết lập
Rigidbody2D, đặt thời gian tồn tại cho đối tượng đạn và khởi tạo hiệu ứng nổ.
2. public void Destroy(): Phương thức để hủy đối tượng đạn. Hiệu ứng nổ được
kích hoạt và sau đó đối tượng đạn và hiệu ứng nổ tự hủy sau một khoảng thời gian.
3. void Start(): Được gọi khi đối tượng được khởi tạo. Áp dụng lực đẩy ban đầu cho đối tượng đạn.
Lưu ý rằng phần lớn các hàm và biến đều được sử dụng để quản lý vận động và hủy đối
tượng đạn cũng như kích hoạt hiệu ứng nổ. InstantiateObject.cs Công dụng của file:
File này là một script trong môi trường phát triển trò chơi Unity. Nó thuộc namespace
Gamekit2D và triển khai một class có tên InstantiateObject. Class này là một
StateMachineBehaviour, được sử dụng để xử lý các sự kiện liên quan đến Animator State Machine trong Unity.
Danh sách các biến:
1. public GameObject target: Đối tượng cần được sao chép và khởi tạo.
2. [Range(0, 1)] public float spawnAt = 0: Thời điểm normalized time (thời gian
chuẩn hóa) khi đối tượng được tạo ra trong quá trình thực hiện animation.
3. public bool isChildTransform = true: Xác định liệu đối tượng mới có phải là
con của đối tượng cha không.
4. public Vector3 offset: Vị trí tạo ra đối tượng mới có thể được dời chuyển từ vị trí của Animator.
5. public bool destroyOnExit = true: Xác định liệu đối tượng nên bị hủy khi thoát
khỏi trạng thái animation hay không.
6. GameObject go: Đối tượng được tạo ra và được tham chiếu trong quá trình thực hiện animation.
Danh sách các hàm và công dụng của từng hàm:
1. void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi khi một transition bắt đầu và state machine bắt đầu đánh
giá trạng thái này. Kiểm tra spawnAt, nếu nó bằng 0, thì thực hiện hàm Spawn().
2. private void Spawn(Animator animator): Hàm thực hiện việc tạo ra đối tượng
mới. Sao chép và khởi tạo đối tượng từ target, đặt vị trí và quay của nó dựa trên
Animator, và thiết lập đối tượng mới là con của Animator nếu được chỉ định.
3. void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi trong mỗi khung hình giữa các callback OnStateEnter
và OnStateExit. Kiểm tra nếu spawnAt lớn hơn 0 và normalized time của
animation đạt hoặc vượt qua giá trị spawnAt, và đối tượng chưa được khởi tạo
(go là null), thì thực hiện hàm Spawn().
4. void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi khi một transition kết thúc và state machine hoàn thành
đánh giá trạng thái này. Kiểm tra nếu destroyOnExit là true và đối tượng đã được
khởi tạo (go không null), thì hủy đối tượng.
Các hàm khác (OnStateMove, OnStateIK) không được triển khai và được chú thích để
biết đến những công việc khác mà chúng có thể thực hiện nếu cần. MissileGolem.cs
Công dụng của file:
File này là một script trong môi trường phát triển trò chơi Unity. Nó là một class có tên
MissileGolem triển khai các tính năng của một nhân vật quái vật trong trò chơi. Nó thực
hiện nhiệm vụ của một quái vật có khả năng tấn công và phòng thủ, và có các giai đoạn
(rounds) khác nhau trong quá trình đánh boss.
Danh sách các biến: 1. Các biến công khai: •
target: Transform của mục tiêu (người chơi). • laserStrikeCount, laserTrackingSpeed, delay, beamDelay,
grenadeDelay, lightningDelay, cleanupDelay, deathDelay: Các tham số
điều chỉnh hành vi của boss. •
shield, beamLaser, projectile, grenade, lightning, damageable: Các đối
tượng được tham chiếu để thực hiện các hành động tương ứng. •
lightningTime: Thời gian sáng sủa của đòn tấn công lightning. •
grenadeSpawnPoint, grenadeLaunchVelocity: Thông số cho đòn tấn công grenade. •
rounds: Mảng các giai đoạn của boss, mỗi giai đoạn có các thuộc tính như
tốc độ di chuyển của platform, danh sách platforms, đối tượng được kích
hoạt khi progress, và điểm máu của boss và shield. •
disableOnDeath: Mảng các đối tượng sẽ bị tắt khi boss chết. •
onDefeated: Sự kiện được gọi khi boss bị đánh bại.
bossDeathClip, playerDeathClip, postBossClip, bossMusic: Âm thanh
và nhạc sử dụng trong quá trình chơi. 2. Các biến riêng tư: •
onFloor: Biến kiểm tra xem boss có đang ở trên sàn không. •
round: Giai đoạn hiện tại của boss. •
m_TotalHealth, m_CurrentHealth: Tổng máu và máu hiện tại của boss. •
m_PreviousTargetPosition: Vị trí trước đó của mục tiêu để điều chỉnh
theo sự di chuyển của nó. •
originShieldScale: Kích thước gốc của shield.
3. Các biến dành cho âm thanh: •
stepAudioPlayer, laserFireAudioPlayer, grenadeThrowAudioPlayer,
lightingAttackAudioPlayer, takingDamage, shieldUpAudioPlayer,
shieldDownAudioPlayer: Các trình phát âm thanh ngẫu nhiên. •
roundDeathSource: AudioSource sử dụng để phát nhạc hoặc âm thanh
trong quá trình boss chết. •
startRound2Clip, startRound3Clip, deathClip: Các âm thanh được sử
dụng trong quá trình chơi. 4. Các biến dành cho UI: •
healthSlider, shieldSlider: Slider hiển thị máu và shield của boss trên giao diện người chơi.
Danh sách các hàm và công dụng của từng hàm:
1. OnEnable(): Được gọi khi đối tượng được bật. Khởi tạo các giá trị ban đầu, thiết
lập sự kiện cho sự chết của người chơi, và thiết lập hành vi của boss dựa trên các giai đoạn.
2. OnDisable(): Được gọi khi đối tượng bị tắt. Gỡ bỏ sự kiện cho sự chết của người chơi.
3. PlayerDied(Damager d, Damageable da): Được gọi khi người chơi chết.
Chuyển đổi âm thanh nền.
4. ActivateShield(): Kích hoạt shield của boss.
5. FireLaser(), ThrowGrenade(): Bắn laser và ném grenade.
6. GrenadeEnabled(): Kiểm tra xem có cho phép sử dụng grenade hay không.
7. ActivateLightning(), DeactivateLighting(): Kích hoạt và tắt lightning attack.
8. FixedUpdate(): Cập nhật vị trí trước đó của mục tiêu để điều chỉnh sự di chuyển của boss.
9. Update(): Cập nhật logic hành vi của boss, bao gồm theo dõi mục tiêu, theo dõi
sự thay đổi vị trí của mục tiêu và thực hiện hành động tương ứng.
10.Cleanup(), Die(): Dọn dẹp sau khi boss chết.
11.Các hàm kiểm tra trạng thái: •
EllenOnPlatform(), EllenOnFloor(): Kiểm tra xem Ellen (người chơi)
có ở trên platform hay trên sàn. •
IsAlive(), IsNotAlmostDead(): Kiểm tra xem boss còn sống hay không,
và có máu hơn 1 hay không. •
ShieldIsUp(): Kiểm tra xem shield của boss còn hoạt động hay không.
12.NextRound(): Chuyển đến giai đoạn tiếp theo, khởi tạo lại platform và đối tượng khi progress.
13.Disabled(), Enabled(): Các hàm không làm gì cả (có thể được triển khai thêm logic nếu cần).
14.Damaged(Damager damager, Damageable damageable): Được gọi khi boss
nhận sát thương, giảm máu và cập nhật thanh máu trên giao diện.
15.ShieldDown(), ShieldHit(): Thực hiện khi shield của boss bị hủy và khi shield nhận sát thương.
16.PlayStep(): Phát âm thanh của bước chân của boss.
17.GetAIRoot(): Chỉ dành cho môi trường phát triển. Trả về đối tượng cây quyết định AI của boss. SendSignal.cs
Công dụng của file:
File này là một script trong môi trường phát triển trò chơi Unity. Nó là một class có tên
SendSignal triển khai các chức năng liên quan đến gửi tín hiệu từ Animator để tương
tác với các cây quyết định AI trong framework Behavior Tree AI (BTAI).
Danh sách các biến: 1. Các biến công khai: •
signal: Tên của tín hiệu cần gửi. •
time: Thời điểm trong quá trình animation state mà tín hiệu sẽ được gửi.
fired: Biến kiểm tra xem tín hiệu đã được gửi hay chưa. •
listeners: Danh sách các đối tượng WaitForAnimatorSignal đang lắng nghe tín hiệu. 2. Các biến riêng tư: • Không có biến riêng tư.
Danh sách các hàm và công dụng của từng hàm:
1. OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi khi state mới bắt đầu. Đặt lại trạng thái của biến fired và
gọi hàm SetFalse() để đặt isSet về false cho tất cả các đối tượng lắng nghe.
2. SetFalse(): Thiết lập isSet về
false cho tất cả các đối tượng WaitForAnimatorSignal.
3. OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi khi state kết thúc. Gọi hàm SetFalse().
4. OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int
layerIndex): Được gọi mỗi frame trong khi state đang chạy. Kiểm tra xem đã đến
thời điểm gửi tín hiệu chưa và gửi tín hiệu đến tất cả các đối tượng lắng nghe nếu thỏa điều kiện.
5. Register(Animator animator, string name, WaitForAnimatorSignal node):
Phương thức tĩnh cho phép đăng ký một đối tượng WaitForAnimatorSignal để
lắng nghe tín hiệu với tên name. Nếu tên tín hiệu không tồn tại trong Animator, hiển thị một lỗi.
Đối tượng SendSignal này được thiết kế để hoạt động trong cấu trúc Behavior Tree AI,
nơi các đối tượng WaitForAnimatorSignal sẽ chờ đợi các tín hiệu từ Animator để điều
khiển quyết định của cây. AudioSurface.cs
Công dụng của file:
File này là một script trong môi trường phát triển trò chơi Unity. Nó là một class có tên
AudioSurface được sử dụng để định nghĩa các bề mặt trong trò chơi mà có thể tương
tác với âm thanh. Cụ thể, nó liên quan đến việc gắn các tile của Tilemap với âm thanh.
Danh sách các biến: 1. Các biến công khai:
tile: Biến kiểu TileBase để lưu trữ tile của Tilemap mà bề mặt này đại diện.
Cảm biến âm thanh (Audio Surface) trong script này có thể được gắn liền với các tile
trên Tilemap để định nghĩa các bề mặt có thể tương tác với âm thanh trong trò chơi. BackgroundMusicPlayer.cs
Công dụng của file:
File này định nghĩa một script trong trò chơi Unity có tên là
BackgroundMusicPlayer. Nhiệm vụ chính của script này là quản lý và điều khiển phát
nhạc nền và âm thanh môi trường trong trò chơi.
Danh sách các biến: 1. Biến công khai: •
musicAudioClip: AudioClip của nhạc nền. •
musicOutput: AudioMixerGroup cho nhạc nền. •
musicPlayOnAwake: Xác định xem nhạc nền có phát khi bắt đầu không. •
musicVolume: Điều chỉnh âm lượng của nhạc nền. •
ambientAudioClip: AudioClip của âm thanh môi trường. •
ambientOutput: AudioMixerGroup cho âm thanh môi trường. •
ambientPlayOnAwake: Xác định xem âm thanh môi trường có phát khi bắt đầu không. •
ambientVolume: Điều chỉnh âm lượng của âm thanh môi trường. 2. Biến riêng tư: •
m_MusicAudioSource: AudioSource để phát nhạc nền. •
m_AmbientAudioSource: AudioSource để phát âm thanh môi trường. •
m_TransferMusicTime: Kiểm tra xem thời gian nhạc nền của instance cũ có được chuyển không. •
m_TransferAmbientTime: Kiểm tra xem thời gian âm thanh môi trường
của instance cũ có được chuyển không.
m_OldInstanceToDestroy: Tham chiếu đến instance cũ để xóa đi sau khi chuyển time.
m_MusicStack: Stack chứa các AudioClip được đẩy vào để phát, giúp
thực hiện chức năng chuyển đổi giữa các âm thanh.
Danh sách các hàm và công dụng của từng hàm:
1. Awake(): Khởi tạo các giá trị ban đầu và cài đặt AudioSource cho nhạc nền và âm thanh môi trường.
2. Start(): Kiểm tra và chuyển time nếu có instance cũ, loại bỏ instance cũ.
3. Update(): Kiểm tra và xử lý Stack nhạc, chuyển đổi giữa các âm thanh.
4. PushClip(AudioClip clip): Đẩy một AudioClip mới vào Stack để phát.
5. ChangeMusic(AudioClip clip): Thay đổi AudioClip của nhạc nền.
6. ChangeAmbient(AudioClip clip): Thay đổi AudioClip của âm thanh môi trường.
7. Các phương thức Play, PlayJustMusic, PlayJustAmbient, Stop,
StopJustMusic, StopJustAmbient, Mute, MuteJustMusic,
MuteJustAmbient, Unmute, UnmuteJustMusic, UnmuteJustAmbient: Điều
khiển phát nhạc nền và âm thanh môi trường với các tùy chọn khác nhau.
8. Các phương thức Mute(float fadeTime), MuteJustMusic(float fadeTime), MuteJustAmbient(float
fadeTime), Unmute(float
fadeTime), UnmuteJustMusic(float fadeTime),
UnmuteJustAmbient(float fadeTime): Điều khiển mute và unmute với hiệu
ứng fade trong khoảng thời gian được xác định.
9. VolumeFade(AudioSource source, float finalVolume, float fadeTime):
Coroutine để thực hiện hiệu ứng fade âm lượng cho một AudioSource.
Assets/2DGamekit/Scripts/Audio/MixerSliderLink.cs Công dụng của file:
File này định nghĩa một script trong trò chơi Unity có tên là MixerSliderLink. Nhiệm
vụ của script này là liên kết một Slider với một tham số trong Audio Mixer, giúp người
phát triển có thể điều chỉnh các tham số âm thanh trong trò chơi thông qua giao diện người chơi.
Danh sách các biến: 1. Biến công khai: •
mixer: AudioMixer được liên kết với Slider để điều chỉnh âm thanh.
mixerParameter: Tên của tham số trong AudioMixer mà Slider sẽ điều chỉnh. •
maxAttenuation: Giá trị tối đa của attenuation (giảm âm lượng), mặc định là 0. •
minAttenuation: Giá trị tối thiểu của attenuation, mặc định là -80. 2. Biến riêng tư: •
m_Slider: Tham chiếu đến component Slider được đính kèm với GameObject chứa script.
Danh sách các hàm và công dụng của từng hàm:
1. Awake(): Hàm này được gọi khi đối tượng được tạo. Trong hàm này: •
Lấy tham chiếu đến component Slider được đính kèm với GameObject. •
Lấy giá trị hiện tại của tham số trong AudioMixer và cập nhật giá trị của
Slider dựa trên giá trị attenuation.
2. SliderValueChange(float value): Hàm được gọi khi giá trị của Slider thay đổi. •
Tính toán giá trị mới của tham số trong AudioMixer dựa trên giá trị của
Slider và giới hạn attenuation (giảm âm lượng) tối đa và tối thiểu. •
Đặt giá trị mới này cho tham số trong AudioMixer. Ghi chú: •
Được đánh dấu [RequireComponent(typeof(Slider))], đảm bảo rằng
GameObject chứa script này sẽ có một component Slider được đính kèm tự động.
Assets/2DGamekit/Scripts/Audio/RandomAudioPlayer.cs Công dụng của file:
File này định nghĩa một script trong trò chơi Unity có tên là RandomAudioPlayer.
Nhiệm vụ của script này là chơi ngẫu nhiên một âm thanh từ danh sách được cấu hình,
và có khả năng ghi đè âm thanh dựa trên TileBase (Tilemap) khi cung cấp.
Danh sách các biến:
1. Biến công khai: clips: Mảng chứa các AudioClip mà script có thể chọn để phát ngẫu nhiên.
overrides: Mảng chứa cặp giá trị TileBase và mảng AudioClip tương ứng,
để ghi đè âm thanh dựa trên TileBase. •
randomizePitch: Biến boolean xác định liệu pitch của âm thanh có được
ngẫu nhiên hóa hay không. •
pitchRange: Khoảng ngẫu nhiên cho pitch nếu randomizePitch được bật. 2. Biến riêng tư: •
m_Source: Tham chiếu đến AudioSource được đính kèm với GameObject chứa script. •
m_LookupOverride: Dictionary lưu trữ mối quan hệ giữa TileBase và
mảng AudioClip được ghi đè.
Danh sách các hàm và công dụng của từng hàm:
1. Awake(): Hàm này được gọi khi đối tượng được tạo. Trong hàm này: •
Lấy tham chiếu đến component AudioSource được đính kèm với GameObject. •
Xây dựng một Dictionary để ánh xạ giữa TileBase và mảng AudioClip
tương ứng từ mảng overrides.
2. PlayRandomSound(TileBase surface = null): Phát một âm thanh ngẫu nhiên từ
danh sách hoặc từ giả định được định nghĩa bởi TileBase nếu cung cấp. •
Nếu surface được cung cấp và có một ánh xạ trong m_LookupOverride,
sẽ sử dụng mảng âm thanh ghi đè tương ứng. •
Ngẫu nhiên chọn một âm thanh từ mảng được chọn và phát nó. •
Nếu randomizePitch được bật, ngẫu nhiên hóa pitch trước khi phát.
3. Stop(): Dừng phát âm thanh hiện tại. Ghi chú:
Được đánh dấu [RequireComponent(typeof(AudioSource))], đảm bảo rằng
GameObject chứa script này sẽ có một component AudioSource được đính kèm tự động.
Assets/2DGamekit/Scripts/Character/Editor/CharacterStateSetterEditor.cs
Công dụng của file: