Skip to content
Snippets Groups Projects
Commit c95ea0f4 authored by fheinrich's avatar fheinrich
Browse files

Cleaned and commented player movement

parent abe51c28
No related branches found
No related tags found
1 merge request!89Resolve "simple pathfinding"
Pipeline #48890 failed
...@@ -193,47 +193,37 @@ class Movement: ...@@ -193,47 +193,37 @@ class Movement:
updated_movement * (self.player_movement_speed * d_time) updated_movement * (self.player_movement_speed * d_time)
) )
# check if players collided with counters through movement or through being pushed
( (
collided, collided,
relevant_axes, relevant_axes,
nearest_counter_to_player, nearest_counter_to_player,
) = self.get_counter_collisions(new_targeted_positions) ) = self.get_counter_collisions(new_targeted_positions)
new_targeted_positions[collided] = player_positions[collided]
# If collided, check if the players could still move along the axis, starting with x
# This leads to players beeing able to slide along counters, which feels alot nicer.
projected_x = updated_movement.copy() projected_x = updated_movement.copy()
projected_x[collided, 1] = 0 projected_x[collided, 1] = 0
new_targeted_positions[collided] = player_positions[collided] + ( new_targeted_positions[collided] = player_positions[collided] + (
projected_x[collided] * (self.player_movement_speed * d_time) projected_x[collided] * (self.player_movement_speed * d_time)
) )
# checking collisions again
( (
collided, collided,
relevant_axes, relevant_axes,
nearest_counter_to_player, nearest_counter_to_player,
) = self.get_counter_collisions(new_targeted_positions) ) = self.get_counter_collisions(new_targeted_positions)
new_targeted_positions[collided] = player_positions[collided] new_targeted_positions[collided] = player_positions[collided]
# and now y axis collisions
projected_y = updated_movement.copy() projected_y = updated_movement.copy()
projected_y[collided, 0] = 0 projected_y[collided, 0] = 0
new_targeted_positions[collided] = player_positions[collided] + ( new_targeted_positions[collided] = player_positions[collided] + (
projected_y[collided] * (self.player_movement_speed * d_time) projected_y[collided] * (self.player_movement_speed * d_time)
) )
new_positions = new_targeted_positions new_positions = new_targeted_positions
# # Check if sliding against counters is possible
# for idx, player in enumerate(player_positions): # Check collisions with counters a final time, now absolute with no sliding possible.
# axis = relevant_axes[idx] # Players should never be able to enter counters this way.
# if collided[idx]:
# # collide with counter left or top
# if nearest_counter_to_player[idx][axis] > 0:
# updated_movement[idx, axis] = np.max(
# [updated_movement[idx, axis], 0]
# )
# # collide with counter right or bottom
# if nearest_counter_to_player[idx][axis] < 0:
# updated_movement[idx, axis] = np.min(
# [updated_movement[idx, axis], 0]
# )
# Check collisions with counters again, now absolute with no sliding possible
( (
collided, collided,
relevant_axes, relevant_axes,
...@@ -241,7 +231,7 @@ class Movement: ...@@ -241,7 +231,7 @@ class Movement:
) = self.get_counter_collisions(new_positions) ) = self.get_counter_collisions(new_positions)
new_positions[collided] = player_positions[collided] new_positions[collided] = player_positions[collided]
# Collisions player world borders # Collisions of players with world borders
new_positions = np.clip( new_positions = np.clip(
new_positions, new_positions,
self.world_borders_lower + self.player_radius, self.world_borders_lower + self.player_radius,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment