Eu tenho uma malha com um ConvexDecomposition Collider usando bevy_rapier3d
.
Como posso descobrir a massa que o rapier calcula para este colisor?
Meu código é mais ou menos assim:
fn asset_loaded(
mut commands: Commands,
my_object: Query<(Entity, &Handle<Mesh>), With<MyObjectMarker>>,
meshes: Res<Assets<Mesh>>,
asset_server: Res<AssetServer>,
loaded: Local<bool>,
){
if *loaded{
return;
}
let (my_entity, my_mesh) = my_object.single();
if asset_server.load_state(my_mesh) != LoadState::Loaded {
return;
}
let collider = Collider::from_bevy_mesh(
meshes.get(my_mesh).unwrap(),
&ComputedColliderShape::ConvexDecomposition(VHACDParameters::default()),
).unwrap();
// ??: how can i get the computed mass of the object here?
commands.get_entity(my_entity).unwrap().insert(collider);
*loaded = true;
}
Você pode usar a função
mass_properties
assim:Observe que você precisa especificar o
density
, se ainda não tiver feito isso. No exemplo acima está definido como1
.Caso você queira lidar com o caso geral em que você especificou
ColliderMassProperties
, você pode usar o seguinte: