mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 12:31:54 +00:00
MT_WALLSPIKE: always bounce toward tip
This commit is contained in:
parent
d9bf6119a3
commit
4065f56b98
1 changed files with 21 additions and 8 deletions
29
src/k_kart.c
29
src/k_kart.c
|
|
@ -998,7 +998,7 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2)
|
||||||
boolean K_KartSolidBounce(mobj_t *bounceMobj, mobj_t *solidMobj)
|
boolean K_KartSolidBounce(mobj_t *bounceMobj, mobj_t *solidMobj)
|
||||||
{
|
{
|
||||||
const fixed_t minBump = 25*mapobjectscale;
|
const fixed_t minBump = 25*mapobjectscale;
|
||||||
fixed_t distx, disty, dist;
|
fixed_t distx, disty;
|
||||||
fixed_t force;
|
fixed_t force;
|
||||||
|
|
||||||
if ((!bounceMobj || P_MobjWasRemoved(bounceMobj))
|
if ((!bounceMobj || P_MobjWasRemoved(bounceMobj))
|
||||||
|
|
@ -1034,17 +1034,30 @@ boolean K_KartSolidBounce(mobj_t *bounceMobj, mobj_t *solidMobj)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Multiply by force
|
|
||||||
distx = FixedMul(force, distx);
|
|
||||||
disty = FixedMul(force, disty);
|
|
||||||
dist = FixedHypot(distx, disty);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
// Normalize to the desired push value.
|
// Normalize to the desired push value.
|
||||||
fixed_t normalisedx = FixedDiv(distx, dist);
|
fixed_t normalisedx;
|
||||||
fixed_t normalisedy = FixedDiv(disty, dist);
|
fixed_t normalisedy;
|
||||||
fixed_t bounceSpeed;
|
fixed_t bounceSpeed;
|
||||||
|
|
||||||
|
// Multiply by force
|
||||||
|
distx = FixedMul(force, distx);
|
||||||
|
disty = FixedMul(force, disty);
|
||||||
|
fixed_t dist = FixedHypot(distx, disty);
|
||||||
|
|
||||||
|
normalisedx = FixedDiv(distx, dist);
|
||||||
|
normalisedy = FixedDiv(disty, dist);
|
||||||
|
|
||||||
|
if (solidMobj->type == MT_WALLSPIKE)
|
||||||
|
{
|
||||||
|
fixed_t co = FCOS(solidMobj->angle);
|
||||||
|
fixed_t si = FSIN(solidMobj->angle);
|
||||||
|
|
||||||
|
// Always thrust out toward the tip
|
||||||
|
normalisedx = FixedMul(normalisedx, abs(si)) - co;
|
||||||
|
normalisedy = FixedMul(normalisedy, abs(co)) - si;
|
||||||
|
}
|
||||||
|
|
||||||
bounceSpeed = FixedHypot(bounceMobj->momx, bounceMobj->momy);
|
bounceSpeed = FixedHypot(bounceMobj->momx, bounceMobj->momy);
|
||||||
bounceSpeed = FixedMul(bounceSpeed, (FRACUNIT - (FRACUNIT>>2) - (FRACUNIT>>3)));
|
bounceSpeed = FixedMul(bounceSpeed, (FRACUNIT - (FRACUNIT>>2) - (FRACUNIT>>3)));
|
||||||
bounceSpeed += minBump;
|
bounceSpeed += minBump;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue