From 805a74c1e4e487c1fabafc57858cd591e6dfed9d Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sun, 20 Jan 2008 15:19:30 +0000 Subject: fixed collision bug with player <-> player --- src/game/g_game.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/game/g_game.cpp') diff --git a/src/game/g_game.cpp b/src/game/g_game.cpp index 4befc33e..66da6295 100644 --- a/src/game/g_game.cpp +++ b/src/game/g_game.cpp @@ -318,13 +318,14 @@ void player_core::tick() vec2 dir = normalize(pos - p->pos); if(d < phys_size*1.25f && d > 1.0f) { - float a = phys_size*1.25f - d; + float a = (phys_size*1.45f - d); // make sure that we don't add excess force by checking the // direction against the current velocity vec2 veldir = normalize(vel); float v = 1-(dot(veldir, dir)+1)/2; - vel = vel + dir*a*v; + vel = vel + dir*a*(v*0.75f); + vel = vel * 0.85f; } // handle hook influence @@ -345,6 +346,10 @@ void player_core::tick() } } } + + // clamp the velocity to something sane + if(length(vel) > 100.0f) + vel = normalize(vel) * 100.0f; } void player_core::move() -- cgit 1.4.1