如何解决我统一制作了C#脚本以进行蹲伏,当我蹲伏时按ctrl时我不会站立
我想能够在蹲伏时站起来并将其添加到脚本中,但是我这样做的方法似乎不起作用。这是我的代码
using UnityEngine;
public class crouching : MonoBehaviour
{
public bool ctrlPressed = false;
public bool ctrlPressedHalf = false;
public bool crouchTimeRunning = false;
public bool crouchOnCoolDown = false;
public bool crouchAvailable = true;
public float timer = 0.0f;
public float waitTime = 0.0f;
// Update is called once per frame
void Update()
{
ctrlPressed = false;
ctrlPressedHalf = false;
if (crouchTimeRunning)
{
timer += Time.deltaTime;
if (timer >= waitTime)
{
crouchTimeRunning = false;
crouchOnCoolDown = true;
timer = 0.0f;
waitTime = 2.0f;
transform.localScale = new Vector3(10,20,10);
transform.position = new Vector3(0,11,0);
}
}
if (crouchOnCoolDown)
{
timer += Time.deltaTime;
if (timer >= waitTime)
{
crouchOnCoolDown = false;
crouchAvailable = true;
timer = 0.0f;
waitTime = 0.0f;
}
}
if (ctrlPressedHalf & crouchTimeRunning)
{
crouchTimeRunning = false;
timer = 0.0f;
waitTime = 2.0f;
crouchOnCoolDown = true;
transform.localScale = new Vector3(10,10);
transform.position = new Vector3(0,0);
}
if (Input.GetKey(KeyCode.LeftControl))
{
ctrlPressedHalf = true;
}
if (ctrlPressedHalf & crouchAvailable)
{
ctrlPressed = true;
}
if (ctrlPressed)
{
transform.localScale = new Vector3(10,10,5,0);
crouchTimeRunning = true;
crouchAvailable = false;
waitTime = 3.0f;
}
}
}
我为此发表了if
条声明:
if (ctrlPressedHalf & crouchTimeRunning)
{
crouchTimeRunning = false;
timer = 0.0f;
waitTime = 2.0f;
crouchOnCoolDown = true;
transform.localScale = new Vector3(10,10);
transform.position = new Vector3(0,0);
}
但是,它不起作用。
这是视频,您可以从ctrlPressedHalf
变量中看到我正在蹲伏:
https://youtu.be/W4kXkOO15X0
解决方法
首先,我认为您应该删除以下变量:
public bool ctrlPressed = false;
public bool ctrlPressedHalf = false;
public bool crouchTimeRunning = false;
public bool crouchOnCoolDown = false;
public bool crouchAvailable = true;
它们似乎在这里都是不必要的。不过,您这里需要一个布尔值:
bool isCrouching = false;
接下来,您将需要一个if语句用于蹲伏(该语句将在用户按住ctrl左键时执行):
//continue crouching if the player is already crouching and holding the left control button
//timer will affect this if statement if the player is not crouching and clicks the left control button
if(Input.GetKey(KeyCode.LeftControl) && (timer <= 0 || isCrouching))
{
transform.localScale = new Vector3(10,10,10);
transform.position = new Vector3(0,5,0);
//if I understood correctly,the two lines above were responsible for making a game object crouch
timer = 3f;
isCrouching = true;
}
else
{
isCrouching = false;
timer -= Time.deltaTime;
//whatever code you had there that would make a game object stop crouching
}
,
您的蹲伏动画剪辑有退出时间吗?首先将其设置为false。另外,从蹲伏到站立,您的跨性别持续时间等于零。如果您尚未创建任何动画师组件,建议您这样做。这样可能会更好。通过动画师,您将能够创建不同的动画。制作完动画后,Unity将提供选项以在剪辑期间操纵位置,缩放甚至旋转。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。