This issue has come up before:
jumping straight up from a surface the player is attached to that isn't standard (ClearPhysicsFlags(player, 0x800); and SetPhysicsFlags(player, 0xB0); typically used to allow player alignment to surfaces).
I took a swing at this yesterday and got decent results, but rather than keep straining myself to perfect it, I'd figure I'd offer this one up to the JK physics gods (like Hell Raiser).
So far, using the following in a fast pulse (0.01 works well, 0.1 is decent) works somewhat; it works great when the player is on a wall that's at a 90 degree angle to standard flat ground, but sucks on angled slopes (especially 45 degrees):
The main problem is calculating the Z velocity. I tried saving initial values, or differences and readding them in, but all resulting in bleh results.
QM
jumping straight up from a surface the player is attached to that isn't standard (ClearPhysicsFlags(player, 0x800); and SetPhysicsFlags(player, 0xB0); typically used to allow player alignment to surfaces).
I took a swing at this yesterday and got decent results, but rather than keep straining myself to perfect it, I'd figure I'd offer this one up to the JK physics gods (like Hell Raiser).
So far, using the following in a fast pulse (0.01 works well, 0.1 is decent) works somewhat; it works great when the player is on a wall that's at a 90 degree angle to standard flat ground, but sucks on angled slopes (especially 45 degrees):
Code:
if(GetThingAttachFlags(player) == 0) { SetThingVel(player, VectorAdd( VectorSet(VectorX(GetThingVel(player)), VectorY(GetThingVel(player)), 0), VectorScale(GetThingUVec(player), VectorZ(GetThingVel(player))) )); }
The main problem is calculating the Z velocity. I tried saving initial values, or differences and readding them in, but all resulting in bleh results.
QM