diff options
author | BoredGuy <osome3717@gmail.com> | 2025-09-05 09:13:02 +0300 |
---|---|---|
committer | BoredGuy <osome3717@gmail.com> | 2025-09-05 09:13:02 +0300 |
commit | 20f5d0944c12d1569d4a875782871f724463b8ed (patch) | |
tree | 3c11e61d4f6595dd0da337d709ff84172e9cbca9 | |
parent | 8886377977fbc79bb30310543e2978ff0c7febfe (diff) |
Small physics bugfix (And MFW MoveAndSlide is something else)master
-rw-r--r-- | include/physics.h | 2 | ||||
-rw-r--r-- | src/physics.c | 7 | ||||
-rw-r--r-- | src/player.c | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/include/physics.h b/include/physics.h index 8c50fb4..5079293 100644 --- a/include/physics.h +++ b/include/physics.h @@ -2,4 +2,4 @@ #include "game.h" -void MoveAndSlide(Entity* e, float dt); +void MoveAndStop(Entity* e, float dt); diff --git a/src/physics.c b/src/physics.c index bc93a29..6781c41 100644 --- a/src/physics.c +++ b/src/physics.c @@ -4,9 +4,10 @@ extern Game game; -void MoveAndSlide(Entity* e, float deltaTime) { +void MoveAndStop(Entity* e, float deltaTime) { Vector2 velocity = e->velocity; Rectangle physicsCollider = GetPhysicsColliderGlobal(e); + Rectangle pastCollider = physicsCollider; physicsCollider.x += e->velocity.x * deltaTime; for (int i = 0; i < MAX_ENTITY_COUNT; i++) { @@ -41,8 +42,8 @@ void MoveAndSlide(Entity* e, float deltaTime) { } } - e->position.x = physicsCollider.x; - e->position.y = physicsCollider.y; + e->position.x += (physicsCollider.x - pastCollider.x); + e->position.y += (physicsCollider.y - pastCollider.y); } #ifdef BEATEMUP_DEBUG diff --git a/src/player.c b/src/player.c index 97b269f..20aa62a 100644 --- a/src/player.c +++ b/src/player.c @@ -89,7 +89,7 @@ void UpdatePlayer(Entity* player, float deltaTime) { HandleInput(player); HandleMovement(player); FlipBody(player); - MoveAndSlide(player, deltaTime); + MoveAndStop(player, deltaTime); UpdateAnimation(player, deltaTime); CameraFollow(player); } |