Ả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. | |
Ả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.
| 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.
| 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ó.
| 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.
| 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.
| 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.