njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
njin::sound3d_desc Struct Tham chiếu

Cách nghe một tiếng 3D. Tiếp...

#include <njin_audio.h>

Các thuộc tính Public

f32 volume = 1.0f
 Nhân vào âm lượng của sound (và kênh của nó). Âm thì là 0.
f32 pitch = 1.0f
 Cao độ trước Doppler. 1 là như bản ghi.
f32 min_distance = 1.0f
 Gần hơn thì nghe đủ to.
f32 max_distance = 40.0f
 Xa hơn thì im (và không tốn gì để trộn).
audio_rolloff rolloff = rolloff_inverse
 Cách giảm theo khoảng cách.
f32 rolloff_factor = 1.0f
 Độ dốc của rolloff_inverse và rolloff_exponential.
f32 spread = 1.0f
 Độ lệch trái phải, 0..1.
f32 doppler = 1.0f
 Độ mạnh của Doppler: tiếng cao lên khi nguồn và tai lại gần nhau, trầm xuống khi xa nhau.
vec3 cone_direction {0.0f, 0.0f, 0.0f}
 Hướng phát của một loa có hướng (còi xe, loa phóng thanh), trong thế giới.
f32 cone_inner = 360.0f
 Góc toàn phần (độ) của vùng nghe đủ to, quanh cone_direction.
f32 cone_outer = 360.0f
 Góc toàn phần (độ) mà ngoài nó chỉ còn cone_outer_volume.
f32 cone_outer_volume = 0.0f
 Hệ số âm lượng ngoài cone_outer, 0..1.
bool occlusion = false
 Bị che: mỗi frame bắn một tia vật lý (physics3d_raycast()) từ tai tới nguồn; chạm một body ở trước nguồn thì tiếng nhỏ lại còn occlusion_volume, chuyển mượt trong khoảng 0,15 giây.
f32 occlusion_volume = 0.35f
 Hệ số âm lượng khi bị che, 0..1.
f32 occlusion_margin = 0.5f
 Chỗ chạm cách nguồn trong khoảng này thì không tính là che: body của chính vật phát tiếng (thân xe đang nổ máy) không che tiếng của nó.

Mô tả chi tiết

Cách nghe một tiếng 3D.

Mọi trường sửa được lúc tiếng đang phát bằng voice3d_set_desc().

Thông tin về Member Data

◆ rolloff_factor

f32 njin::sound3d_desc::rolloff_factor = 1.0f

Độ dốc của rolloff_inverse và rolloff_exponential.

1 là như ngoài đời, 2 là tắt nhanh hơn, 0.5 là vang xa hơn.

◆ spread

f32 njin::sound3d_desc::spread = 1.0f

Độ lệch trái phải, 0..1.

1 là tiếng bên phải nghe hẳn ở loa phải; 0 là luôn ở giữa (chỉ đổi âm lượng). Gần tai hơn min_distance thì tự về giữa dần, để tiếng ngay trên đầu không nhảy từ loa này sang loa kia.

◆ doppler

f32 njin::sound3d_desc::doppler = 1.0f

Độ mạnh của Doppler: tiếng cao lên khi nguồn và tai lại gần nhau, trầm xuống khi xa nhau.

0 là tắt, 1 là như ngoài đời.

◆ cone_direction

vec3 njin::sound3d_desc::cone_direction {0.0f, 0.0f, 0.0f}

Hướng phát của một loa có hướng (còi xe, loa phóng thanh), trong thế giới.

{0, 0, 0} (mặc định) là phát đều mọi hướng và các trường cone_* bị bỏ qua.

◆ occlusion

bool njin::sound3d_desc::occlusion = false

Bị che: mỗi frame bắn một tia vật lý (physics3d_raycast()) từ tai tới nguồn; chạm một body ở trước nguồn thì tiếng nhỏ lại còn occlusion_volume, chuyển mượt trong khoảng 0,15 giây.

Chỉ đổi âm lượng, không làm tiếng đục đi. Không có thế giới vật lý thì không bao giờ bị che.

◆ occlusion_margin

f32 njin::sound3d_desc::occlusion_margin = 0.5f

Chỗ chạm cách nguồn trong khoảng này thì không tính là che: body của chính vật phát tiếng (thân xe đang nổ máy) không che tiếng của nó.

Tăng cho vật lớn.