From 283618a93573bf1794dce119bba3f0a4018f3c65 Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Tue, 19 Aug 2025 18:58:55 +0200 Subject: [PATCH] feat: Improved movements for the sprite --- src/sprites/move_sprites.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/sprites/move_sprites.c b/src/sprites/move_sprites.c index 4cbdcbb..653930e 100644 --- a/src/sprites/move_sprites.c +++ b/src/sprites/move_sprites.c @@ -6,13 +6,12 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/18 13:22:50 by kcolin #+# #+# */ -/* Updated: 2025/08/18 19:51:41 by tchampio ### ########.fr */ +/* Updated: 2025/08/18 23:04:15 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ #include "move_sprites.h" #include "sprite.h" -#include "../../libft/includes/libft.h" #include void move_sprites(t_cub3d_data *data) @@ -21,6 +20,8 @@ void move_sprites(t_cub3d_data *data) double dx; double dy; double dist; + double future_x; + double future_y; static double zombie_movement = MOVEMENT_SPEED / 1.5; i = 0; @@ -28,6 +29,8 @@ void move_sprites(t_cub3d_data *data) { if (data->sprite_list[i]->sprite_type == ZOMBIE) { + future_x = data->sprite_list[i]->x; + future_y = data->sprite_list[i]->y; dx = data->player.x - data->sprite_list[i]->x; dy = data->player.y - data->sprite_list[i]->y; dist = sqrt(dx * dx + dy * dy); @@ -35,8 +38,17 @@ void move_sprites(t_cub3d_data *data) { dx /= dist; dy /= dist; - data->sprite_list[i]->x += dx * zombie_movement * data->delta; - data->sprite_list[i]->y += dy * zombie_movement * data->delta; + future_x += dx * zombie_movement * data->delta; + future_y += dy * zombie_movement * data->delta; + if (data->map->map[(int)future_y][(int)data->sprite_list[i]->x] != '1') + data->sprite_list[i]->y = future_y; + if (data->map->map[(int)data->sprite_list[i]->y][(int)future_x] != '1') + data->sprite_list[i]->x = future_x; + } + if (dist < 0.4) + { + data->sprite_list[i]->x -= dx * zombie_movement * data->delta; + data->sprite_list[i]->y -= dy * zombie_movement * data->delta; } } i++;