Update SurfController.cs

This commit is contained in:
Olezen
2019-11-10 13:07:11 +01:00
committed by GitHub
parent 999214fbe2
commit 5451daf37c

View File

@@ -47,7 +47,7 @@ namespace Fragsurf.Movement {
if (_surfer.moveData.laddersEnabled && !_surfer.moveData.climbingLadder) {
// Look for ladders
LadderCheck (new Vector3(1f, 0.5f, 1f), _surfer.moveData.velocity * Time.deltaTime * 2f);
LadderCheck (new Vector3(1f, 0.95f, 1f), _surfer.moveData.velocity * Time.deltaTime * 2f);
}
@@ -299,9 +299,7 @@ namespace Fragsurf.Movement {
if (_surfer.moveData.velocity.sqrMagnitude <= 0f)
return;
Debug.Log ("Checking for ladders");
bool foundLadder = false;
RaycastHit [] hits = Physics.BoxCastAll (_surfer.moveData.origin, Vector3.Scale (_surfer.collider.bounds.size * 0.5f, colliderScale), Vector3.Scale (direction, new Vector3 (1f, 0f, 1f)), Quaternion.identity, direction.magnitude, SurfPhysics.groundLayerMask, QueryTriggerInteraction.Collide);
@@ -310,13 +308,43 @@ namespace Fragsurf.Movement {
Ladder ladder = hit.transform.GetComponentInParent<Ladder> ();
if (ladder != null) {
foundLadder = true;
if (_surfer.moveData.climbingLadder == false) {
bool allowClimb = true;
float ladderAngle = Vector3.Angle (Vector3.up, hit.normal);
if (_surfer.moveData.angledLaddersEnabled) {
_surfer.moveData.climbingLadder = true;
_surfer.moveData.ladderNormal = hit.normal;
_surfer.moveData.ladderDirection = direction;
if (hit.normal.y < 0f)
allowClimb = false;
else {
if (ladderAngle <= _surfer.moveData.slopeLimit)
allowClimb = false;
}
} else if (hit.normal.y != 0f)
allowClimb = false;
if (allowClimb) {
foundLadder = true;
if (_surfer.moveData.climbingLadder == false) {
_surfer.moveData.climbingLadder = true;
_surfer.moveData.ladderNormal = hit.normal;
_surfer.moveData.ladderDirection = direction;
if (_surfer.moveData.angledLaddersEnabled) {
Vector3 sideDir = hit.normal;
sideDir.y = 0f;
sideDir = Quaternion.AngleAxis (-90f, Vector3.up) * sideDir;
_surfer.moveData.ladderClimbDir = Quaternion.AngleAxis (90f, sideDir) * hit.normal;
_surfer.moveData.ladderClimbDir *= 1f/ _surfer.moveData.ladderClimbDir.y; // Make sure Y is always 1
} else
_surfer.moveData.ladderClimbDir = Vector3.up;
}
}
}
@@ -328,6 +356,7 @@ namespace Fragsurf.Movement {
_surfer.moveData.ladderNormal = Vector3.zero;
_surfer.moveData.ladderVelocity = Vector3.zero;
_surfer.moveData.climbingLadder = false;
_surfer.moveData.ladderClimbDir = Vector3.up;
}
@@ -335,7 +364,7 @@ namespace Fragsurf.Movement {
private void LadderPhysics () {
_surfer.moveData.ladderVelocity = Vector3.up * _surfer.moveData.verticalAxis * 6f;
_surfer.moveData.ladderVelocity = _surfer.moveData.ladderClimbDir * _surfer.moveData.verticalAxis * 6f;
_surfer.moveData.velocity = Vector3.Lerp (_surfer.moveData.velocity, _surfer.moveData.ladderVelocity, Time.deltaTime * 10f);
LadderCheck (Vector3.one, _surfer.moveData.ladderDirection);
@@ -357,6 +386,16 @@ namespace Fragsurf.Movement {
}
}
if (_surfer.moveData.wishJump) {
_surfer.moveData.velocity = _surfer.moveData.ladderNormal * 4f;
_surfer.moveData.ladderVelocity = Vector3.zero;
_surfer.moveData.climbingLadder = false;
}
}
private void Accelerate (Vector3 wishDir, float wishSpeed, float acceleration, bool yMovement) {