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

Dynamic

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.

Static

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.

Kinematic

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.

Sensor

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]

#[must_use]
pub fn can_have_velocity(self) -> bool
[src]

Returns true if this body type can be moved by Velocity

Trait Implementations

impl Clone for BodyType[src]

impl Copy for BodyType[src]

impl Debug for BodyType[src]

impl Default for BodyType[src]

impl Eq for BodyType[src]

impl GetTypeRegistration for BodyType[src]

impl PartialEq<BodyType> for BodyType[src]

impl Reflect for BodyType[src]

impl StructuralEq for BodyType[src]

impl StructuralPartialEq for BodyType[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Any for T where
    T: Any

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CloneAny for T where
    T: Any + Clone

impl<T> Component for T where
    T: 'static + Send + Sync

impl<T> Downcast for T where
    T: Any

impl<T> DowncastSync for T where
    T: Any + Send + Sync

impl<T> DynEq for T where
    T: Any + Eq

impl<T> From<T> for T[src]

impl<T> FromWorld for T where
    T: Default

impl<T> GetPath for T where
    T: Reflect, 

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> TypeData for T where
    T: 'static + Send + Sync + Clone

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,