Crouch Script / Scaling仅从一侧转换

时间:2015-07-23 23:30:13

标签: c# unity3d transform scale

我试图制作一个蹲伏的脚本,但是我的代码出了问题,我已经被困在这里好几个小时了,我仍然不知道出了什么问题。

我基本上只是试图将我的玩家变换的高度降低到蹲伏,然后增加它以便站起来。

这是我的代码:

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功能。

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用CharacterController的{​​{1}}属性?

您可以使用height方法降低其高度,而不是只使用IsCrouchingVoid()来获取蹲伏的行为。