Enum heron_core::BodyType [−][src]
pub enum BodyType { Dynamic, Static, Kinematic, Sensor, }
Component that defines the type of rigid body.
Example
fn spawn(mut commands: Commands, mut materials: ResMut<Assets<ColorMaterial>>) { commands.spawn_bundle(todo!("Spawn your sprite/mesh, incl. at least a GlobalTransform")) .insert(Body::Sphere { radius: 1.0 }) // Make a body (is dynamic by default) .insert(BodyType::Static); // Make it static (so that it doesn't move and is not affected by forces like gravity) }
Variants
A dynamic body is normally affected by physic forces and affect the other bodies normally too.
This is the most “natural” type in the sense that, in real life, everything is dynamic.
It is the default type.
A static body is not affected by physic forces and doesn’t move. But it does affect the other bodies.
This effectively behaves like a dynamic body with infinite mass and zero velocity.
It is well suited for terrain and static obstacles.
A kinematic body is not moved by the physics engine. But it can have user-defined velocity.
It affects the other bodies normally but is not affected by them.
If the transform is updated, then a velocity will be automatically calculated, producing realistic interaction with other bodies.
It can also have a velocity be applied.
It is well-suited for moving platforms.
A sensor is not affected by physics forces and doesn’t affect other bodies either.
Other bodies will be able to penetrate the sensor. But it still participates in collision events.
A sensor is useful when we are only interested in collision events. One may, for example, add a sensor to detect when the player reaches a certain area.
Implementations
impl BodyType
[src]
impl BodyType
[src]#[must_use]pub fn can_have_velocity(self) -> bool
[src]
Returns true if this body type can be moved by Velocity
Trait Implementations
impl GetTypeRegistration for BodyType
[src]
impl GetTypeRegistration for BodyType
[src]fn get_type_registration() -> TypeRegistration
[src]
impl Reflect for BodyType
[src]
impl Reflect for BodyType
[src]fn type_name(&self) -> &str
[src]
fn any(&self) -> &dyn Any
[src]
fn any_mut(&mut self) -> &mut dyn Any
[src]
fn clone_value(&self) -> Box<dyn Reflect>
[src]
fn apply(&mut self, value: &dyn Reflect)
[src]
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
[src]
fn reflect_ref(&self) -> ReflectRef<'_>
[src]
fn reflect_mut(&mut self) -> ReflectMut<'_>
[src]
fn reflect_hash(&self) -> Option<u64>
[src]
fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
[src]
fn serializable(&self) -> Option<Serializable<'_>>
[src]
impl StructuralEq for BodyType
[src]
impl StructuralEq for BodyType
[src]impl StructuralPartialEq for BodyType
[src]
impl StructuralPartialEq for BodyType
[src]Auto Trait Implementations
impl RefUnwindSafe for BodyType
impl RefUnwindSafe for BodyType
impl UnwindSafe for BodyType
impl UnwindSafe for BodyType
Blanket Implementations
impl<T> Any for T where
T: Any,
impl<T> Any for T where
T: Any,
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
impl<T> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
pub fn from_world(_world: &mut World) -> T
impl<T> GetPath for T where
T: Reflect,
impl<T> GetPath for T where
T: Reflect,
pub fn path(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
pub fn path_mut(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
pub fn get_path<T>(
&'r self,
path: &'p str
) -> Result<&'r T, ReflectPathError<'p>> where
T: Reflect,
&'r self,
path: &'p str
) -> Result<&'r T, ReflectPathError<'p>> where
T: Reflect,
pub fn get_path_mut<T>(
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>> where
T: Reflect,
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>> where
T: Reflect,
impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,