diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index 5302f55a72d1270649efbac5324a94db791c9f6a..2c259a7f0e2952c443608ca4ff4f288a0860a559 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -247,6 +247,7 @@ class Environment: "player_speed_units_per_seconds" ] self.player_radius = self.environment_config["player_config"]["radius"] + self.player_interaction_range = self.environment_config["player_config"]["interaction_range"] progress_counter_classes = list( filter( @@ -663,8 +664,15 @@ class Environment: for idx, p in enumerate(self.players.values()): if not (new_positions[idx] == player_positions[idx]).all(): - p.turn(player_movement_vectors[idx]) - p.move_abs(new_positions[idx]) + p.pos = new_positions[idx] + p.perform_interact_stop() + + p.turn(player_movement_vectors[idx]) + + facing_distances = np.linalg.norm(p.facing_point - self.counter_positions, axis=1) + closest_idx = facing_distances.argmin(axis=0) + closest_counter = self.counters[facing_distances.argmin(axis=0)] + p.current_nearest_counter = closest_counter if facing_distances[closest_idx] <= self.player_interaction_range else None def add_player(self, player_name: str, pos: npt.NDArray = None): """Add a player to the environment. diff --git a/overcooked_simulator/player.py b/overcooked_simulator/player.py index c367561e98862425ecc1590087ef7deb982e608e..2a8f58a6905165af665dccee7ce3e45016273e6f 100644 --- a/overcooked_simulator/player.py +++ b/overcooked_simulator/player.py @@ -88,19 +88,7 @@ class Player: function of the environment""" self.current_movement = move_vector self.movement_until = move_until - - def move(self, movement: npt.NDArray[float]): - """Moves the player position by the given movement vector. - A unit direction vector multiplied by move_dist is added to the player position. - - Args: - movement: 2D-Vector of length 1 - """ - if self.interacting and np.any(movement): - self.perform_interact_stop() - self.pos += movement - if np.linalg.norm(movement) != 0: - self.turn(movement) + self.perform_interact_stop() def move_abs(self, new_pos: npt.NDArray[float]): """Overwrites the player location by the new_pos 2d-vector. Absolute movement.