45个版本 (22个稳定版)
5.0.2 | 2022年11月14日 |
---|---|
4.3.0 | 2022年11月12日 |
4.0.0-alpha.3 | 2022年7月31日 |
3.1.0 | 2022年5月20日 |
0.3.0 | 2021年3月21日 |
#2434 in 游戏开发
193 每月下载量
在 3 个工具箱中使用(2个直接使用)
195KB
3.5K SLoC
海伦
为2D和3D bevy 游戏提供直观的物理API。(由rapier提供支持)
⚠ 项目已停止开发!
海伦现已停止开发。将不再提供新功能、修复或支持。
有关原因的更多详细信息,请阅读公告
设计原则
- 尽可能使用 bevy 类型、资源和组件(例如
Vec3
、Quat
、Transform
、Events
等) - 提供适用于2D和3D的单个API。
- 面向数据。使用此库应感觉像它是bevy的一部分。
- 避免通过句柄在资源中查找数据。数据应在组件中直接访问和修改。
- 隐藏实际的物理引擎。这是用户不需要担心实现的细节。
- 但是,允许高级用户访问底层的rapier资源,以确保用户不会因为海伦API中缺少元素而受阻。
它的外观
use bevy::prelude::*;
use heron::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(PhysicsPlugin::default()) // Add the plugin
.insert_resource(Gravity::from(Vec3::new(0.0, -9.81, 0.0))) // Optionally define gravity
.add_startup_system(spawn)
.run();
}
fn spawn(mut commands: Commands) {
commands
// Spawn any bundle of your choice. Only make sure there is a `GlobalTransform`
.spawn_bundle(SpriteBundle::default())
// Make it a rigid body
.insert(RigidBody::Dynamic)
// Attach a collision shape
.insert(CollisionShape::Sphere { radius: 10.0 })
// Optionally add other useful components...
.insert(Velocity::from_linear(Vec3::X * 2.0))
.insert(Acceleration::from_linear(Vec3::X * 1.0))
.insert(PhysicMaterial { friction: 1.0, density: 10.0, ..Default::default() })
.insert(RotationConstraints::lock())
.insert(CollisionLayers::none().with_group(Layer::Player).with_mask(Layer::World));
}
// Define your physics layers
#[derive(PhysicsLayer)]
enum Layer {
World,
Player,
Enemies,
}
文档
MSRV
当前最低支持的Rust版本是:1.60
在次要版本中可能会增加到一个更新的稳定版本。(但仅在必要时)
在主要版本中将会增加到最新的稳定版本。(即使不是必要的)
支持的Bevy版本
bevy | heron |
---|---|
0.8 | 4, 5 |
0.7 | 3 |
0.6 | 1, 2 |
0.5 | 0.4 - 0.13 |
0.4 | 0.1 - 0.3 |
此项目与bevy_rapier相比如何?
bevy_rapier 插件是一个非常好的选择,应该被考虑。
以下是两个项目之间的主要区别
heron
尝试提供一个更小、更简单的API,更易于使用。bevy_rapier
更完整且功能更强大,但稍微复杂一些。heron
专注于游戏。bevy_rapier
面向所有类型的物理模拟应用程序(包括游戏)。bevy_rapier
由 dimforge 维护,该公司也是rapier
的开发者。heron
也在积极维护,但它的演进速度不如bevy_rapier
快。
heron
可能更适合简单的游戏和游戏马拉松,在这些场景中,学习和使用的便利性尤为重要,而缺乏高级功能并不成问题。
bevy_rapier
可能更适合大型/复杂游戏和其他类型的物理模拟,在这些情况下,学习/使用更全面/复杂的 API 可能更好。
贡献 / 联系
您可以在此处打开问题/讨论,或者在 bevy discord 中与我(Jomag#2675
)讨论。
查看如何贡献
依赖关系
约 16-34MB
约 538K SLoC