diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index 8c90a96e3af524b803095df32b2a73adb82bf413..c6e8978c972e7b2f84df94f7a505fb39b1e73a11 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -414,6 +414,7 @@ class Environment: ], dtype=float, ) + number_players = len(player_positions) targeted_positions = player_positions + ( player_movement_vectors * (self.player_movement_speed * d_time) @@ -428,11 +429,7 @@ class Environment: player_positions[:, np.newaxis, :] - player_positions[np.newaxis, :, :] ) collision_idxs = distances_players_after_scipy < (2 * self.player_radius) - eye_idxs = np.eye( - distances_players_after_scipy.shape[0], - distances_players_after_scipy.shape[1], - dtype=bool, - ) + eye_idxs = np.eye(number_players, number_players, dtype=bool) collision_idxs[eye_idxs] = False # Player push players around @@ -497,11 +494,10 @@ class Environment: # new_positions[collision_idxs] = player_positions[collision_idxs] # Collisions player world borders - new_positions = np.max( - [new_positions, self.world_borders_lower + self.player_radius], axis=0 - ) - new_positions = np.min( - [new_positions, self.world_borders_upper - self.player_radius], axis=0 + new_positions = np.clip( + new_positions, + self.world_borders_lower + self.player_radius, + self.world_borders_upper - self.player_radius, ) for idx, p in enumerate(self.players.values()):