- Home /
Crouching script not working?
Hey all, Im having lots of trouble with my player crouching script. When i press the "Crouch" button, i would like the both the camera and collider to lerp to a new position. Unfortunately, as my code stands, the camera will not move, and the collider moves only slightly. Im fairly new to unity so i would prefer an explanation as to why it is doing this over just the code to fix it.
Also when my crouch function starts, I determine whether or not the player is currently crouching by seeing if their position is equal to the standingHeight or crouchingHeight variable. How would i do this correctly if the player pressed "Crouch" in the middle of a lerp? Thank you all in advance :)
// Crouching function
public void performCrouch()
{
if (Input.GetButtonDown("Crouch"))
{
// Checks status of Collider.
if (col.height == standingHeight)
crouch = true;
if (col.height == crouchHeight)
crouch = false;
// Transforms Collider and Camera.
if (crouch == true)
{
float desiredPos = 1f;
float tempPos = fpsCam.transform.localPosition.y;
tempPos = Mathf.SmoothDamp(tempPos, desiredPos, ref velocityY, 0.4f);
fpsCam.transform.localPosition = new Vector3(0f, tempPos, 0f);
tempHeight = col.height;
tempHeight = Mathf.Lerp(tempHeight, crouchHeight, 5f * Time.fixedDeltaTime);
col.height = tempHeight;
}
if (crouch == false)
{
Vector3 desiredPos = new Vector3(0f, standingHeight, 0f);
Vector3 tempPos = fpsCam.transform.localPosition;
tempPos = Vector3.Lerp(tempPos, desiredPos, 2f * Time.fixedDeltaTime);
fpsCam.transform.localPosition = tempPos;
tempHeight = col.height;
tempHeight = Mathf.Lerp(tempHeight, standingHeight, 5f * Time.fixedDeltaTime);
col.height = tempHeight;
}
}
}
Your answer
Follow this Question
Related Questions
Smooth camera shift, Lerp? SmoothShift? 2 Answers
It is possible to add a Cinemachine ColliderComponent to Cinemachine FreeLookComponent 0 Answers
How do I make sure that my character does not collide with flying obstacles when crouching? 2 Answers
2D Camera Smooth follow, FixedUpdate and LateUpdate odd difference, help needed. 1 Answer
Why does this IF statement loop without finishing? 0 Answers