summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoredGuy <osome3717@gmail.com>2025-09-05 09:13:02 +0300
committerBoredGuy <osome3717@gmail.com>2025-09-05 09:13:02 +0300
commit20f5d0944c12d1569d4a875782871f724463b8ed (patch)
tree3c11e61d4f6595dd0da337d709ff84172e9cbca9
parent8886377977fbc79bb30310543e2978ff0c7febfe (diff)
Small physics bugfix (And MFW MoveAndSlide is something else)master
-rw-r--r--include/physics.h2
-rw-r--r--src/physics.c7
-rw-r--r--src/player.c2
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);
}