Got a functional implementation of wall running that I am satisfied with

This commit is contained in:
Gregory Campbell
2019-12-31 18:17:35 -05:00
parent f1db804155
commit 9818b32bdc
2 changed files with 38 additions and 12 deletions
+8 -8
View File
@@ -180,8 +180,8 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 194035203} m_GameObject: {fileID: 194035203}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 62, y: 6.5, z: 12} m_LocalPosition: {x: 80, y: 6.5, z: 12}
m_LocalScale: {x: 25, y: 20, z: 0.25} m_LocalScale: {x: 75, y: 20, z: 0.25}
m_Children: [] m_Children: []
m_Father: {fileID: 1013482115} m_Father: {fileID: 1013482115}
m_RootOrder: 0 m_RootOrder: 0
@@ -366,7 +366,7 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 203887784} m_GameObject: {fileID: 203887784}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 84, y: -0.5, z: 6} m_LocalPosition: {x: 120, y: -0.5, z: 6}
m_LocalScale: {x: 20, y: 0.5, z: 12} m_LocalScale: {x: 20, y: 0.5, z: 12}
m_Children: [] m_Children: []
m_Father: {fileID: 833538478} m_Father: {fileID: 833538478}
@@ -1205,7 +1205,7 @@ CapsuleCollider:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 741217452} m_GameObject: {fileID: 741217452}
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IsTrigger: 0 m_IsTrigger: 1
m_Enabled: 1 m_Enabled: 1
m_Radius: 0.5 m_Radius: 0.5
m_Height: 2 m_Height: 2
@@ -1404,8 +1404,8 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 858957125} m_GameObject: {fileID: 858957125}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 62, y: 6.5, z: 0} m_LocalPosition: {x: 80, y: 6.5, z: 0}
m_LocalScale: {x: 25, y: 20, z: 0.25} m_LocalScale: {x: 75, y: 20, z: 0.25}
m_Children: [] m_Children: []
m_Father: {fileID: 1013482115} m_Father: {fileID: 1013482115}
m_RootOrder: 1 m_RootOrder: 1
@@ -2045,8 +2045,8 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1853948297} m_GameObject: {fileID: 1853948297}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 62, y: -3.5, z: 6} m_LocalPosition: {x: 80, y: -3.5, z: 6}
m_LocalScale: {x: 25, y: 0.25, z: 12} m_LocalScale: {x: 75, y: 0.25, z: 12}
m_Children: [] m_Children: []
m_Father: {fileID: 833538478} m_Father: {fileID: 833538478}
m_RootOrder: 1 m_RootOrder: 1
+29 -3
View File
@@ -22,7 +22,9 @@ public class PlayerController : MonoBehaviour
public Transform pivot; public Transform pivot;
public GameObject playerModel; public GameObject playerModel;
private bool wallRunning = false;
private int jump = 0; private int jump = 0;
private int wall = 0;
private float maxSpeedStore; private float maxSpeedStore;
private float capsuleHeight; private float capsuleHeight;
private float controllerHeight; private float controllerHeight;
@@ -50,7 +52,8 @@ public class PlayerController : MonoBehaviour
if(hit.gameObject.tag == "Wall") if(hit.gameObject.tag == "Wall")
{ {
gravity = 0.5f; wallRunning = true;
wall++;
} }
} }
@@ -72,7 +75,7 @@ public class PlayerController : MonoBehaviour
if (jump <= 1) if (jump <= 1)
{ {
//moveDirection = moveDirection.normalized * speed; //Remove this line to make running diagonal the fastest standard run //moveDirection = moveDirection.normalized * speed; //Remove this line to make running diagonal the fastest standard run
maxSpeed = maxSpeedStore; //maxSpeed = maxSpeedStore;
} else { } else {
//moveDirection = (moveDirection.normalized * speed)/4; //Remove this line to make running diagonal the fastest standard run //moveDirection = (moveDirection.normalized * speed)/4; //Remove this line to make running diagonal the fastest standard run
@@ -145,11 +148,34 @@ public class PlayerController : MonoBehaviour
if (characterController.collisionFlags == CollisionFlags.None) if (characterController.collisionFlags == CollisionFlags.None)
{ {
gravity = 5; wallRunning = false;
wall = 0;
} }
moveDirection.y += Physics.gravity.y * gravity * Time.deltaTime; moveDirection.y += Physics.gravity.y * gravity * Time.deltaTime;
if (wallRunning)
{
maxSpeed = maxSpeedStore*1.5f;
jump = 0;
if(wall == 1)
{
startTime = Time.time;
}
if(startTime + oneSec < Time.time)
{
moveDirection.y += Physics.gravity.y * (gravity/8) * Time.deltaTime;
//wallRunning = false;
maxSpeed = maxSpeedStore;
} else {
moveDirection.y = 0.0f;
}
}
velocity = Vector3.ClampMagnitude(velocity, maxSpeed); velocity = Vector3.ClampMagnitude(velocity, maxSpeed);
velocity.y = moveDirection.y; velocity.y = moveDirection.y;