@flare-engine/路径调查
网格路径调查——A* (中文(简体) )findPath),跳出点搜索(findPathJPS统一成本电网(加权电网代表给A*,见下文)和多边形导航回落(findNavMeshPath) 纯数据,无课. 高血压( U)manhattanDistance, (中文(简体) ), octileDistance, (中文(简体) ), chebyshevDistance, (中文(简体) ), euclideanDistance)导出为树摇的命名函数.
状态:β-还没有生产消费者. 每一个
@flare-engine/*执行软件包 以船运游戏进行,但这个不是。 API被测试覆盖,算法正确 但并没有通过实际使用的震动。 处理 签名是稳定的,行为是比其他范围更少的战斗测试.
findPath 财务报告和审定财务报表 findPathJPS 关于剪角的分歧
他们是 没有 互换空降人员。 双向双向 主要邻居都被封锁了:
. X . start (0,0), goal (1,1)
X . . findPath → null (refuses to squeeze the corner)
. . . findPathJPS → [{x:0,y:0},{x:1,y:1}] (takes the diagonal)
findPath 要求对角线的两个主要邻居都行走; findPathJPS 没有.
所以改变运动语义,在地图上
紧密的对角差距 它会改变哪些路线存在。 通过测试固定在
tests/jps.test.ts。如果游戏的相撞形状是一个圆或框,宽于点,则您
几乎绝对想要 findPath规矩.
findPathJPS 加权网格
JPS 刷卡只有在每个可走动的瓦片花费1. 如果任何瓷砖的成本超过1,
findPathJPS 用线性扫描探测到 grid.data 并代表 findPath
与 diagonal: true,转发 maxIterations 财务报告和审定财务报表 heuristic。结果是成本校正
加权 A* 路径——上面有 A* 的切入角规则,而不是 JPS 的,从不忽略 JPS 路径
费用。 网格,其瓦片全部分担1以上的成本(createGrid({ defaultCost: 2 })(a) 代表
与JPS相同的路径, cost 双倍于实际加权总数,没有JPS加速.
保持每1个成本,以获得JPS加速.
安装
bun add @flare-engine/pathfinding
使用量
import { createGrid, setWalkable, findPathJPS, octileDistance } from '@flare-engine/pathfinding';
const grid = createGrid({ width: 32, height: 32 });
setWalkable(grid, 5, 5, false);
const result = findPathJPS(grid, 0, 0, 30, 30, {
heuristic: octileDistance,
});
if (result !== null) console.log(result.path);
见 API 规格。 。 。 .
许可证
阿帕奇 - 2.0