removed wall jump and slide from player controller
these aren't mechanics we ever talked about and idk how they work (they don't seem to actually do anything), so i cut them
This commit is contained in:
parent
89ae237941
commit
164da00b0f
@ -21,14 +21,9 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
//but can only be privately written to.
|
//but can only be privately written to.
|
||||||
public bool IsFacingRight { get; private set; }
|
public bool IsFacingRight { get; private set; }
|
||||||
public bool IsJumping { get; private set; }
|
public bool IsJumping { get; private set; }
|
||||||
public bool IsWallJumping { get; private set; }
|
|
||||||
public bool IsSliding { get; private set; }
|
|
||||||
|
|
||||||
//Timers (also all fields, could be private and a method returning a bool could be used)
|
//Timers (also all fields, could be private and a method returning a bool could be used)
|
||||||
public float LastOnGroundTime { get; private set; }
|
public float LastOnGroundTime { get; private set; }
|
||||||
public float LastOnWallTime { get; private set; }
|
|
||||||
public float LastOnWallRightTime { get; private set; }
|
|
||||||
public float LastOnWallLeftTime { get; private set; }
|
|
||||||
|
|
||||||
// trumpet
|
// trumpet
|
||||||
public int trumpet = 0;
|
public int trumpet = 0;
|
||||||
@ -47,10 +42,6 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
private bool _isJumpFalling;
|
private bool _isJumpFalling;
|
||||||
private bool isRegFalling;
|
private bool isRegFalling;
|
||||||
|
|
||||||
//Wall Jump
|
|
||||||
private float _wallJumpStartTime;
|
|
||||||
private int _lastWallJumpDir;
|
|
||||||
|
|
||||||
private Vector2 _moveInput;
|
private Vector2 _moveInput;
|
||||||
public float LastPressedJumpTime { get; private set; }
|
public float LastPressedJumpTime { get; private set; }
|
||||||
|
|
||||||
@ -121,28 +112,10 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
unlockedTrumpet = StateController.Instance.HasTrumpet();
|
unlockedTrumpet = StateController.Instance.HasTrumpet();
|
||||||
#region TIMERS
|
#region TIMERS
|
||||||
LastOnGroundTime -= Time.deltaTime;
|
LastOnGroundTime -= Time.deltaTime;
|
||||||
LastOnWallTime -= Time.deltaTime;
|
|
||||||
LastOnWallRightTime -= Time.deltaTime;
|
|
||||||
LastOnWallLeftTime -= Time.deltaTime;
|
|
||||||
|
|
||||||
LastPressedJumpTime -= Time.deltaTime;
|
LastPressedJumpTime -= Time.deltaTime;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region INPUT HANDLER
|
|
||||||
|
|
||||||
if (_moveInput.x != 0)
|
|
||||||
CheckDirectionToFace(_moveInput.x > 0);
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
// if (!IsJumping)
|
|
||||||
// {
|
|
||||||
// print("not jumping");
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// print("jumping, " + RB.velocity.y);
|
|
||||||
// }
|
|
||||||
|
|
||||||
#region COLLISION CHECKS
|
#region COLLISION CHECKS
|
||||||
if (!IsJumping)
|
if (!IsJumping)
|
||||||
{
|
{
|
||||||
@ -179,19 +152,6 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
isRegFalling = true;
|
isRegFalling = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Right Wall Check
|
|
||||||
if (((Physics2D.OverlapBox(this.transform.position, _wallCheckSize, 0, _groundLayer) && IsFacingRight)
|
|
||||||
|| (Physics2D.OverlapBox(this.transform.position, _wallCheckSize, 0, _groundLayer) && !IsFacingRight)) && !IsWallJumping)
|
|
||||||
LastOnWallRightTime = Data.coyoteTime;
|
|
||||||
|
|
||||||
//Right Wall Check
|
|
||||||
if (((Physics2D.OverlapBox(this.transform.position, _wallCheckSize, 0, _groundLayer) && !IsFacingRight)
|
|
||||||
|| (Physics2D.OverlapBox(this.transform.position, _wallCheckSize, 0, _groundLayer) && IsFacingRight)) && !IsWallJumping)
|
|
||||||
LastOnWallLeftTime = Data.coyoteTime;
|
|
||||||
|
|
||||||
//Two checks needed for both left and right walls since whenever the play turns the wall checkPoints swap sides
|
|
||||||
LastOnWallTime = Mathf.Max(LastOnWallLeftTime, LastOnWallRightTime);
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -200,17 +160,10 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
{
|
{
|
||||||
IsJumping = false;
|
IsJumping = false;
|
||||||
// print("isJumping " + IsJumping);
|
// print("isJumping " + IsJumping);
|
||||||
|
_isJumpFalling = true;
|
||||||
if (!IsWallJumping)
|
|
||||||
_isJumpFalling = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsWallJumping && Time.time - _wallJumpStartTime > Data.wallJumpTime)
|
if (LastOnGroundTime > 0 && !IsJumping)
|
||||||
{
|
|
||||||
IsWallJumping = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (LastOnGroundTime > 0 && !IsJumping && !IsWallJumping)
|
|
||||||
{
|
{
|
||||||
_isJumpCut = false;
|
_isJumpCut = false;
|
||||||
|
|
||||||
@ -223,7 +176,6 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
if (CanJump() && LastPressedJumpTime > 0)
|
if (CanJump() && LastPressedJumpTime > 0)
|
||||||
{
|
{
|
||||||
IsJumping = true;
|
IsJumping = true;
|
||||||
IsWallJumping = false;
|
|
||||||
_isJumpCut = false;
|
_isJumpCut = false;
|
||||||
_isJumpFalling = false;
|
_isJumpFalling = false;
|
||||||
|
|
||||||
@ -270,14 +222,6 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region SLIDE CHECKS
|
|
||||||
if (CanSlide() && ((LastOnWallLeftTime > 0 && _moveInput.x < 0) || (LastOnWallRightTime > 0 && _moveInput.x > 0)))
|
|
||||||
IsSliding = true;
|
|
||||||
else
|
|
||||||
IsSliding = false;
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region GRAVITY
|
#region GRAVITY
|
||||||
//Higher gravity if we've released the jump input or are falling
|
//Higher gravity if we've released the jump input or are falling
|
||||||
// if (IsSliding)
|
// if (IsSliding)
|
||||||
@ -297,7 +241,7 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
SetGravityScale(Data.gravityScale * Data.jumpCutGravityMult);
|
SetGravityScale(Data.gravityScale * Data.jumpCutGravityMult);
|
||||||
RB.velocity = new Vector2(RB.velocity.x, Mathf.Max(RB.velocity.y, -Data.maxFallSpeed));
|
RB.velocity = new Vector2(RB.velocity.x, Mathf.Max(RB.velocity.y, -Data.maxFallSpeed));
|
||||||
}
|
}
|
||||||
else if ((IsJumping || IsWallJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold)
|
else if ((IsJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold)
|
||||||
{
|
{
|
||||||
SetGravityScale(Data.gravityScale * Data.jumpHangGravityMult);
|
SetGravityScale(Data.gravityScale * Data.jumpHangGravityMult);
|
||||||
}
|
}
|
||||||
@ -343,15 +287,7 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
|
|
||||||
private void FixedUpdate()
|
private void FixedUpdate()
|
||||||
{
|
{
|
||||||
//Handle Run
|
Run(1);
|
||||||
if (IsWallJumping)
|
|
||||||
Run(Data.wallJumpRunLerp);
|
|
||||||
else
|
|
||||||
Run(1);
|
|
||||||
|
|
||||||
//Handle Slide
|
|
||||||
if (IsSliding)
|
|
||||||
Slide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region INPUT CALLBACKS
|
#region INPUT CALLBACKS
|
||||||
@ -363,7 +299,7 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
|
|
||||||
public void OnJumpUpInput()
|
public void OnJumpUpInput()
|
||||||
{
|
{
|
||||||
if (CanJumpCut() || CanWallJumpCut())
|
if (CanJumpCut())
|
||||||
_isJumpCut = true;
|
_isJumpCut = true;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@ -405,7 +341,7 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
|
|
||||||
#region Add Bonus Jump Apex Acceleration
|
#region Add Bonus Jump Apex Acceleration
|
||||||
//Increase are acceleration and maxSpeed when at the apex of their jump, makes the jump feel a bit more bouncy, responsive and natural
|
//Increase are acceleration and maxSpeed when at the apex of their jump, makes the jump feel a bit more bouncy, responsive and natural
|
||||||
if ((IsJumping || IsWallJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold)
|
if ((IsJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold)
|
||||||
{
|
{
|
||||||
accelRate *= Data.jumpHangAccelerationMult;
|
accelRate *= Data.jumpHangAccelerationMult;
|
||||||
targetSpeed *= Data.jumpHangMaxSpeedMult;
|
targetSpeed *= Data.jumpHangMaxSpeedMult;
|
||||||
@ -467,55 +403,10 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
RB.AddForce(Vector2.up * force, ForceMode2D.Impulse);
|
RB.AddForce(Vector2.up * force, ForceMode2D.Impulse);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WallJump(int dir)
|
|
||||||
{
|
|
||||||
//Ensures we can't call Wall Jump multiple times from one press
|
|
||||||
LastPressedJumpTime = 0;
|
|
||||||
LastOnGroundTime = 0;
|
|
||||||
LastOnWallRightTime = 0;
|
|
||||||
LastOnWallLeftTime = 0;
|
|
||||||
|
|
||||||
#region Perform Wall Jump
|
|
||||||
Vector2 force = new Vector2(Data.wallJumpForce.x, Data.wallJumpForce.y);
|
|
||||||
force.x *= dir; //apply force in opposite direction of wall
|
|
||||||
|
|
||||||
if (Mathf.Sign(RB.velocity.x) != Mathf.Sign(force.x))
|
|
||||||
force.x -= RB.velocity.x;
|
|
||||||
|
|
||||||
if (RB.velocity.y < 0) //checks whether player is falling, if so we subtract the velocity.y (counteracting force of gravity). This ensures the player always reaches our desired jump force or greater
|
|
||||||
force.y -= RB.velocity.y;
|
|
||||||
|
|
||||||
//Unlike in the run we want to use the Impulse mode.
|
|
||||||
//The default mode will apply are force instantly ignoring masss
|
|
||||||
//RB.AddForce(force, ForceMode2D.Impulse);
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region OTHER MOVEMENT METHODS
|
|
||||||
private void Slide()
|
|
||||||
{
|
|
||||||
//Works the same as the Run but only in the y-axis
|
|
||||||
//THis seems to work fine, buit maybe you'll find a better way to implement a slide into this system
|
|
||||||
float speedDif = Data.slideSpeed - RB.velocity.y;
|
|
||||||
float movement = speedDif * Data.slideAccel;
|
|
||||||
//So, we clamp the movement here to prevent any over corrections (these aren't noticeable in the Run)
|
|
||||||
//The force applied can't be greater than the (negative) speedDifference * by how many times a second FixedUpdate() is called. For more info research how force are applied to rigidbodies.
|
|
||||||
movement = Mathf.Clamp(movement, -Mathf.Abs(speedDif) * (1 / Time.fixedDeltaTime), Mathf.Abs(speedDif) * (1 / Time.fixedDeltaTime));
|
|
||||||
|
|
||||||
RB.AddForce(movement * Vector2.up);
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region CHECK METHODS
|
#region CHECK METHODS
|
||||||
public void CheckDirectionToFace(bool isMovingRight)
|
|
||||||
{
|
|
||||||
// if (isMovingRight != IsFacingRight)
|
|
||||||
// Turn();
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool CanJump()
|
private bool CanJump()
|
||||||
{
|
{
|
||||||
if (!IsGrounded() && trumpet > 0)
|
if (!IsGrounded() && trumpet > 0)
|
||||||
@ -525,30 +416,11 @@ public class PlayerMovement : MonoBehaviour
|
|||||||
return LastOnGroundTime > 0 && !IsJumping;
|
return LastOnGroundTime > 0 && !IsJumping;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CanWallJump()
|
|
||||||
{
|
|
||||||
return LastPressedJumpTime > 0 && LastOnWallTime > 0 && LastOnGroundTime <= 0 && (!IsWallJumping ||
|
|
||||||
(LastOnWallRightTime > 0 && _lastWallJumpDir == 1) || (LastOnWallLeftTime > 0 && _lastWallJumpDir == -1));
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool CanJumpCut()
|
private bool CanJumpCut()
|
||||||
{
|
{
|
||||||
return IsJumping && RB.velocity.y > 0;
|
return IsJumping && RB.velocity.y > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CanWallJumpCut()
|
|
||||||
{
|
|
||||||
return IsWallJumping && RB.velocity.y > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool CanSlide()
|
|
||||||
{
|
|
||||||
if (LastOnWallTime > 0 && !IsJumping && !IsWallJumping && LastOnGroundTime <= 0)
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsGrounded()
|
public bool IsGrounded()
|
||||||
{
|
{
|
||||||
// print(Physics2D.OverlapBox(this.transform.position, _groundCheckSize, 0, _groundLayer) && !IsJumping);
|
// print(Physics2D.OverlapBox(this.transform.position, _groundCheckSize, 0, _groundLayer) && !IsJumping);
|
||||||
|
Loading…
Reference in New Issue
Block a user