Sliding | FEP
Wed Mar 30 2022 12:33:12 GMT+0000 (Coordinated Universal Time)
Saved by @BiscuitTinx #c#
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Sliding : MonoBehaviour { [Header("References")] public Transform orientation; public Transform playerObj; private Rigidbody rb; private Player player; [Header("Sliding")] public float maxSlideTime; public float slideForce; private float slideTimer; public float slideYScale; private float startYScale; [Header("Input")] public KeyCode slideKey = KeyCode.LeftControl; private float horizontalInput; private float verticalInput; private void Start() { rb = GetComponent<Rigidbody>(); player = GetComponent<Player>(); startYScale = playerObj.localScale.y; } private void Update() { horizontalInput = Input.GetAxisRaw("Horizontal"); verticalInput = Input.GetAxisRaw("Vertical"); // begins slide if (Input.GetKeyDown(slideKey) && (horizontalInput != 0 || verticalInput != 0)) StartSlide(); // stops slide if (Input.GetKeyUp(slideKey) && player.sliding) StopSlide(); } private void FixedUpdate() { if (player.sliding) SlidingMovement(); } private void StartSlide() { // this is to declare that the player is sldiing player.sliding = true; playerObj.localScale = new Vector3(playerObj.localScale.x, slideYScale, playerObj.localScale.z); rb.AddForce(Vector3.down * 5f, ForceMode.Impulse); slideTimer = maxSlideTime; } private void SlidingMovement() { Vector3 inputDirection = orientation.forward * verticalInput + orientation.right * horizontalInput; // sliding normal if(!player.OnSlope() || rb.velocity.y > -0.1f) { rb.AddForce(inputDirection.normalized * slideForce, ForceMode.Force); slideTimer -= Time.deltaTime; } // sliding down a slope else { rb.AddForce(player.GetSlopeMoveDirection(inputDirection) * slideForce, ForceMode.Force); } if (slideTimer <= 0) StopSlide(); } private void StopSlide() { // declares that the player has stopped sliding player.sliding = false; playerObj.localScale = new Vector3(playerObj.localScale.x, startYScale, playerObj.localScale.z); } }
Comments