|
@@ -1391,9 +1391,13 @@ void CharacterBody2D::_move_and_slide_floating(double p_delta) {
|
|
first_slide = false;
|
|
first_slide = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+void CharacterBody2D::apply_floor_snap() {
|
|
|
|
+ _apply_floor_snap();
|
|
|
|
+}
|
|
|
|
|
|
-void CharacterBody2D::_snap_on_floor(bool p_was_on_floor, bool p_vel_dir_facing_up, bool p_wall_as_floor) {
|
|
|
|
- if (on_floor || !p_was_on_floor || p_vel_dir_facing_up) {
|
|
|
|
|
|
+// Method that avoids the p_wall_as_floor parameter for the public method.
|
|
|
|
+void CharacterBody2D::_apply_floor_snap(bool p_wall_as_floor) {
|
|
|
|
+ if (on_floor) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1428,6 +1432,14 @@ void CharacterBody2D::_snap_on_floor(bool p_was_on_floor, bool p_vel_dir_facing_
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void CharacterBody2D::_snap_on_floor(bool p_was_on_floor, bool p_vel_dir_facing_up, bool p_wall_as_floor) {
|
|
|
|
+ if (on_floor || !p_was_on_floor || p_vel_dir_facing_up) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ _apply_floor_snap(p_wall_as_floor);
|
|
|
|
+}
|
|
|
|
+
|
|
bool CharacterBody2D::_on_floor_if_snapped(bool p_was_on_floor, bool p_vel_dir_facing_up) {
|
|
bool CharacterBody2D::_on_floor_if_snapped(bool p_was_on_floor, bool p_vel_dir_facing_up) {
|
|
if (up_direction == Vector2() || on_floor || !p_was_on_floor || p_vel_dir_facing_up) {
|
|
if (up_direction == Vector2() || on_floor || !p_was_on_floor || p_vel_dir_facing_up) {
|
|
return false;
|
|
return false;
|
|
@@ -1699,6 +1711,7 @@ void CharacterBody2D::_notification(int p_what) {
|
|
|
|
|
|
void CharacterBody2D::_bind_methods() {
|
|
void CharacterBody2D::_bind_methods() {
|
|
ClassDB::bind_method(D_METHOD("move_and_slide"), &CharacterBody2D::move_and_slide);
|
|
ClassDB::bind_method(D_METHOD("move_and_slide"), &CharacterBody2D::move_and_slide);
|
|
|
|
+ ClassDB::bind_method(D_METHOD("apply_floor_snap"), &CharacterBody2D::apply_floor_snap);
|
|
|
|
|
|
ClassDB::bind_method(D_METHOD("set_velocity", "velocity"), &CharacterBody2D::set_velocity);
|
|
ClassDB::bind_method(D_METHOD("set_velocity", "velocity"), &CharacterBody2D::set_velocity);
|
|
ClassDB::bind_method(D_METHOD("get_velocity"), &CharacterBody2D::get_velocity);
|
|
ClassDB::bind_method(D_METHOD("get_velocity"), &CharacterBody2D::get_velocity);
|