fix mobjscale issues with bumpy road effect
and tune it to shake faster
This commit is contained in:
parent
7b3c198aca
commit
8a91fdfa43
3 changed files with 14 additions and 11 deletions
|
|
@ -629,6 +629,8 @@ struct player_t
|
|||
fixed_t karttilt; // Generalized sliptide-like kart tilting as an angle_t (Can be toggled off by clients)
|
||||
fixed_t karttiltmomentum; // angular velocity in rad/sec
|
||||
|
||||
SINT8 bumpyroadside; // last side lifted up by bumpy road
|
||||
|
||||
// (Delay-drift) - Delay in tics before the final drift angle is determined.
|
||||
// Potentially influenced by player lag.
|
||||
tic_t driftdelay;
|
||||
|
|
|
|||
21
src/k_kart.c
21
src/k_kart.c
|
|
@ -9435,7 +9435,7 @@ static void K_HandleAirDriftDrag(player_t *player, boolean onground)
|
|||
/// @brief simulates applying a torque by applying a force at an offset from the player's centre, is a purely visual effect
|
||||
/// @param player player to apply angular momentum to
|
||||
/// @param distance distance from player centre to apply torque to ("radius")
|
||||
/// @param force linear force to apply to the player to turn into angular velocity, + is CCW. Don't mobjscale if your distance is already scaled
|
||||
/// @param force linear force to apply to the player to turn into angular velocity, + is CCW.
|
||||
void K_AddTiltImpulse(player_t *player, fixed_t distance, fixed_t force)
|
||||
{
|
||||
fixed_t angularvelocity = FixedDiv(force, abs(distance));
|
||||
|
|
@ -12037,17 +12037,16 @@ void K_KartAttractHomingAttack(player_t *player)
|
|||
// Visual effect for bumpy road sector.
|
||||
void K_KartPlayerBumpyRoad(player_t *player)
|
||||
{
|
||||
if (player->speed > 4*mapobjectscale && abs(player->karttilt) < FRACUNIT/2)
|
||||
if (player->speed > 4*mapobjectscale && abs(player->karttilt) < FRACUNIT/4)
|
||||
{
|
||||
fixed_t baseimpulse = 9*FRACUNIT * (player->karttiltmomentum ? intsign(player->karttiltmomentum) : 1);
|
||||
fixed_t rate = CLAMP(FixedDiv(player->speed, K_GetKartSpeed(player, false, false)), 6*FRACUNIT/10, FRACUNIT);
|
||||
if (abs(player->karttiltmomentum) < abs(baseimpulse))
|
||||
{
|
||||
player->karttilt = (FRACUNIT/2) * (player->karttiltmomentum ? intsign(player->karttiltmomentum) : 1);
|
||||
player->karttiltmomentum = 0;
|
||||
K_AddTiltImpulse(player, player->mo->height/2, baseimpulse);
|
||||
S_StartSoundAtVolume(player->mo, sfx_s3k56, CLAMP((200*rate)/FRACUNIT, 0, 200));
|
||||
}
|
||||
fixed_t baseimpulse;
|
||||
fixed_t rate = CLAMP(FixedDiv(player->speed, K_GetKartSpeed(player, false, false)), 8*FRACUNIT/10, 11*FRACUNIT/10);
|
||||
player->bumpyroadside = (player->bumpyroadside ? -player->bumpyroadside : 1);
|
||||
baseimpulse = FixedMul(4*mapobjectscale * player->bumpyroadside, rate);
|
||||
|
||||
player->karttilt = FixedMul((3*FRACUNIT/2) * player->bumpyroadside, rate);
|
||||
K_AddTiltImpulse(player, player->mo->height/2, baseimpulse);
|
||||
S_StartSoundAtVolume(player->mo, sfx_s3k56, CLAMP((180*rate)/FRACUNIT, 0, 180));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -863,6 +863,8 @@ static void P_NetSyncPlayers(savebuffer_t *save)
|
|||
SYNC(players[i].itemusecooldownmax);
|
||||
|
||||
P_SyncMem(save, players[i].public_key, PUBKEYLENGTH);
|
||||
|
||||
SYNC(players[i].bumpyroadside);
|
||||
}
|
||||
TracyCZoneEnd(__zone);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue