这个项目能做什么

Avian 是一款专为 Bevy 游戏引擎设计的 ECS 驱动 2D 和 3D 物理引擎。它并非对现有引擎的封装,而是以 Bevy 的实体组件系统(ECS)为核心从零构建,因此物理状态与游戏其余实体位于同一个世界中。 设计原则 - 由 Bevy 打造,为 Bevy 服务,不封装现有引擎。 - 符合人体工学、熟悉的 API。 - 大量使用 ECS,而非独立的物理世界。 - 模块化插件架构,引擎的各个部分均可替换。 - 重视文档。 功能 - 刚体:动态、运动学和静态刚体,支持线速度和角速度、外力和扭矩及冲量、重力与重力缩放、线性和角阻尼、轴锁定、刚体主导权、连续碰撞检测(CCD),以及通过休眠实现的自动停用。 - 由 Parry 提供支持的碰撞检测:碰撞体可配置碰撞层、密度和材质属性;支持为网格和整个场景生成碰撞体;碰撞事件;访问发生碰撞的实体;用于过滤和修改碰撞的碰撞钩子;手动接触查询和相交测试。 - 约束与关节:内置固定、距离、棱柱、旋转和球面关节,并支持使用 XPBD 的自定义关节和约束。 - 空间查询:射线投射、形状投射、点投影和相交测试,提供基于组件的 API、灵活的 SpatialQuery 系统参数和查询过滤器。 - 针对固定时间步长的变换插值和外推。 - 对碰撞体、AABB、接触、关节和空间查询的调试渲染。 - 可配置的调度、高度可定制性、模块化插件、支持自定义碰撞后端,以及 f32/f64 精度(默认 f32)。 用法 将 avian2d 或 avian3d 添加到 Cargo.toml,在 Bevy 的 DefaultPlugins 旁注册 PhysicsPlugins,然后生成带有 RigidBody、Collider、AngularVelocity 和 Transform 等组件的实体。README 中包含一个完整的 3D 示例,其中旋转的立方体落到静态圆柱平台上。 示例与版本 大量 2D 和 3D 示例位于 crates/avian2d/examples 和 crates/avian3d/examples 下。它们同时支持 f32 和 f64 精度;f64 需要禁用默认特性并手动选择维度和精度。版本表将 Bevy 版本映射到 Avian 版本(例如 Bevy 0.19 对应 Avian 0.7),并提供迁移指南。Avian 是 Bevy XPBD 的继任者。 社区与许可 欢迎通过 issue 和 pull request 贡献,并设有 AI 政策要求先进行审查。开发讨论在 Avian Dev Discord 和 Bevy Discord 上进行。该项目采用 MIT 或 Apache-2.0 双重许可,由用户自行选择。