From baa524c1a5d13b92584730fe7171e38afb43cb0c Mon Sep 17 00:00:00 2001 From: Nelson Earle Date: Tue, 23 Jan 2024 21:09:18 -0600 Subject: [PATCH 1/2] fix: sliding collision while moving left --- src/core/player/state/states/crouch.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/core/player/state/states/crouch.rs b/src/core/player/state/states/crouch.rs index c11ffc737a..4622f998f5 100644 --- a/src/core/player/state/states/crouch.rs +++ b/src/core/player/state/states/crouch.rs @@ -23,7 +23,8 @@ pub fn player_state_transition( &mut bodies, &mut transforms, )) { - let meta_handle = player_inputs.players[player_idx.0 as usize].selected_player; + let player_input = &player_inputs.players[player_idx.0 as usize]; + let meta_handle = player_input.selected_player; let meta = assets.get(meta_handle); // Reset the body size and position if we stop sliding @@ -33,7 +34,10 @@ pub fn player_state_transition( body.shape = ColliderShape::Rectangle { size: meta.body_size, }; - transform.translation += (meta.body_size.y - meta.slide_body_size.y) / 2.0; + let offset = (meta.body_size.y - meta.slide_body_size.y) / 2.0; + let direction = player_input.control.move_direction.x.signum(); + transform.translation.x += offset * direction; + transform.translation.y += offset; } } } @@ -69,7 +73,8 @@ pub fn handle_player_state( if state.current != *ID { continue; } - let meta_handle = player_inputs.players[player_idx.0 as usize].selected_player; + let player_input = &player_inputs.players[player_idx.0 as usize]; + let meta_handle = player_input.selected_player; let meta = assets.get(meta_handle); if body.velocity.x == 0.0 { @@ -79,7 +84,10 @@ pub fn handle_player_state( body.shape = ColliderShape::Rectangle { size: meta.body_size, }; - transform.translation += (meta.body_size.y - meta.slide_body_size.y) / 2.0; + let offset = (meta.body_size.y - meta.slide_body_size.y) / 2.0; + let direction = player_input.control.move_direction.x.signum(); + transform.translation.x += offset * direction; + transform.translation.y += offset; } } } else if let ColliderShape::Rectangle { size } = &body.shape { @@ -89,7 +97,9 @@ pub fn handle_player_state( body.shape = ColliderShape::Rectangle { size: meta.slide_body_size, }; - transform.translation -= (meta.body_size.y - meta.slide_body_size.y) / 2.0; + let offset = (meta.body_size.y - meta.slide_body_size.y) / 2.0; + transform.translation.x -= offset; + transform.translation.y -= offset; } } From 4561d05834df991a2834344bbadd89e8bd21c9a9 Mon Sep 17 00:00:00 2001 From: Nelson Earle Date: Tue, 23 Jan 2024 21:28:00 -0600 Subject: [PATCH 2/2] fix: use player state const --- src/core/elements/slippery_seaweed.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/elements/slippery_seaweed.rs b/src/core/elements/slippery_seaweed.rs index 54d2ac8d4c..38867dac6b 100644 --- a/src/core/elements/slippery_seaweed.rs +++ b/src/core/elements/slippery_seaweed.rs @@ -88,7 +88,7 @@ pub fn update( .actor_collisions(p_ent) .contains(&seaweed_ent) { - state.current = "core::incapacitated".into(); + state.current = *incapacitated::ID; continue; } }