Function avian3d::collision::contact_query::distance
source · pub fn distance(
collider1: &Collider,
position1: impl Into<Position>,
rotation1: impl Into<Rotation>,
collider2: &Collider,
position2: impl Into<Position>,
rotation2: impl Into<Rotation>
) -> Result<Scalar, UnsupportedShape>
Expand description
Computes the minimum distance separating two Collider
s.
Returns 0.0
if the colliders are touching or penetrating, and Err(UnsupportedShape)
if either of the collider shapes is not supported.
§Example
use avian3d::prelude::{contact_query::distance, *};
use bevy::prelude::*;
let collider1 = Collider::sphere(0.5);
let collider2 = Collider::cuboid(1.0, 1.0, 1.0);
// The distance is 1.0
assert_eq!(
distance(
&collider1,
Vec3::default(),
Quat::default(),
&collider2,
Vec3::X * 2.0,
Quat::default(),
)
.expect("Unsupported collider shape"),
1.0,
);
// The colliders are penetrating, so the distance is 0.0
assert_eq!(
distance(
&collider1,
Vec3::default(),
Quat::default(),
&collider2,
Vec3::default(),
Quat::default(),
)
.expect("Unsupported collider shape"),
0.0,
);