Stopped player turning around during wall ride

This commit is contained in:
2025-03-28 14:07:24 +00:00
parent 639cb88e63
commit a972667fe4
4 changed files with 26 additions and 5 deletions

View File

@@ -631,11 +631,12 @@ MonoBehaviour:
m_SlideDrag: 3
m_SlideSpeed: 10
m_JumpForce: 20
m_WallRunSpeed: 10
m_WallRunSpeed: 15
m_WallCheckDistance: 1.5
m_DistanceOfFloorToWallRide: 0.1
m_JumpKey: 32
m_SlideKey: 99
m_WallRunKey: 304
m_Body: {fileID: 1174770952}
m_Orientation: {fileID: 166780449}
m_PlayerTransform: {fileID: 1174770951}

View File

@@ -65,6 +65,10 @@ public partial class PlayerMovement : MonoBehaviour
// Timer for slide boost duration left
int m_TicksOfSlideBoostLeft = 0;
// Wall riding trackers
bool m_FirstFrameWallRiding = true;
bool m_FlippedWallRideDirectionFirstFrame = false;
// Raycast hit objects
RaycastHit m_GroundHit;
RaycastHit m_SlopeHit;

View File

@@ -40,6 +40,10 @@ public partial class PlayerMovement : MonoBehaviour
StopSlide();
break;
case PlayerState.WALL_RUNNING:
m_FirstFrameWallRiding = true;
break;
default:
break;
}

View File

@@ -53,8 +53,20 @@ public partial class PlayerMovement : MonoBehaviour
// Calculates the foward direction of the wall
Vector3 foward = Vector3.Cross(m_WallNormal, transform.up);
// Flips the foward direction if facing the other direction
if ((m_Orientation.forward - foward).magnitude > (m_Orientation.forward - (-foward)).magnitude)
if (m_FirstFrameWallRiding == true)
{
// Resets the tracker
m_FirstFrameWallRiding = false;
// Calculates it should flip the direction of the wall riding depending on the direction the player is looking
bool flip = (m_Orientation.forward - foward).magnitude > (m_Orientation.forward - (-foward)).magnitude;
// Stores it for all the other frames of the current wall ride
m_FlippedWallRideDirectionFirstFrame = flip;
}
// Flips the direction if it did the first frame to stop the direction changing mid wall ride
if (m_FlippedWallRideDirectionFirstFrame == true)
{ foward = -foward; }
// Applies the wall running force to the player