From 020cb4dbfa23a2f06c14863b6c6d70ca540d14b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Schr=C3=B6der?= <fschroeder@techfak.uni-bielefeld.de> Date: Mon, 5 Feb 2024 15:25:11 +0100 Subject: [PATCH] Update player movement and collision logic The principal updates in this commit focus on modifying the player movement mechanism and refining collision detection logic in the Overcooked game simulation. The changes were made both in the game layout and the player's relation to the environment, by adjusting the player position coordinates and enhancing the collision parameters. Debugging prints were added for better tracking. --- .../game_content/layouts/empty.layout | 4 +- .../overcooked_environment.py | 52 ++++++++++--------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/overcooked_simulator/game_content/layouts/empty.layout b/overcooked_simulator/game_content/layouts/empty.layout index e0147e33..025527cb 100644 --- a/overcooked_simulator/game_content/layouts/empty.layout +++ b/overcooked_simulator/game_content/layouts/empty.layout @@ -1,8 +1,8 @@ _______ _______ _______ -__#____ -__#P___ +_______ +___PA__ _______ _______ _______ diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index c51de60a..7621761e 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -415,6 +415,7 @@ class Environment: ], dtype=float, ) + print(player_positions, ".") targeted_positions = player_positions + ( player_movement_vectors * (self.player_movement_speed * d_time) @@ -456,47 +457,48 @@ class Environment: ] nearest_counter_to_player = closest_counter_positions - new_positions - print(nearest_counter_to_player) + # print(nearest_counter_to_player) - collided = np.min(counter_distances, axis=1) - 0.5 < self.player_radius + collided = np.min(counter_distances, axis=1) < self.player_radius + 0.5 # print(" COLLIDED", collided) # print("CLOSEST_COUNTER", closest_counter_positions) - relevant_axes = nearest_counter_to_player.argmax(axis=1) + relevant_axes = np.abs(nearest_counter_to_player).argmax(axis=1) relevant_values = nearest_counter_to_player.max(axis=1) - new_positions = player_positions + ( - updated_movement * (self.player_movement_speed * d_time) - ) - for idx, player in enumerate(player_positions): axis = relevant_axes[idx] if collided[idx]: # print("before", updated_movement) - if relevant_values[idx] - 0.5 > 0: + if nearest_counter_to_player[idx][axis] < 0: # print("settings more") - new_positions[idx, axis] = np.min( - [ - player_positions[idx, axis], - closest_counter_positions[idx, axis], - ] - ) - - # updated_movement[idx, axis] = np.max(updated_movement[idx, axis], 0) - if relevant_values[idx] + 0.5 < 0: + # new_positions[idx, axis] = np.min( + # [ + # player_positions[idx, axis], + # closest_counter_positions[idx, axis], + # ] + # ) + + updated_movement[idx, axis] = max(updated_movement[idx, axis], 0) + if nearest_counter_to_player[idx][axis] > 0: # print("settings less") - new_positions[idx, axis] = np.max( - [ - player_positions[idx, axis], - closest_counter_positions[idx, axis], - ] - ) - - # updated_movement[idx, axis] = np.min(updated_movement[idx, axis], 0) + # new_positions[idx, axis] = np.max( + # [ + # player_positions[idx, axis], + # closest_counter_positions[idx, axis], + # ] + # ) + + updated_movement[idx, axis] = min(updated_movement[idx, axis], 0) # print("after", updated_movement) # new_positions[collided] = player_positions[collided] + print(updated_movement, "-") + new_positions = player_positions + ( + updated_movement * (self.player_movement_speed * d_time) + ) + print(new_positions, "<") # new_positions[min_counter_distances < self.player_radius] = player_positions[min_counter_distances < self.player_radius] -- GitLab