Я хочу сделать так, чтобы, если игрок приседал, его скорость со временем уменьшалась до тех пор, пока он не остановился.
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float walkSpeed = 10f;
public float jumpSpeed = 1f;
public float grav = 10f;
public float camFix;
public GameObject player;
public GameObject cam;
public Transform orientation;
public Rigidbody rb;
public float counterMovement = 0.175f;
private bool crouching;
public float slideCounterMovement = 1000f;
private Vector3 moveDirection = Vector3.zero;
private CharacterController controller;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
public void counterMove()
{
if (crouching == true)
{
rb.AddForce(walkSpeed * Time.deltaTime * -rb.velocity.normalized * slideCounterMovement);
return;
}
}
void Start()
{
controller = GetComponent<CharacterController>();
}
void Update()
{
//////
movement script is here
//////
if (Input.GetKeyDown("c"))
{
Crouching();
crouching = true;
}
if (Input.GetKeyUp("c"))
{
NotCrouching();
crouching = false;
}
moveDirection.y -= grav * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
private void Crouching()
{
player.transform.localScale = new Vector3(0.5f, 0.4f, 0.5f);
}
private void NotCrouching()
{
player.transform.localScale = new Vector3(0.5f, 1.3f, 0.5f);
}
}
Это то, что у меня сейчас. Это отлично работает, кроме того факта, что они могут go так быстро, как они хотят во время приседания. Я просмотрел много других сообщений, связанных с этим, и ни один из них не работал. Если они нажимают какую-либо клавишу, они соответственно будут двигаться в этом направлении.