bevy_tnua::builtins

Struct TnuaBuiltinJump

Source
pub struct TnuaBuiltinJump {
    pub height: Float,
    pub allow_in_air: bool,
    pub upslope_extra_gravity: Float,
    pub takeoff_extra_gravity: Float,
    pub takeoff_above_velocity: Float,
    pub fall_extra_gravity: Float,
    pub shorten_extra_gravity: Float,
    pub peak_prevention_at_upward_velocity: Float,
    pub peak_prevention_extra_gravity: Float,
    pub reschedule_cooldown: Option<Float>,
    pub input_buffer_time: Float,
}
Expand description

The basic jump action.

This action implements jump physics explained in https://youtu.be/hG9SzQxaCm8 and https://youtu.be/eeLPL3Y9jjA. Most of its fields have sane defaults - the only field that must be set is height, which controls the jump height.

The action must be fed for as long as the player holds the jump button. Once the action stops being fed, it’ll apply extra gravity to shorten the jump. If the game desires fixed height jumps instead (where the player cannot make lower jumps by tapping the jump button) shorten_extra_gravity should be set to 0.0.

Fields§

§height: Float

The height the character will jump to.

If shorten_extra_gravity is higher than 0.0, the character may stop the jump in the middle if the jump action is no longer fed (usually when the player releases the jump button) and the character may not reach its full jump height.

The jump height is calculated from the center of the character at float_height to the center of the character at the top of the jump. It does not mean the height from the ground. The float height is calculated by the inspecting the character’s current position and the basis’ displacement.

§allow_in_air: bool

Allow this action to start even if the character is not touching ground nor in coyote time.

§upslope_extra_gravity: Float

Extra gravity for breaking too fast jump from running up a slope.

When running up a slope, the character gets more jump strength to avoid slamming into the slope. This may cause the jump to be too high, so this value is used to brake it.

NOTE: This force will be added to the normal gravity.

§takeoff_extra_gravity: Float

Extra gravity for fast takeoff.

Without this, jumps feel painfully slow. Adding this will apply extra gravity until the vertical velocity reaches below takeoff_above_velocity, and increase the initial jump boost in order to compensate. This will make the jump feel more snappy.

§takeoff_above_velocity: Float

The range of upward velocity during takeoff_extra_gravity is applied.

To disable, set this to Float::INFINITY rather than zero.

§fall_extra_gravity: Float

Extra gravity for falling down after reaching the top of the jump.

NOTE: This force will be added to the normal gravity.

§shorten_extra_gravity: Float

Extra gravity for shortening a jump when the player releases the jump button.

NOTE: This force will be added to the normal gravity.

§peak_prevention_at_upward_velocity: Float

Used to decrease the time the character spends “floating” at the peak of the jump.

When the character’s upward velocity is above this value, peak_prevention_extra_gravity will be added to the gravity in order to shorten the float time.

This extra gravity is taken into account when calculating the initial jump speed, so the character is still supposed to reach its full jump height.

§peak_prevention_extra_gravity: Float

Extra gravity for decreasing the time the character spends at the peak of the jump.

NOTE: This force will be added to the normal gravity.

§reschedule_cooldown: Option<Float>

A duration, in seconds, after which the character would jump if the jump button was already pressed when the jump became available.

The duration is measured from the moment the jump became available - not from the moment the jump button was pressed.

When set to None, the character will not jump no matter how long the player holds the jump button.

If the jump button is held but the jump input is still buffered (see input_buffer_time), this setting will have no effect because the character will simply jump immediately.

§input_buffer_time: Float

A duration, in seconds, where a player can press a jump button before a jump becomes possible (typically when a character is still in the air and about the land) and the jump action would still get registered and be executed once the jump is possible.

Trait Implementations§

Source§

impl Clone for TnuaBuiltinJump

Source§

fn clone(&self) -> TnuaBuiltinJump

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TnuaBuiltinJump

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TnuaBuiltinJump

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl TnuaAction for TnuaBuiltinJump

Source§

const NAME: &'static str = "TnuaBuiltinJump"

The default name of the action. Read more
Source§

const VIOLATES_COYOTE_TIME: bool = true

Set this to true for actions that may launch the character into the air.
Source§

type State = TnuaBuiltinJumpState

Data that the action can persist between frames. Read more
Source§

fn initiation_decision( &self, ctx: TnuaActionContext<'_>, being_fed_for: &Stopwatch, ) -> TnuaActionInitiationDirective

Decides whether the action can start. Read more
Source§

fn apply( &self, state: &mut Self::State, ctx: TnuaActionContext<'_>, lifecycle_status: TnuaActionLifecycleStatus, motor: &mut TnuaMotor, ) -> TnuaActionLifecycleDirective

This is where the action affects the character’s motion. Read more
Source§

fn proximity_sensor_cast_range(&self) -> Float

A value to configure the range of the ground proximity sensor according to the action’s needs.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

Source§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

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

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromWorld for T
where T: Default,

Source§

fn from_world(_world: &mut World) -> T

Creates Self using default().

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

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

Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ConditionalSend for T
where T: Send,

Source§

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

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,