繁体   English   中英

团结角色不会停止冲刺

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM