10个版本 (5个破坏性更新)

0.6.0 2024年7月7日
0.5.0 2024年3月3日
0.4.1 2024年3月2日
0.4.0 2023年11月17日
0.1.0 2023年3月13日

#61 in 游戏开发

每月下载量 26次

MIT许可

180KB
3.5K SLoC

 

Bevy插件用于PhysX 5

PhysX 是由Nvidia开发的一个用C++编写的开源物理SDK。
这个crate是Bevy ECS和Rust 绑定之间的桥梁,由Embark Studios制作。

github docs.rs crates.io

入门

这里有一个示例片段,创建一个在固定地面上弹跳的球。

// this is similar to basic simulation example in rapier3d
use bevy::prelude::*;
use bevy_mod_physx::prelude::*;
use bevy_mod_physx::prelude::{Material, Shape}; // bevy prelude conflicts

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(PhysicsPlugins.set(
            PhysicsCore::new().with_pvd()
        ))
        .add_systems(Startup, setup_graphics)
        .add_systems(Startup, setup_physics)
        .insert_resource(DebugRenderSettings::enable())
        .run();
}

fn setup_graphics(mut commands: Commands) {
    // Add a camera so we can see the debug-render.
    commands.spawn(Camera3dBundle {
        transform: Transform::from_xyz(-3.0, 3.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y),
        ..Default::default()
    });
}

fn setup_physics(
    mut commands: Commands,
    mut physics: ResMut<Physics>,
    mut geometries: ResMut<Assets<Geometry>>,
    mut materials: ResMut<Assets<Material>>,
) {
    // Create the ground.
    commands.spawn((
        RigidBody::Static,
        Shape {
            geometry: geometries.add(Plane3d::default()),
            material: materials.add(Material::new(&mut physics, 0.5, 0.5, 0.6)),
            ..default()
        },
        SpatialBundle::from_transform(Transform::from_xyz(0.0, -2.0, 0.0)),
    ));

    // Create the bouncing ball.
    commands.spawn((
        RigidBody::Dynamic,
        Shape {
            geometry: geometries.add(Sphere::new(0.5)),
            material: materials.add(Material::new(&mut physics, 0.5, 0.5, 0.6)),
            ..default()
        },
        SpatialBundle::from_transform(Transform::from_xyz(0.0, 4.0, 0.0)),
    ));
}

兼容性/先例

发布 0.6.x Bevy 0.14 PhysX 5
0.5.x Bevy 0.13 PhysX 5
0.4.x Bevy 0.12 PhysX 5
0.2.x - 0.3.x Bevy 0.11 PhysX 5
git标签 git:a21b570 Bevy 0.11 PhysX 4
(未发布) git:43ae89e Bevy 0.10 PhysX 5
git:8f66a99 Bevy 0.10 PhysX 4
其他crate bevy_mod_physx v0.1.0 Bevy 0.10 已弃用
bevy_prototype_physx Bevy 0.2-0.5 未知
bevy_physx 从未存在

注意:您可以找到此crate的PhysX 4版本。它存在是因为PhysX 5绑定没有车辆API。它不受官方支持也未被发布到crates.io,未来可能会被移除。

依赖关系

~31–70MB
~1M SLoC