[英]Unity character doesn't stop sprinting
最近才接触Unity,做了一个角色移动系统; 除了冲刺之外,一切都在工作。 我让用户使用“左移”来冲刺,尽管冲刺似乎永远不会关闭。 我不太确定为什么会发生这种情况的原因,或者可以修复哪些代码部分来适应这种情况,因此,我附上了移动的源文件。
这是粘贴: https://pastebin.com/S1h5pEwq
特别是,这是机芯 function:
void Movement()
{
Vector2 axis = new Vector2(Input.GetAxis("Vertical"), Input.GetAxis("Horizontal")) * walkSpeed;
Vector3 forward = new Vector3(-Camera.main.transform.right.z, 0.0f, Camera.main.transform.right.x);
Vector3 wishDirection = (forward * axis.x + Camera.main.transform.right * axis.y + Vector3.up * rb.velocity.y);
rb.velocity = wishDirection;
if (Input.GetKey(KeyCode.LeftShift))
{
isSprinting = true;
}
else
{
isSprinting = false;
}
if (isSprinting == true)
{
walkSpeed = 10.0f;
}
}
更具体地说,我的目标是在按下键时严格激活 Sprint。
尝试这个:
void Movement()
{
Vector2 axis = new Vector2(Input.GetAxis("Vertical"), Input.GetAxis("Horizontal")) * walkSpeed;
Vector3 forward = new Vector3(-Camera.main.transform.right.z, 0.0f, Camera.main.transform.right.x);
Vector3 wishDirection = (forward * axis.x + Camera.main.transform.right * axis.y + Vector3.up * rb.velocity.y);
rb.velocity = wishDirection;
if (Input.GetKey(KeyCode.LeftShift))
{
isSprinting = true;
}
else
{
isSprinting = false;
}
if (isSprinting == true)
{
walkSpeed = 10.0f;
}
else
{
walkSpeed = 0.0f
}
}
您的脚本中的问题是您没有重置速度。
If(Input.GetKeyUp(KeyCode.LeftShift)){
isSprinting = false;
}
这样就可以了,您没有检查播放器何时停止按 shift。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.