Move_to_contact: handle allowed overlap correctly
This commit is contained in:
parent
c5c677320b
commit
84b7a09383
@ -88,8 +88,9 @@ game_collision game_collision_move_to_contact(
|
||||
// figure out what tile we're still in
|
||||
sys_i32 tile_x0 = round_down(body_x0, TILE_SZ_MICROPIXEL);
|
||||
sys_i32 tile_y0 = round_down(body_y0, TILE_SZ_MICROPIXEL);
|
||||
sys_i32 tile_x1 = round_up(body_x1, TILE_SZ_MICROPIXEL);
|
||||
sys_i32 tile_y1 = round_up(body_y1, TILE_SZ_MICROPIXEL);
|
||||
sys_i32 max_overlap = PIXEL_SZ_MICROPIXEL - 1;
|
||||
sys_i32 tile_x1 = round_up(body_x1 - max_overlap, TILE_SZ_MICROPIXEL) + max_overlap;
|
||||
sys_i32 tile_y1 = round_up(body_y1 - max_overlap, TILE_SZ_MICROPIXEL) + max_overlap;
|
||||
|
||||
// but we want the _next_ tile
|
||||
if (tile_x0 == body_x0) { tile_x0 -= TILE_SZ_MICROPIXEL; }
|
||||
|
@ -43,12 +43,12 @@ void game_player_update() {
|
||||
game_player_dx,
|
||||
game_player_dy
|
||||
);
|
||||
|
||||
|
||||
if (collision.collided_x) { game_player_dx = 0; }
|
||||
if (collision.collided_y) { game_player_dy = 0; }
|
||||
|
||||
game_player_grounded = !game_collision_can_move(
|
||||
game_player_bbox, 0, PIXEL_SZ_MICROPIXEL
|
||||
game_player_bbox, 0, 1
|
||||
);
|
||||
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user