#导航 #系统 #路径 #nav-grid #nav-islands #nav-net #nav-free-grid

navmesh

NavMesh、NavNet、NavGrid、NavFreeGrid和NavIslands导航系统

10个版本 (5个重大更新)

0.12.1 2021年11月30日
0.11.0 2021年11月28日
0.8.3 2021年5月20日
0.8.2 2020年2月17日
0.7.0 2019年11月23日

#1657 in 游戏开发

Download history • Rust 包仓库 37/week @ 2024-03-17 • Rust 包仓库 36/week @ 2024-03-24 • Rust 包仓库 77/week @ 2024-03-31 • Rust 包仓库 32/week @ 2024-04-07 • Rust 包仓库 25/week @ 2024-04-14 • Rust 包仓库 31/week @ 2024-04-21 • Rust 包仓库 43/week @ 2024-04-28 • Rust 包仓库 31/week @ 2024-05-05 • Rust 包仓库 44/week @ 2024-05-12 • Rust 包仓库 43/week @ 2024-05-19 • Rust 包仓库 45/week @ 2024-05-26 • Rust 包仓库 29/week @ 2024-06-02 • Rust 包仓库 32/week @ 2024-06-09 • Rust 包仓库 37/week @ 2024-06-16 • Rust 包仓库 31/week @ 2024-06-23 • Rust 包仓库 6/week @ 2024-06-30 • Rust 包仓库

每月下载量109
用于 6 个库(直接使用2个)

MIT/Apache

110KB
3K SLoC

NavMesh travis-ci状态 crates-io版本

Rust的Nav-Mesh路径查找器

安装

Cargo.toml

[dependencies]
navmesh = "0.8"

示例

use navmesh::*;

let vertices = vec![
    (0.0, 0.0, 0.0).into(), // 0
    (1.0, 0.0, 0.0).into(), // 1
    (2.0, 0.0, 1.0).into(), // 2
    (0.0, 1.0, 0.0).into(), // 3
    (1.0, 1.0, 0.0).into(), // 4
    (2.0, 1.0, 1.0).into(), // 5
];
let triangles = vec![
    (0, 1, 4).into(), // 0
    (4, 3, 0).into(), // 1
    (1, 2, 5).into(), // 2
    (5, 4, 1).into(), // 3
];

let mesh = NavMesh::new(vertices, triangles).unwrap();
let path = mesh
    .find_path(
        (0.0, 1.0, 0.0).into(),
        (1.5, 0.25, 0.5).into(),
        NavQuery::Accuracy,
        NavPathMode::MidPoints,
    )
    .unwrap();
assert_eq!(
    path.into_iter()
        .map(|v| (
            (v.x * 10.0) as i32,
            (v.y * 10.0) as i32,
            (v.z * 10.0) as i32,
        ))
        .collect::<Vec<_>>(),
    vec![(0, 10, 0), (10, 5, 0), (15, 2, 5),]
);

依赖项

~9MB
~163K SLoC