Rung camera, hitstop, nháy màn hình, nháy sprite và các mẫu particle có sẵn. Tiếp...
Namespaces | |
| namespace | njin::fx |
| Các mẫu particle hay dùng, để truyền vào particles_spawn() hoặc gắn thẳng lên entity. | |
Classes | |
| struct | njin::shake_config |
| Cách rung của camera_shake(). Tiếp... | |
| struct | njin::flash_fx |
| Tô một sprite thành một màu trong chốc lát, thường là trắng khi trúng đòn. Tiếp... | |
| struct | njin::dissolve_fx |
| Cho một sprite tan biến từng mảng nhỏ, có viền cháy sáng ở chỗ đang tan: kẻ địch chết, vật phẩm biến mất. Tiếp... | |
Hiệu ứng màn hình và thời gian | |
| void | njin::camera_shake (context &ctx, f32 trauma) |
| Rung camera. | |
| void | njin::camera_shake_config (context &ctx, const shake_config &config) |
| Đổi cách rung của camera_shake(). | |
| f32 | njin::camera_shake_amount (const context &ctx) |
| Độ rung hiện tại, 0..1. | |
| void | njin::hitstop (context &ctx, f32 seconds) |
| Dừng hình trong chốc lát (hitstop, freeze frame) để cú đánh có "lực". | |
| bool | njin::hitstop_active (const context &ctx) |
| Có đang hitstop không. | |
| void | njin::screen_flash (context &ctx, rgba color, f32 duration) |
| Nháy cả màn hình một màu rồi mờ dần: trắng khi nổ lớn, đỏ khi bị thương. | |
Nháy sprite | |
| void | njin::sprite_flash (context &ctx, entt::entity entity, rgba color={1.0f, 1.0f, 1.0f, 1.0f}, f32 duration=0.1f) |
| Nháy sprite của entity. | |
Tan biến sprite | |
| void | njin::sprite_dissolve (context &ctx, entt::entity entity, f32 duration=0.6f, rgba edge_color={1.0f, 0.55f, 0.1f, 1.0f}) |
| Cho sprite của entity tan biến. | |
Rung camera, hitstop, nháy màn hình, nháy sprite và các mẫu particle có sẵn.
| void njin::camera_shake | ( | context & | ctx, |
| f32 | trauma ) |
Rung camera.
Cộng dồn: trúng đạn liên tiếp rung mạnh dần.
Độ rung (0..1) giảm dần theo shake_config::decay. Cường độ thật tỉ lệ với bình phương độ rung, nên rung nhỏ gần như không thấy, rung lớn rất mạnh: 0.2 cho bước chân nặng, 0.4 cho trúng đòn, 0.7 trở lên cho vụ nổ. Chỉ ảnh hưởng hình vẽ ra, không đổi transform của camera hay w2scr()/scr2w(). Tính theo giờ thật, nên vẫn rung trong hitstop().
| ctx | Context của engine. |
| trauma | Độ rung cộng thêm, giới hạn tổng ở 1. |
| void njin::camera_shake_config | ( | context & | ctx, |
| const shake_config & | config ) |
Đổi cách rung của camera_shake().
| ctx | Context của engine. |
| config | Cách rung mới. |
| f32 njin::camera_shake_amount | ( | const context & | ctx | ) |
Độ rung hiện tại, 0..1.
| ctx | Context của engine. |
| void njin::hitstop | ( | context & | ctx, |
| f32 | seconds ) |
Dừng hình trong chốc lát (hitstop, freeze frame) để cú đánh có "lực".
Trong lúc dừng, delta() trả về 0 và phase_fixed_update không chạy, giống time_set_paused(), nhưng tự hết sau seconds giây thật. Gọi khi đang dừng thì lấy thời gian dài hơn, không cộng dồn. Thường 0.03 đến 0.12 giây.
| ctx | Context của engine. |
| seconds | Thời gian dừng, giây thật. |
| bool njin::hitstop_active | ( | const context & | ctx | ) |
Có đang hitstop không.
| ctx | Context của engine. |
Nháy cả màn hình một màu rồi mờ dần: trắng khi nổ lớn, đỏ khi bị thương.
Vẽ đè lên mọi thứ, kể cả UI (nhưng dưới hiệu ứng chuyển scene). Tính theo giờ thật. Gọi lại khi đang nháy thì thay bằng lần nháy mới.
| ctx | Context của engine. |
| color | Màu nháy. color.a là độ đục lúc đầu. |
| duration | Thời gian mờ hết, giây. |
| void njin::sprite_flash | ( | context & | ctx, |
| entt::entity | entity, | ||
| rgba | color = {1.0f, 1.0f, 1.0f, 1.0f}, | ||
| f32 | duration = 0.1f ) |
Nháy sprite của entity.
Gọi lại khi đang nháy thì bắt đầu lại.
| ctx | Context của engine. |
| entity | Entity có sprite. |
| color | Màu tô. |
| duration | Thời gian, giây (theo delta(), nên dừng trong hitstop). |
| void njin::sprite_dissolve | ( | context & | ctx, |
| entt::entity | entity, | ||
| f32 | duration = 0.6f, | ||
| rgba | edge_color = {1.0f, 0.55f, 0.1f, 1.0f} ) |
Cho sprite của entity tan biến.
Gọi lại khi đang tan thì bắt đầu lại.
Muốn chỉnh thêm (hiện ra dần, cỡ mảng, hủy khi xong) thì tự gắn njin::dissolve_fx:
| ctx | Context của engine. |
| entity | Entity có sprite. |
| duration | Thời gian, giây (theo delta(), nên dừng trong hitstop). |
| edge_color | Màu viền cháy. a bằng 0 là không có viền. |