Class diagram của Emitter

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 94 - 96)

Emitter đảm nhận vai trò truyền các Message khi có âm thanh phát ra đến Broadcaster mà nó đã liên kết. Khi khởi tạo một Emitter chúng ta có thể truyền một đối tượng của Broadcaster này vào để liên kết với nó. Mỗi loại Emitter sẽ được định danh bằng một ID, ví dụ: nhân vật có ID là 1, Decayer có ID là 2,... hoặc chúng ta có thể định danh từng Emitter cụ thể bằng một ID tương ứng, ví dụ: nhân vật John Cooper có ID là 1, Doc McCoy có ID là 2,... Tất cả các Emitter có mặt trong màn chơi và ID được mô tả trong bảng 3.

Transcript Travel distant (đvđd) Frequency (Hz) Is noise? FOOTSTEP_WALK 1.5 1300 false FOOTSTEP_RUN 3 1300 false FOOTSTEP_CROUCH 0.5 1300 false STEALTH_KILL 3 300 false COIN_DROP 7 7000 false BAG_DROP 1.5 500 false KNIFE_IMPACT 1.5 700 false POUR_ACID 1.3 3000 false GUNSHOT_PISTOL 30 1200 false GUNSHOT_SNIPER 3.5 1200 false GUNSHOT_IMPACT 2 8000 false AMMO_BOX_OPEN 2.5 4000 false RELOAD_GUN 1.5 2500 false GENERATOR 8 200 true ZOMBIE_SCREAM 5 200 false DECAYER_SHOUT 10 300 false DECAYER_DIE 5 300 false

Bảng 4: Mô tả Message tương ứng với các âm thanh được phát ra trong màn chơi

Khi màn chơi được khởi tạo, các (nhóm) đối tượng trên sẽ khởi tạo cho mình một Emitter và gán ID phù hợp. Khi bất kỳ đối tượng nào phát ra âm thanh mà cụ thể là khi đối tượng đó ra lệnh cho component AudioSource của nó phát một audio clip bất kỳ thông qua hàm Play hoặc PlayOneShot. Khi này, chúng sẽ tạo ra một Message tương ứng với âm thanh đó và ra lệnh cho Emitter truyền Message đến Broadcaster đã liên kết thông qua hàm Emit. Các âm thanh có thể được phát ra trong màn chơi được mô tả bởi Message trong bảng 4 (các giá trị chỉ mang tính ước lượng):

FOOTSTEP_WALK, FOOTSTEP_RUN, FOOTSTEP_CROUCH: là những âm thanh phát ra khi nhân vật di chuyển tương ứng với đi, chạy và đi khom. Những âm thanh này có thể được phát hiện bởi các kẻ địch là các NPC và khi phát hiện âm thanh này các kẻ địch sẽ tiến hành tìm kiếm nhân vật đó.

STEALTH_KILL_SOUND: là âm thanh phát ra khi nhân vật thực hiện kỹ năng Stealth Kill trên một kẻ thù nào đó khiến kẻ thù đó phát ra âm thanh trước khi bị tiêu diệt.

COIN_DROP: là âm thanh phát ra từ đồng tiền của kỹ năng Throw Coin của John Cooper khi chạm đất giúp đánh lạc hướng kẻ thù.

BAG_DROP: là âm thanh phát ra từ túi bẫy của kỹ năng Bait Bag của Doc McCoy khi chạm đất.

KNIFE_IMPACT: là âm thanh phát ra từ con dao của kỹ năng Throw Knife của John Cooper khi va chạm với một đối tượng khác.

POUR_ACID: là âm thanh phát ra khi Doc McCoy thực hiện tiêu hủy xác kẻ thù bằng axit.

GUNSHOT_PISTOL: là âm thanh phát ra khi John Cooper thực hiện kỹ năng Shoot Pistol.

GUNSHOT_IMPACT: là âm thanh phát ra khi đạn (của cả Pistol và Sniper rifle) chạm với một vật nào đó.

AMMO_BOX_OPEN: là âm thanh phát ra khi nhân vật mở thùng đạn để lấy đạn.

RELOAD_GUN: là âm thanh phát ra khi nhân vật nạp đạn cho súng của mình.

GENERATOR: là tiếng ồn do máy phát điện tạo ra, đóng vai trò là tiếng ồn từ môi trường.

ZOMBIE_SCREAM: là tiếng kêu của Zombie khi phát hiện và rượt đuổi nhân vật, âm thanh này giúp thông báo cho các kẻ địch khác nhân vật đã bị phát hiện.

DECAYER_SHOUT: là tiếng kêu của Decayer khi phát hiện ra nhân vật, giúp thông báo cho đồng bọn của mình.

DECAYER_DIE: là âm thanh của Decayer phát ra trước khi chết.

Âm thanh phát ra có 2 dạng: âm thanh đơn và âm thanh liên tục. Âm thanh đơn là các âm thanh chỉ phát ra 1 lần ví dụ như tiếng súng, tiếng của một bước chân. Âm thanh liên tục là âm thanh được phát ra liên tục trong một khoảng thời gian ví dụ như âm thanh của máy phát điện hay âm thanh khi mở thùng đạn. Đối với âm thanh đơn thì các Emitter chỉ cần gọi hàm Emit 1 lần nhưng đối với âm thanh liên tục cần gọi hàm Emit nhiều lần và thời gian giữa 2 lần gọi phải đảm bảo ít ảnh hưởng đến tốc độ xử lí của game (sẽ được nói rõ hơn trong phần 7.2.5).

Listener

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 94 - 96)