mirror of
https://github.com/PashaBibko/The-Mobius-Line.git
synced 2026-04-04 01:49:07 +00:00
Stopped player turning around during wall ride
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -40,6 +40,10 @@ public partial class PlayerMovement : MonoBehaviour
|
||||
StopSlide();
|
||||
break;
|
||||
|
||||
case PlayerState.WALL_RUNNING:
|
||||
m_FirstFrameWallRiding = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ public partial class PlayerMovement : MonoBehaviour
|
||||
Collider closest = null;
|
||||
|
||||
foreach (Collider collision in m_WallCollisions)
|
||||
{
|
||||
{
|
||||
Vector3 pos = collision.ClosestPoint(transform.position);
|
||||
Vector3 dif = transform.position - pos;
|
||||
|
||||
@@ -53,9 +53,21 @@ 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)
|
||||
{ foward = -foward; }
|
||||
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
|
||||
m_Body.AddForce(foward * m_WallRunSpeed * m_Body.mass * 10.0f, ForceMode.Force);
|
||||
|
||||
Reference in New Issue
Block a user