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