From 6a63d13395f61e904b84b190f31c3168398545d7 Mon Sep 17 00:00:00 2001 From: Schrottkatze Date: Fri, 10 May 2024 20:00:31 +0200 Subject: [PATCH] clean up player grounding detection --- src/player.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/player.rs b/src/player.rs index e5654d7..4c053bf 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,6 +1,7 @@ use bevy::{ prelude::*, sprite::{MaterialMesh2dBundle, Mesh2dHandle}, + utils::{HashMap, HashSet}, }; use bevy_rapier2d::prelude::*; @@ -46,19 +47,17 @@ pub fn player_ground_collision( mut collision_events: EventReader, ) { let (p, mut player) = player.single_mut(); + let scene_objs = scene_objs.iter().collect::>(); + for collision_event in collision_events.read() { match collision_event { CollisionEvent::Started(e1, e2, _) => { - if (e1 == &p && scene_objs.iter().any(|obj| *e2 == obj)) - || (e2 == &p && scene_objs.iter().any(|obj| *e1 == obj)) - { + if (e1 == &p && scene_objs.contains(e2)) || (e2 == &p && scene_objs.contains(e1)) { player.grounded = true; } } CollisionEvent::Stopped(e1, e2, _) => { - if (e1 == &p && scene_objs.iter().any(|obj| *e2 == obj)) - || (e2 == &p && scene_objs.iter().any(|obj| *e1 == obj)) - { + if (e1 == &p && scene_objs.contains(e2)) || (e2 == &p && scene_objs.contains(e1)) { player.grounded = false; } } @@ -91,7 +90,7 @@ pub fn move_player( if kb_input.pressed(KeyCode::KeyW) && player.grounded { moved = true; - *vel = Velocity::linear(Vec2::new(0., 9. * METER)); + *vel = Velocity::linear(Vec2::new(0., 9. * METER)); // *vel = Velocity::linear(Vec2::new(0., 9.81 * METER)); }