mirror of
https://github.com/Leahnaya/TheKingsRace.git
synced 2026-08-27 04:44:58 -05:00
Updated PlayerPrefab
Implemented Slide into player Added CamFollow
This commit is contained in:
@@ -18,6 +18,9 @@ public class PlayerMovement : MonoBehaviour
|
||||
private Vector3 moveX;
|
||||
private Vector3 driftVel;
|
||||
|
||||
//Player prefab
|
||||
private GameObject parentObj;
|
||||
|
||||
//Character Moving
|
||||
private CharacterController moveController;
|
||||
|
||||
@@ -67,6 +70,15 @@ public class PlayerMovement : MonoBehaviour
|
||||
private Vector3 prevRot;
|
||||
private Vector3 hitForce;
|
||||
|
||||
//Slide Variables
|
||||
private bool isSliding = false;
|
||||
private float originalTraction;
|
||||
private RaycastHit ray;
|
||||
private Vector3 up;
|
||||
private bool qDown;
|
||||
|
||||
//Kick Variables
|
||||
|
||||
void Awake()
|
||||
{
|
||||
//Initialize Components
|
||||
@@ -74,13 +86,16 @@ public class PlayerMovement : MonoBehaviour
|
||||
rB = GetComponent<Rigidbody>();
|
||||
capCol = GetComponent<CapsuleCollider>();
|
||||
pStats = GetComponent<PlayerStats>();
|
||||
parentObj = transform.parent.gameObject;
|
||||
|
||||
//camera transform
|
||||
cam = GetComponentInChildren<Camera>();
|
||||
cam = parentObj.GetComponentInChildren<Camera>();
|
||||
|
||||
capCol.enabled = false;
|
||||
//Wallrun
|
||||
wallRun = gameObject.GetComponent<WallRun>();
|
||||
|
||||
up = this.gameObject.GetComponentInParent<Transform>().up;
|
||||
}
|
||||
|
||||
void Start()
|
||||
@@ -137,8 +152,6 @@ public class PlayerMovement : MonoBehaviour
|
||||
//Checks if player should respawn
|
||||
Respawn();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -162,9 +175,13 @@ public class PlayerMovement : MonoBehaviour
|
||||
Gravity();
|
||||
|
||||
driftVel = Vector3.Lerp(driftVel, vel, pStats.Traction * Time.deltaTime);
|
||||
|
||||
//Moving outside basic wasd
|
||||
//Jump Function
|
||||
Jump();
|
||||
|
||||
//Slide Function
|
||||
Slide();
|
||||
|
||||
moveController.Move(driftVel);
|
||||
}
|
||||
|
||||
@@ -174,7 +191,7 @@ public class PlayerMovement : MonoBehaviour
|
||||
public float PlayerSpeed()
|
||||
{
|
||||
//If nothing is pressed speed is 0
|
||||
if (Input.GetAxis("Vertical") == 0.0f && Input.GetAxis("Horizontal") == 0.0f)
|
||||
if ((Input.GetAxis("Vertical") == 0.0f && Input.GetAxis("Horizontal") == 0.0f) || isSliding)
|
||||
{
|
||||
pStats.CurVel = 0.0f;
|
||||
return pStats.CurVel;
|
||||
@@ -215,7 +232,7 @@ public class PlayerMovement : MonoBehaviour
|
||||
private void Jump()
|
||||
{
|
||||
//If space is pressed apply an upwards force to the player
|
||||
if (Input.GetAxis("Jump") != 0 && !jumpPressed && curJumpNum + 1 < pStats.JumpNum)
|
||||
if (Input.GetAxis("Jump") != 0 && !jumpPressed && curJumpNum + 1 < pStats.JumpNum && !isSliding)
|
||||
{
|
||||
AddImpact(transform.up, pStats.JumpPow);
|
||||
curJumpNum++;
|
||||
@@ -261,14 +278,21 @@ public class PlayerMovement : MonoBehaviour
|
||||
private void Rotation()
|
||||
{
|
||||
Vector3 lastCamPos = new Vector3(0,0,0);
|
||||
Vector3 rotOffset = transform.localEulerAngles;
|
||||
if(moveController.enabled){
|
||||
transform.Rotate(Vector3.up * sensitivity * Time.deltaTime * Input.GetAxis("Mouse X"));
|
||||
transform.parent.Rotate(Vector3.up * sensitivity * Time.deltaTime * Input.GetAxis("Mouse X"));
|
||||
|
||||
camRotation.x -= Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;
|
||||
camRotation.x = Mathf.Clamp(camRotation.x, minAngle, maxAngle);
|
||||
|
||||
cam.transform.localEulerAngles = camRotation;
|
||||
camRotation.x -= Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;
|
||||
camRotation.x = Mathf.Clamp(camRotation.x, minAngle, maxAngle);
|
||||
|
||||
cam.transform.localEulerAngles = camRotation;
|
||||
}
|
||||
/*
|
||||
else{
|
||||
cam.transform.localEulerAngles = cam.transform.localEulerAngles - rotOffset;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@@ -368,7 +392,7 @@ public class PlayerMovement : MonoBehaviour
|
||||
//When to begin the ragdoll timer
|
||||
private float RagdollTimer(){
|
||||
if(beginRagTimer == false){
|
||||
beginRagTimer = Physics.Raycast(transform.position, -Vector3.up, distToGround + 0.1f);
|
||||
beginRagTimer = Physics.Raycast(transform.position, -Vector3.up, distToGround + 1f);
|
||||
}
|
||||
|
||||
else if(ragTime <= 0){
|
||||
@@ -383,6 +407,57 @@ public class PlayerMovement : MonoBehaviour
|
||||
return ragTime;
|
||||
}
|
||||
|
||||
//Slide Function
|
||||
private void Slide(){
|
||||
if (Input.GetKey(KeyCode.Q)){
|
||||
qDown = true;
|
||||
if (isSliding == false){
|
||||
originalTraction = pStats.Traction;
|
||||
this.gameObject.transform.eulerAngles = new Vector3(this.transform.eulerAngles.x - 90, this.transform.eulerAngles.y, this.transform.eulerAngles.z);
|
||||
isSliding = true;
|
||||
moveController.height = 1.0f;
|
||||
pStats.Traction = 0.01f;
|
||||
|
||||
}
|
||||
pStats.Traction += .02f;
|
||||
}
|
||||
else{
|
||||
qDown = false;
|
||||
}
|
||||
//NOTE: potentialy change this to only allow player back up if there is nothing above them
|
||||
if (qDown == false && isSliding == true) {
|
||||
//if nothing is above the object, stop slidding
|
||||
if (Physics.Raycast(this.gameObject.transform.position, up, out ray, 5f) == false)
|
||||
{
|
||||
this.gameObject.transform.eulerAngles = new Vector3(this.transform.eulerAngles.x + 90, this.transform.eulerAngles.y, this.transform.eulerAngles.z);
|
||||
isSliding = false;
|
||||
moveController.height = 2.0f;
|
||||
pStats.Traction = originalTraction;
|
||||
|
||||
}
|
||||
else{
|
||||
Debug.Log("Object above you");
|
||||
|
||||
}
|
||||
}
|
||||
//if button is not held down, and still slidding (if they let go but something was above them) check to see if something is still above them, if not
|
||||
else if (Input.GetKey(KeyCode.Q) == false && isSliding==true){
|
||||
//if nothing is above the object, stop slidding
|
||||
if (Physics.Raycast(this.gameObject.transform.position, up, out ray, 5f) == false)
|
||||
{
|
||||
this.gameObject.transform.eulerAngles = new Vector3(this.transform.eulerAngles.x - 90, this.transform.eulerAngles.y, this.transform.eulerAngles.z);
|
||||
isSliding = false;
|
||||
moveController.height = 2.0f;
|
||||
pStats.Traction = originalTraction;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Object above you");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user