Smoother ceiling clipping

- Apply some gravity immediately.
- Play the bump (like against walls) effect.
This commit is contained in:
James R 2021-11-28 20:23:03 -08:00
parent 0fad5f5a23
commit 72ded01ac8
4 changed files with 23 additions and 8 deletions

View file

@ -2077,6 +2077,18 @@ void K_SpawnInvincibilitySpeedLines(mobj_t *mo)
fast->destscale = 6*((mo->player->invincibilitytimer/TICRATE)*FRACUNIT)/8;
}
void K_SpawnBumpEffect(mobj_t *mo)
{
mobj_t *fx = P_SpawnMobj(mo->x, mo->y, mo->z, MT_BUMP);
if (mo->eflags & MFE_VERTICALFLIP)
fx->eflags |= MFE_VERTICALFLIP;
else
fx->eflags &= ~MFE_VERTICALFLIP;
fx->scale = mo->scale;
S_StartSound(mo, sfx_s3k49);
}
static SINT8 K_GlanceAtPlayers(player_t *glancePlayer)
{
const fixed_t maxdistance = FixedMul(1280 * mapobjectscale, K_GetKartGameSpeedScalar(gamespeed));

View file

@ -51,6 +51,7 @@ void K_SpawnDriftBoostClip(player_t *player);
void K_SpawnDriftBoostClipSpark(mobj_t *clip);
void K_SpawnNormalSpeedLines(player_t *player);
void K_SpawnInvincibilitySpeedLines(mobj_t *mo);
void K_SpawnBumpEffect(mobj_t *mo);
void K_KartMoveAnimation(player_t *player);
void K_KartPlayerHUDUpdate(player_t *player);
void K_KartPlayerThink(player_t *player, ticcmd_t *cmd);

View file

@ -3695,14 +3695,7 @@ void P_BouncePlayerMove(mobj_t *mo)
}
else
{
mobj_t *fx = P_SpawnMobj(mo->x, mo->y, mo->z, MT_BUMP);
if (mo->eflags & MFE_VERTICALFLIP)
fx->eflags |= MFE_VERTICALFLIP;
else
fx->eflags &= ~MFE_VERTICALFLIP;
fx->scale = mo->scale;
S_StartSound(mo, sfx_s3k49);
K_SpawnBumpEffect(mo);
}
P_PlayerHitBounceLine(bestslideline);

View file

@ -2775,6 +2775,15 @@ void P_PlayerZMovement(mobj_t *mo)
P_CheckMarioBlocks(mo);
mo->momz = 0;
P_CheckGravity(mo, true);
if (abs(mo->momz) < 15 * mapobjectscale)
{
mo->momz = 15 * mapobjectscale
* -(P_MobjFlip(mo));
}
K_SpawnBumpEffect(mo);
}
}
}