player floating when jumping

This commit is contained in:
Glence 2023-03-16 17:14:57 +08:00
parent 132629306e
commit 77907841b1
4 changed files with 53 additions and 12 deletions

View File

@ -7548,7 +7548,7 @@
Enabled: true Enabled: true
respawnPoint: 65732 respawnPoint: 65732
currentState: 0 currentState: 0
maxMoveVel: 3 walkMaxMoveVel: 2.5
moveForce: 50 moveForce: 50
sprintMultiplier: 1.5 sprintMultiplier: 1.5
rotationFactorPerFrame: 5 rotationFactorPerFrame: 5
@ -7556,6 +7556,9 @@
maxJumpTime: 1 maxJumpTime: 1
fallMultipler: 2 fallMultipler: 2
jumpPadMultiplayer: 1.20000005 jumpPadMultiplayer: 1.20000005
dropDuration: 0.5
jumpPadFallMultipler: 0.75
jumpPadMaxMoveVel: 1
lightMultiper: 0.899999976 lightMultiper: 0.899999976
mediumMultiper: 0.699999988 mediumMultiper: 0.699999988
heavyMultiper: 0.5 heavyMultiper: 0.5

View File

@ -3098,7 +3098,7 @@
Enabled: true Enabled: true
respawnPoint: 239 respawnPoint: 239
currentState: 0 currentState: 0
maxMoveVel: 3 walkMaxMoveVel: 2.5
moveForce: 50 moveForce: 50
sprintMultiplier: 1.5 sprintMultiplier: 1.5
rotationFactorPerFrame: 5 rotationFactorPerFrame: 5
@ -3106,6 +3106,9 @@
maxJumpTime: 1 maxJumpTime: 1
fallMultipler: 2 fallMultipler: 2
jumpPadMultiplayer: 1.20000005 jumpPadMultiplayer: 1.20000005
dropDuration: 0.5
jumpPadFallMultipler: 0.75
jumpPadMaxMoveVel: 1
lightMultiper: 0.899999976 lightMultiper: 0.899999976
mediumMultiper: 0.699999988 mediumMultiper: 0.699999988
heavyMultiper: 0.5 heavyMultiper: 0.5

View File

@ -12046,14 +12046,17 @@
Enabled: true Enabled: true
respawnPoint: 66065 respawnPoint: 66065
currentState: 0 currentState: 0
maxMoveVel: 3 walkMaxMoveVel: 2.5
moveForce: 50 moveForce: 50
sprintMultiplier: 1.5 sprintMultiplier: 1.5
rotationFactorPerFrame: 5 rotationFactorPerFrame: 5
maxJumpHeight: 3 maxJumpHeight: 3
maxJumpTime: 1 maxJumpTime: 1
fallMultipler: 2 fallMultipler: 2
jumpPadMultiplayer: 1.5 jumpPadMultiplayer: 1.39999998
dropDuration: 0.5
jumpPadFallMultipler: 0.75
jumpPadMaxMoveVel: 1
lightMultiper: 0.899999976 lightMultiper: 0.899999976
mediumMultiper: 0.699999988 mediumMultiper: 0.699999988
heavyMultiper: 0.5 heavyMultiper: 0.5

View File

@ -37,7 +37,7 @@ public class PlayerController : Script
//Movement variables============================================================ //Movement variables============================================================
[Tooltip("Max vel for walking")] [Tooltip("Max vel for walking")]
public float maxMoveVel = 3.0f; public float walkMaxMoveVel = 3.0f;
[Tooltip("how much force is apply for walking")] [Tooltip("how much force is apply for walking")]
public float moveForce = 50.0f; public float moveForce = 50.0f;
[Tooltip("increase the moveForce and maxMoveVel by its amt")] [Tooltip("increase the moveForce and maxMoveVel by its amt")]
@ -69,6 +69,13 @@ public class PlayerController : Script
[Tooltip("multiply height on Jump Pad ")] [Tooltip("multiply height on Jump Pad ")]
public float jumpPadMultiplayer = 2.0f; public float jumpPadMultiplayer = 2.0f;
private bool jumpPadDrop = false;
private float dropTimer = 0.0f;
public float dropDuration = 0.5f;
public float jumpPadFallMultipler = 0.75f;
public float jumpPadMaxMoveVel = 1.0f;
private float currMoveVel = 0.0f;
//ItemMultipler================================================================== //ItemMultipler==================================================================
[Tooltip("How light item will affect player jump")] [Tooltip("How light item will affect player jump")]
public float lightMultiper = 0.75f; public float lightMultiper = 0.75f;
@ -191,6 +198,16 @@ public class PlayerController : Script
pat.prevTargetOffSet = camArm.TargetOffset; pat.prevTargetOffSet = camArm.TargetOffset;
} }
if (jumpPadDrop && currentState == RaccoonStates.FALLING)
{
dropTimer += Time.DeltaTimeF;
if (dropTimer > dropDuration)
{
jumpPadDrop = false;
dropTimer = 0.0f;
currMoveVel = walkMaxMoveVel;
}
}
GotCaught(); GotCaught();
@ -283,10 +300,15 @@ public class PlayerController : Script
{ {
Vector3 velNor = rb.LinearVelocity; Vector3 velNor = rb.LinearVelocity;
velNor.y = 0.0f; velNor.y = 0.0f;
if (velNor.GetMagnitude() > maxMoveVel) if (jumpPadDrop)
currMoveVel = jumpPadMaxMoveVel;
else
currMoveVel = walkMaxMoveVel;
if (velNor.GetMagnitude() > currMoveVel)
{ {
velNor.Normalise(); velNor.Normalise();
velNor *= maxMoveVel; velNor *= currMoveVel;
rb.LinearVelocity = new Vector3(velNor.x, rb.LinearVelocity.y, velNor.z); rb.LinearVelocity = new Vector3(velNor.x, rb.LinearVelocity.y, velNor.z);
} }
} }
@ -308,8 +330,8 @@ public class PlayerController : Script
oldForce = moveForce; oldForce = moveForce;
moveForce *= sprintMultiplier; moveForce *= sprintMultiplier;
maxOldVel = maxMoveVel; maxOldVel = walkMaxMoveVel;
maxMoveVel *= sprintMultiplier; walkMaxMoveVel *= sprintMultiplier;
} }
} }
@ -329,7 +351,7 @@ public class PlayerController : Script
} }
sprintIncreaseOnce = false; sprintIncreaseOnce = false;
moveForce = oldForce; moveForce = oldForce;
maxMoveVel = maxOldVel; walkMaxMoveVel = maxOldVel;
} }
} }
@ -360,6 +382,7 @@ public class PlayerController : Script
{ {
v.y *= jumpPadMultiplayer; v.y *= jumpPadMultiplayer;
landedOnJumpPad = false; landedOnJumpPad = false;
jumpPadDrop = true;
} }
rb.LinearVelocity = v; rb.LinearVelocity = v;
} }
@ -403,6 +426,9 @@ public class PlayerController : Script
if (currentState == RaccoonStates.FALLING) if (currentState == RaccoonStates.FALLING)
{ {
currentState = RaccoonStates.LANDED; currentState = RaccoonStates.LANDED;
jumpPadDrop = false;
dropTimer = 0.0f;
currMoveVel = walkMaxMoveVel;
playLandedAnimation = true; playLandedAnimation = true;
if (stateMachine && !stateMachine.IsState(typeof(PlayerLandState))) if (stateMachine && !stateMachine.IsState(typeof(PlayerLandState)))
stateMachine.SetState(typeof(PlayerLandState)); stateMachine.SetState(typeof(PlayerLandState));
@ -418,7 +444,13 @@ public class PlayerController : Script
else if (currentState == RaccoonStates.FALLING) else if (currentState == RaccoonStates.FALLING)
{ {
float prevYVel = v.y; float prevYVel = v.y;
float newYVel = v.y + (gravity * fallMultipler * (float)Time.FixedDeltaTime); float newYVel = 0;
if (jumpPadDrop)
newYVel = v.y + (gravity * jumpPadFallMultipler * (float)Time.FixedDeltaTime);
else
newYVel = v.y + (gravity * fallMultipler * (float)Time.FixedDeltaTime);
float nextYVel = (prevYVel + newYVel) * 0.5f; float nextYVel = (prevYVel + newYVel) * 0.5f;
v.y = nextYVel; v.y = nextYVel;
} }