I’m having a bit of a problem, I’m trying to add a crouch function to my game, I have the animation and camera position working perfectly, but the problem is the collider.
I’m trying to reduce the collider size and position, but when I do that, every time I go to crouch, then back up, I always go right through the floor.
Here’s my code:
private bool crouching;
public float crouchColliderHeight;
public float crouchColliderYPosition;
private float currentColliderHeight;
private float currentColliderYPosition;
private CharacterController characterCollision;
void Start ()
{
currentColliderHeight = characterCollision.height;
currentColliderYPosition = characterCollision.center.y;
}
void Update ()
{
crouching = Input.GetButton("Crouch");
if (crouching)
{
characterCollision.height = crouchColliderHeight;
characterCollision.center = new Vector3(characterCollision.center.x, crouchColliderYPosition, characterCollision.center.z);
}
else
{
if (characterCollision.height != currentColliderHeight)
{
float previousGravity = gravity;
characterCollision.height = currentColliderHeight;
gravity = 0;
characterCollision.center = new Vector3(characterCollision.center.x, currentColliderYPosition, characterCollision.center.z);
gravity = previousGravity;
}
}
}
What am I doing wrong?
Also, is there anyway to make it so that if the crouch collider is hitting something above it, it will stay crouching even after you let go of the crouch key?