蹲伏脚本/仅从一侧进行缩放变换

Crouch Script/ Scaling transform from one side only

我正在尝试制作一个蹲伏脚本,但是我的代码有问题,我在这里卡了好几个小时,我仍然不知道哪里出了问题。

我基本上只是想降低我的玩家转换为蹲伏的高度,并增加它以站立。

这是我的代码:

public float crouchSpeed;
public float crouchWalkSpeed;
public bool isCrouching = false;
public bool isCrouched = false;

void Update () {

    Crouch();
    IsCrouchingVoid();
}

public void Crouch()
    {
        if(Input.GetKeyDown(KeyCode.LeftControl) && isOnGroud)
        {
            isCrouched = !isCrouched;
            isCrouching = true;
        }
    }

    public void IsCrouchingVoid()
    {
        if(!isCrouched)
        {
            if (isCrouching)
            {
                    Vector3 temp = transform.localScale;
                    temp.y -= crouchSpeed / 60;
                    temp.x = 1f;
                    temp.z = 1f;
                    transform.localScale = temp;

                if (temp.y <= 0.5f)
                {
                    temp.y = 0.5f;
                    isCrouching = false;
                }
            }
        }

        else if(isCrouched)
        {
            if (isCrouching)
            {
                    Vector3 temp = transform.localScale;
                    temp.y += crouchSpeed / 60;
                    temp.x = 1f;
                    temp.z = 1f;
                    transform.localScale = temp;

                if (temp.y >= 1f)
                {
                    temp.y = 1f;
                    isCrouching = false;
                }
            }
        }
    }

谢谢。

编辑:

我正在使用 CharacterController 组件,因此无法使用 Physics.CapsuleCast 功能。

您是否尝试过使用 CharacterControllerheight 属性?

你可以在 IsCrouchingVoid() 方法中降低它的高度而不是仅仅玩 scale 来获得蹲伏的行为。