I am trying to make my crouch script change the movement speed. The way I do it now, it only works for the 0.0001 second or so that the keycode is clicked. However I do need crouching to stay:
-Click C while standing = Crouch
-Click C again while crouching = Stand back up
Any ideas?
Crouching
if (Input.GetKey(KeyCode.C) && characterController.isGrounded)
{
Crouch(forwardSpeed,sideSpeed);
}
public void Crouch(float forwardSpeed, float sideSpeed) {
if (!isCrouching) //Crouch
{
isCrouching = true;
isProne = false;
isStanding = false;
characterController.height = crouchHeight;
forwardSpeed = Input.GetAxis ("Vertical") * crouchingSpeed;
sideSpeed = Input.GetAxis ("Horizontal") * crouchingSpeed;
Vector3 speed = new Vector3 (sideSpeed, verticalVelocity, forwardSpeed);
speed = transform.rotation * speed;
characterController.Move (speed * Time.deltaTime);
// characterController.center = Vector3(0, -0.5, 0);
// tempCamera.transform.localPosition.y -= crouchHeight;
}
else //Stand back up
{
isCrouching = false;
characterController.height = charHeight;
isStanding = true;
isProne = false;
// characterController.center = Vector3(0, 0, 0);
// tempCamera.transform.localPosition.y += crouchHeight;
forwardSpeed = Input.GetAxis("Vertical") * movementSpeed;
sideSpeed = Input.GetAxis("Horizontal") * movementSpeed;
}
}
**Normal Speed**
forwardSpeed = Input.GetAxis("Vertical") * movementSpeed;
sideSpeed = Input.GetAxis("Horizontal") * movementSpeed;
Vector3 speed = new Vector3 (sideSpeed, verticalVelocity, forwardSpeed);
speed = transform.rotation * speed;
characterController.Move (speed * Time.deltaTime);