gizmo_physics_core/components/
character.rs1use gizmo_math::Vec3;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5pub struct CharacterController {
6 pub speed: f32,
7 pub jump_speed: f32,
8 pub gravity: f32,
9 pub max_slope_angle: f32, pub slope_slide_speed: f32,
11 pub step_height: f32,
12
13 #[serde(skip)]
14 pub is_grounded: bool,
15
16 pub target_velocity: Vec3, pub coyote_time: f32,
19 #[serde(skip)]
20 pub coyote_timer: f32,
21
22 pub jump_buffer_time: f32,
23 #[serde(skip)]
24 pub jump_buffer_timer: f32,
25}
26
27impl Default for CharacterController {
28 fn default() -> Self {
29 Self {
30 speed: 5.0,
31 jump_speed: 5.0,
32 gravity: 9.81,
33 max_slope_angle: 45.0_f32.to_radians(),
34 slope_slide_speed: 10.0,
35 step_height: 0.3,
36 is_grounded: false,
37 target_velocity: Vec3::ZERO,
38 coyote_time: 0.1,
39 coyote_timer: 0.0,
40 jump_buffer_time: 0.1,
41 jump_buffer_timer: 0.0,
42 }
43 }
44}
45
46gizmo_core::impl_component!(CharacterController);