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::sprite Struct Tham chiếu

Ảnh vẽ tại vị trí của entity. Tiếp...

#include <_comps.h>

Các thuộc tính Public

texture_handle texture {}
 Ảnh cần vẽ.
rect source {}
 Vùng trong ảnh, tính bằng pixel.
vec2 origin {0.5f, 0.5f}
 Điểm neo, tính theo tỉ lệ kích thước: {0, 0} là góc trên trái, {0.5, 0.5} là tâm.
rgba tint {1.0f, 1.0f, 1.0f, 1.0f}
 Màu nhân vào ảnh.
i32 layer = 0
 Lớp vẽ: lớp nhỏ vẽ trước, lớp lớn đè lên.
f32 sort_offset = 0.0f
 Cộng vào transform.pos.y khi sắp theo Y (xem draw_set_y_sort()): đặt bằng khoảng từ điểm neo xuống chân nếu điểm neo không nằm ở chân.
bool flip_x = false
 Lật ngang.
bool flip_y = false
 Lật dọc.
bool visible = true
 Ẩn mà không cần gỡ component.
texture_handle normal {}
 Normal map của sprite, để đèn (njin_light.h) làm sprite nổi khối.
texture_handle material {}
 Bản đồ vật liệu của sprite cho ánh sáng PBR (njin_light.h), xếp kênh theo kiểu "MRA" của raylib: đỏ là độ kim loại (metallic, 0 phi kim đến 1 kim loại), xanh lá là độ nhám (roughness, 0 bóng gương đến 1 nhám), xanh dương là che khuất môi trường (ambient occlusion, 1 là không bị che).
texture_handle emissive {}
 Bản đồ phát sáng: chỗ nào có màu là chỗ đó tự sáng, không cần đèn (mắt quái, cửa sổ có đèn, nấm dạ quang).
f32 emissive_power = 1.0f
 Độ sáng của emissive, từ 0 đến 8. Lớn hơn 1 là sáng hơn màu ảnh, tràn ra bloom.

Mô tả chi tiết

Ảnh vẽ tại vị trí của entity.

Cần một transform trên cùng entity.

Module sprite của engine vẽ mọi entity có transform và sprite trong phase_render, theo thứ tự layer tăng dần. System vẽ của game trong phase_render chạy sau, nên vẽ đè lên sprite.

Thông tin về Member Data

◆ source

rect njin::sprite::source {}

Vùng trong ảnh, tính bằng pixel.

Kích thước 0 là cả ảnh. sprite_anim ghi đè trường này mỗi frame.

◆ origin

vec2 njin::sprite::origin {0.5f, 0.5f}

Điểm neo, tính theo tỉ lệ kích thước: {0, 0} là góc trên trái, {0.5, 0.5} là tâm.

transform.pos rơi đúng vào điểm này, và ảnh xoay quanh nó.

◆ normal

texture_handle njin::sprite::normal {}

Normal map của sprite, để đèn (njin_light.h) làm sprite nổi khối.

Phải cùng kích thước và cách xếp frame với texture, kiểu OpenGL (kênh xanh lá hướng lên), nạp bằng texture_load() hoặc atlas_load(). Trống là sprite phẳng. Sprite xoay hoặc lật ngang không xoay hay lật normal theo.

◆ material

texture_handle njin::sprite::material {}

Bản đồ vật liệu của sprite cho ánh sáng PBR (njin_light.h), xếp kênh theo kiểu "MRA" của raylib: đỏ là độ kim loại (metallic, 0 phi kim đến 1 kim loại), xanh lá là độ nhám (roughness, 0 bóng gương đến 1 nhám), xanh dương là che khuất môi trường (ambient occlusion, 1 là không bị che).

Cùng kích thước và cách xếp frame với texture. Trống là vật liệu mặc định: phi kim, nhám 0.8, không bị che.

◆ emissive

texture_handle njin::sprite::emissive {}

Bản đồ phát sáng: chỗ nào có màu là chỗ đó tự sáng, không cần đèn (mắt quái, cửa sổ có đèn, nấm dạ quang).

Màu của bản đồ nhân với emissive_power. Cùng kích thước và cách xếp frame với texture. Trống là không phát sáng.