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ỏ. | |
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.
| 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.
| 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.
| 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.