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

Cách dựng một navmesh 3D bằng navmesh3d_create(): cỡ của tác tử đi trên nó và độ mịn khi dựng. Tiếp...

#include <njin_nav3d.h>

Các thuộc tính Public

f32 agent_radius = 0.4f
 Bán kính tác tử, mét: chỗ đi được cách tường bấy nhiêu.
f32 agent_height = 1.8f
 Chiều cao tác tử: chui được qua chỗ trần cao hơn số này.
f32 agent_climb = 0.4f
 Bậc cao nhất bước lên được, mét.
f32 max_slope = 45.0f
 Dốc nhất đi được, độ.
f32 cell_size = 0.15f
 Cỡ ô khi dựng, mét, theo chiều ngang: nhỏ thì mép đa giác sát tường hơn nhưng dựng lâu hơn.
f32 cell_height = 0.1f
 Cỡ ô khi dựng theo chiều đứng, mét.
f32 tile_size = 16.0f
 Cạnh mỗi ô vuông của navmesh, mét.
f32 region_min = 8.0f
 Mảng đi được nhỏ hơn (tính bằng ô, theo cạnh) bị bỏ: chỗ đứng lọt thỏm trên bàn.
f32 edge_max_error = 1.3f
 Mép đa giác lệch khỏi mép thật tối đa bấy nhiêu ô.
vec3 bounds_min {0.0f, 0.0f, 0.0f}
 Góc (x, y, z nhỏ nhất) và góc kia của vùng dựng.
vec3 bounds_max {0.0f, 0.0f, 0.0f}
 Xem bounds_min.
i32 max_agents = 128
 Số tác tử tối đa đi cùng lúc (nav3d_agent_add()).
i32 obstacle_tiles_per_frame = 4
 Số ô vuông tối đa được dựng lại mỗi frame khi vật cản (navmesh3d_add_obstacle()) thêm, dời hay bỏ.

Mô tả chi tiết

Cách dựng một navmesh 3D bằng navmesh3d_create(): cỡ của tác tử đi trên nó và độ mịn khi dựng.

Navmesh là các đa giác phủ chỗ đi được của hình học tĩnh (sàn, dốc, bậc thang, địa hình), đã chừa ra một khoảng agent_radius quanh tường và vật cản. Nó chia thành các ô vuông cạnh tile_size mét, nên dựng lại được một vùng (navmesh3d_rebuild()) mà không phải dựng lại cả bản đồ.

Điểm của đường đi và vị trí tác tử nằm trên mặt đất: độ cao lấy theo lưới chi tiết của navmesh, và trên địa hình đã thêm bằng navmesh3d_add_terrain() thì theo đúng terrain3d_height(). Trên hình học khác (model, hộp nghiêng) có thể sai vài cm.

Thông tin về Member Data

◆ cell_size

f32 njin::navmesh3d_desc::cell_size = 0.15f

Cỡ ô khi dựng, mét, theo chiều ngang: nhỏ thì mép đa giác sát tường hơn nhưng dựng lâu hơn.

Khoảng một phần ba agent_radius là thường.

◆ bounds_min

vec3 njin::navmesh3d_desc::bounds_min {0.0f, 0.0f, 0.0f}

Góc (x, y, z nhỏ nhất) và góc kia của vùng dựng.

Hai góc bằng nhau (mặc định) là lấy theo hình học đã thêm khi dựng lần đầu.

◆ obstacle_tiles_per_frame

i32 njin::navmesh3d_desc::obstacle_tiles_per_frame = 4

Số ô vuông tối đa được dựng lại mỗi frame khi vật cản (navmesh3d_add_obstacle()) thêm, dời hay bỏ.

Ô còn lại chờ frame sau, nên một vật cản lớn rải việc ra vài frame.