From 8b3e26667e428222c04e5632a418b1e26d8c9c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Sat, 8 May 2021 17:48:09 +0200 Subject: [PATCH] improve player movement --- code/modules/source/controllers.c | 4 ++-- code/modules/source/physics.c | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code/modules/source/controllers.c b/code/modules/source/controllers.c index 7890319..c483a0c 100644 --- a/code/modules/source/controllers.c +++ b/code/modules/source/controllers.c @@ -13,9 +13,9 @@ void MovementImpulse(ecs_iter_t *it) { for (int i = 0; i < it->count; i++) { double speed = PLR_MOVE_SPEED * (in[i].sprint ? PLR_MOVE_SPEED_MULT : 1.0); - if (zpl_abs(v[i].x) < speed) + if (zpl_abs(v[i].x) < speed && in[i].x) v[i].x = in[i].x*speed; - if (zpl_abs(v[i].y) < speed) + if (zpl_abs(v[i].y) < speed && in[i].y) v[i].y = in[i].y*speed; } } diff --git a/code/modules/source/physics.c b/code/modules/source/physics.c index ce0c3e4..cf9ef27 100644 --- a/code/modules/source/physics.c +++ b/code/modules/source/physics.c @@ -2,14 +2,13 @@ #include "world/world.h" #include "zpl.h" -#define PHY_WALK_DRAG 0.02 +#define PHY_WALK_DRAG 0.12 void MoveWalk(ecs_iter_t *it) { Position *p = ecs_column(it, Position, 1); Velocity *v = ecs_column(it, Velocity, 2); for (int i = 0; i < it->count; i++) { - // TODO: handle collisions p[i].x += v[i].x * it->delta_time; p[i].y += v[i].y * it->delta_time; v[i].x = zpl_lerp(v[i].x, 0.0f, PHY_WALK_DRAG); @@ -25,8 +24,8 @@ void HandleCollisions(ecs_iter_t *it) { // NOTE(zaklaus): world bounds { double w = (double)world_dim()/2.0; - p[i].x = zpl_clamp(p[i].x, -w, w); - p[i].y = zpl_clamp(p[i].y, -w, w); + p[i].x = zpl_clamp(p[i].x, -w+1, w-1); + p[i].y = zpl_clamp(p[i].y, -w+1, w-1); } } }