Class diagram của CharacterControlling

Một phần của tài liệu Thiết kế mô hình tri giác và nhận thức cho các npcs trong stealth game (Trang 80 - 82)

• slotMapping: để map từng hành động và kỹ năng của nhân vật với các slot hành động thích hợp, để khi nhân vật thực hiện hành động hoặc kỹ năng thì các slot này sẽ thay đổi các chỉ số cũng như UI thích hợp, ví dụ: sau khi thực hiện kỹ năng bắn súng thì kỹ năng sẽ cooldown và slot của kỹ năng này sẽ thực hiện đếm ngược trên UI để người chơi biết là kỹ năng đang cooldown và chưa dùng được.

• characterStats: là các thuộc tính riêng biệt của từng nhân vật, ví dụ: tên, avatar, màu nền avatar, màu khi highlight,... Được dùng để thay đổi UI khi nhân vật được chọn.

• walkSpeed, crouchWalkSpeed, runSpeed: có giá trị lần lượt là 2, 1, 3.5 cho tất cả nhân vật.

• HealthPoints: là một property dùng để quản lí máu của nhân vật. Khi máu của nhân vật thay đổi thì nó cũng thực hiện việc gọi hàm callback để thay đổi UI của máu nhân vật và gọi hàm thực hiện hành động chết của nhân vật khi máu giảm về 0.

• currentAction: là hành động hoặc kỹ năng mà nhân vật đang thực hiện.

• CheckInput(): kiểm tra input từ các phím hành động và kỹ năng.

• ToggleSkill(string key): được gọi trong hàm CheckInput để thực hiện hành động thích hợp với phím đã bấm.

• MoveTo(Vector3 destination, MoveState state): ra lệnh cho NavMeshAgent di chuyển đến vị trí destination, với trạng thái state (có 3 giá trị: walk, run, crouchwalk), nhờ vào trạng thái này mà script sẽ thay đổi vận tốc di chuyển và animation cho phù hợp. Khi các animation của nhân vật đang chạy thì một số có gọi các hàm để phát ra âm thanh của hành động ứng với nó (hành động đi sẽ gọi hàm PlayFootstepSound để phát ra âm thanh của bước chân).

• EndCurrentAction(): dừng hành động đang thực hiện và trở về trạng thái trước đó (nếu trước khi hành động nhân vật đang đứng thì sau khi dừng hành động nhân vật sẽ đứng, điều tương tự cũng áp dụng cho ngồi). Khi màn chơi bắt đầu CharacterControlling sẽ gán máu của người chơi bằng với MAX_HEALTH_POINT và gán các giá trị thích hợp cho các field và property. Ở mỗi frame, nếu nhân vật đang rảnh rỗi (idle) nó sẽ xét xem có nhận được input nhấp phím trái chuột của người chơi không, nếu có thì nó sẽ thực hiện chuyển đổi vị trí mà người chơi mới nhấp chuột thành vị trí trên NavMesh mà NavMeshAgent của nhân vật đi được, sau đó cho nhân vật đi đến vị trí đó. Tương tự, khi người chơi bấm phím kỹ năng bất kỳ, thì nhân vật sẽ thực hiện kỹ năng đó cùng với thay đổi UI và animation cho người chơi biết được nhân vật đang thực hiện kỹ năng đó.

Như đã đề cập, mỗi nhân vật sẽ có 6 hành động có thể thực hiện ứng với 6 phím bấm (ngồi, nhặt đạn và 4 kỹ năng). Những hành động này sẽ có hành vi và các thuộc tính riêng biệt, nhưng để quản lý tốt hơn chúng đều sẽ được kế thừa từ một abstract class CharacterAction. Mỗi hành động sẽ được gắn vào một game object rỗng và gán làm con của game object của nhân vật để dễ dàng cho việc thêm hoặc bớt các hành động mà không làm ảnh hưởng đến các thành phần khác của nhân vật.

Một phần của tài liệu Thiết kế mô hình tri giác và nhận thức cho các npcs trong stealth game (Trang 80 - 82)

Tải bản đầy đủ (PDF)

(125 trang)