From 4c29543e44deb7a327b21b0af6a85a92e83ff103 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Wed, 10 Mar 2021 11:53:11 -0500 Subject: Fixed improperly calculated sprite hitboxes Also made sprite hitboxes bigger. #15 --- src/transform_system.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/transform_system.cpp') diff --git a/src/transform_system.cpp b/src/transform_system.cpp index 055f546..4ed47c0 100644 --- a/src/transform_system.cpp +++ b/src/transform_system.cpp @@ -61,9 +61,9 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 vec2i horizMovement = { newLoc.x(), curLoc.y() }; vec2i oldColUL = curLoc + sprite.collisionOffset; - vec2i oldColDR = oldColUL + sprite.collisionSize; + vec2i oldColDR = oldColUL + sprite.collisionSize - vec2i{1,1}; vec2i newColUL = horizMovement + sprite.collisionOffset; - vec2i newColDR = newColUL + sprite.collisionSize; + vec2i newColDR = newColUL + sprite.collisionSize - vec2i{1,1}; vec2i oldTileUL = oldColUL / map.getTileSize(); vec2i newTileUL = newColUL / map.getTileSize(); @@ -89,8 +89,8 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 } if (!result.horiz.blocked && enclosureZone) { - if (oldColDR.x() <= enclosureZone->dr.x() && - newColDR.x() > enclosureZone->dr.x()) { + if (oldColDR.x() <= enclosureZone->dr.x()-1 && + newColDR.x() > enclosureZone->dr.x()-1) { result.horiz.blocked = true; result.horiz.dir = Direction::right; } @@ -168,9 +168,9 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 } oldColUL = effectiveCurLoc + sprite.collisionOffset; - oldColDR = oldColUL + sprite.collisionSize; + oldColDR = oldColUL + sprite.collisionSize - vec2i{1,1}; newColUL = vertMovement + sprite.collisionOffset; - newColDR = newColUL + sprite.collisionSize; + newColDR = newColUL + sprite.collisionSize - vec2i{1,1}; oldTileUL = oldColUL / map.getTileSize(); newTileUL = newColUL / map.getTileSize(); @@ -191,8 +191,8 @@ CollisionResult TransformSystem::checkCollision(int spriteId, vec2i curLoc, vec2 } if (!result.vert.blocked && enclosureZone) { - if (oldColDR.y() <= enclosureZone->dr.y() && - newColDR.y() > enclosureZone->dr.y()) { + if (oldColDR.y() <= enclosureZone->dr.y()-1 && + newColDR.y() > enclosureZone->dr.y()-1) { result.vert.blocked = true; result.vert.dir = Direction::down; } @@ -268,7 +268,7 @@ CharacterMedium TransformSystem::getMediumAtPosition(int spriteId, vec2i newLoc) const Map& map = game_.getMap(); vec2i newColUL = newLoc + sprite.collisionOffset; - vec2i newColDR = newColUL + sprite.collisionSize; + vec2i newColDR = newColUL + sprite.collisionSize - vec2i{1,1}; vec2i newTileUL = newColUL / map.getTileSize(); vec2i newTileDR = newColDR / map.getTileSize(); -- cgit 1.4.1