mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
New air speed cap behavior
- Lowered from 75 units to 50 units - Added easing to make the shift in speed feel natural - (Also I'm now pretty sure it didn't actually work before...?!)
This commit is contained in:
parent
eb5dc6a040
commit
20e5d59ae4
2 changed files with 13 additions and 11 deletions
|
|
@ -2289,9 +2289,6 @@ fixed_t K_3dKartMovement(player_t *player, boolean onground, fixed_t forwardmove
|
||||||
newspeed = minspeed;
|
newspeed = minspeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!P_IsObjectOnGround(player->mo) && newspeed > 75*mapobjectscale)
|
|
||||||
newspeed = 75*mapobjectscale;
|
|
||||||
|
|
||||||
finalspeed = newspeed - oldspeed;
|
finalspeed = newspeed - oldspeed;
|
||||||
|
|
||||||
// forwardmove is:
|
// forwardmove is:
|
||||||
|
|
|
||||||
21
src/p_user.c
21
src/p_user.c
|
|
@ -4691,13 +4691,6 @@ static void P_3dMovement(player_t *player)
|
||||||
//movepushforward = cmd->forwardmove * (thrustfactor * acceleration);
|
//movepushforward = cmd->forwardmove * (thrustfactor * acceleration);
|
||||||
movepushforward = K_3dKartMovement(player, onground, cmd->forwardmove);
|
movepushforward = K_3dKartMovement(player, onground, cmd->forwardmove);
|
||||||
|
|
||||||
// allow very small movement while in air for gameplay
|
|
||||||
if (!onground)
|
|
||||||
movepushforward >>= 2; // proper air movement
|
|
||||||
|
|
||||||
// don't need to account for scale here with kart accel code
|
|
||||||
//movepushforward = FixedMul(movepushforward, player->mo->scale);
|
|
||||||
|
|
||||||
if (player->mo->movefactor != FRACUNIT) // Friction-scaled acceleration...
|
if (player->mo->movefactor != FRACUNIT) // Friction-scaled acceleration...
|
||||||
movepushforward = FixedMul(movepushforward, player->mo->movefactor);
|
movepushforward = FixedMul(movepushforward, player->mo->movefactor);
|
||||||
|
|
||||||
|
|
@ -4761,6 +4754,18 @@ static void P_3dMovement(player_t *player)
|
||||||
|
|
||||||
player->mo->momx += totalthrust.x;
|
player->mo->momx += totalthrust.x;
|
||||||
player->mo->momy += totalthrust.y;
|
player->mo->momy += totalthrust.y;
|
||||||
|
|
||||||
|
if (!onground)
|
||||||
|
{
|
||||||
|
fixed_t airspeedcap = (50*mapobjectscale);
|
||||||
|
fixed_t speed = R_PointToDist2(0, 0, player->mo->momx, player->mo->momy);
|
||||||
|
if (speed > airspeedcap)
|
||||||
|
{
|
||||||
|
fixed_t newspeed = speed - ((speed - airspeedcap) / 32);
|
||||||
|
player->mo->momx = FixedMul(FixedDiv(player->mo->momx, speed), newspeed);
|
||||||
|
player->mo->momy = FixedMul(FixedDiv(player->mo->momy, speed), newspeed);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Time to ask three questions:
|
// Time to ask three questions:
|
||||||
|
|
@ -4777,7 +4782,7 @@ static void P_3dMovement(player_t *player)
|
||||||
if (newMagnitude > K_GetKartSpeed(player, true)) //topspeed)
|
if (newMagnitude > K_GetKartSpeed(player, true)) //topspeed)
|
||||||
{
|
{
|
||||||
fixed_t tempmomx, tempmomy;
|
fixed_t tempmomx, tempmomy;
|
||||||
if (oldMagnitude > K_GetKartSpeed(player, true) && onground) // SRB2Kart: onground check for air speed cap
|
if (oldMagnitude > K_GetKartSpeed(player, true))
|
||||||
{
|
{
|
||||||
if (newMagnitude > oldMagnitude)
|
if (newMagnitude > oldMagnitude)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue