我试图制作一个蹲伏的脚本,但是我的代码出了问题,我已经被困在这里好几个小时了,我仍然不知道出了什么问题。
我基本上只是试图将我的玩家变换的高度降低到蹲伏,然后增加它以便站起来。
这是我的代码:
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功能。
答案 0 :(得分:2)
您是否尝试过使用CharacterController
的{{1}}属性?
您可以使用height
方法降低其高度,而不是只使用IsCrouchingVoid()
来获取蹲伏的行为。