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()):