蹲伏脚本/仅从一侧进行缩放变换
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 功能。
您是否尝试过使用 CharacterController
的 height
属性?
你可以在 IsCrouchingVoid()
方法中降低它的高度而不是仅仅玩 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 功能。
您是否尝试过使用 CharacterController
的 height
属性?
你可以在 IsCrouchingVoid()
方法中降低它的高度而不是仅仅玩 scale
来获得蹲伏的行为。