簡體   English   中英

蹲下時不沖刺嗎?

[英]Not sprint while crouching?

因此,我正處於制作FPS游戲的初期階段,並且我剛剛實現了沖刺和蹲伏功能(蹲下此刻只會減慢玩家的速度)。 函數就是這樣的:

private void sprintInput()
{

    if (Input.GetKeyDown(sprintKey))
    {           
        movementSpeed *= 2f;
    }
    if (Input.GetKeyUp(sprintKey))
    {          
        movementSpeed /= 2f;
    }
}


private void crouchInput()
{
    if (Input.GetKeyDown(crouchKey))
    {           
        movementSpeed /= 2f;
    }
    if (Input.GetKeyUp(crouchKey))
    {
        movementSpeed *= 2f;
    }
}

無論這樣寫,它們顯然都可以同時被激活。 但我要蹲伏以覆蓋sprint。 因此,如果我同時使用sprint和蹲伏,則只會激活蹲伏。 我嘗試了多種方法,但沒有任何效果,我確定我遺漏了一些非常明顯的東西,我只是不知道什么。

是否蹲伏,將布爾變量設置為true / false。

bool isCrouching;

private void crouchInput()
{
    if (Input.GetKeyDown(crouchKey))
    {        
        isCrouching = true;   
        movementSpeed /= 2f;
    }
    if (Input.GetKeyUp(crouchKey))
    {
        isCrouching = false; 
        movementSpeed *= 2f;
    }
}

然后,您可以使用該變量來確保在沖刺之前不會蹲伏:

private void sprintInput()
{
    if (!isCrouching  && Input.GetKeyDown(sprintKey))
    {           
        movementSpeed *= 2f;
    }
    if (!isCrouching && Input.GetKeyUp(sprintKey))
    {          
        movementSpeed /= 2f;
    }
}

僅當不使用蹲伏式var / button時,才可以激活sprinting修飾符。

接受的答案實際上在您的游戲中發揮了作用。 玩家將按下sprint(速度x2),按下蹲伏(速度/ 2),釋放sprint( 什么都沒有發生 ),然后釋放蹲伏(速度x2),這將使他的速度永久加倍。

我認為更正確的方法將存儲兩個標志:

bool isCrouching, isSprinting;
float baseSpeed, movementSpeed;

private void sprintInput {
    if (Input.GetKeyDown(sprintKey)) {        
        isSprinting = true;
        UpdateSpeed ();
    }
    if (Input.GetKeyUp(sprintKey)) {
        isSprinting = false; 
        UpdateSpeed ();
    }
}

private void crouchInput {
    if (Input.GetKeyDown(crouchKey)) {        
        isCrouching = true;
        UpdateSpeed ();
    }
    if (Input.GetKeyUp(crouchKey)) {
        isCrouching = false; 
        UpdateSpeed ();
    }
}

private void UpdateSpeed () {
    movementSpeed = isCrouching ? baseSpeed / 2
                  : isSprinting ? baseSpeed * 2
                  :               baseSpeed;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM