簡體   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