【问题标题】:Is there a way to hold to long jump in Unity with a touchInput button?有没有办法通过 touchInput 按钮在 Unity 中保持跳远?
【发布时间】:2019-07-15 18:50:35
【问题描述】:

我正在制作一款游戏,我希望在跳跃时感觉像在《超级马里奥兄弟》中跳跃。我可以使用键盘或控制器获得我想要的结果,因为它们具有 KeyDown、Key(按下时)和按键。但是 touchButtons 只有一个布尔值。 (按下或未按下)有没有办法解决这个问题?

我尝试使用 Input.GetTouch 并使用开始和结束阶段,这给出了正确的结果,但我不确定如何将它实现到 GUI 按钮中。

我使用的代码有一个带有脚本的 GUI 按钮,当按下按钮时,joybutton.Pressed = true

void PlayerJump()
{
    bool canJump = charController.isGrounded;

    //Button Pressed start jumpDuration
    if (joybutton.Pressed && canJump)
    {
        isJumping = true;
        jumpDuration = jumpTime;
    }


    if (isJumping == true)
    {
        if (jumpDuration > 0)
        {
            vertical_Velocity = jump_Force;
            jumpDuration -= Time.deltaTime;
        }

    //timer runs out
        else
        {
           isJumping = false;
        }
    }

    //cancel jump if mid-air
    if (!joybutton.Pressed)
    {
        isJumping = false;
    }
}

一旦玩家使用 GUI 触摸按钮着陆,我无法阻止他们跳跃。我通过键盘和游戏手柄按钮获得了想要的结果。

【问题讨论】:

    标签: c# unity3d game-engine


    【解决方案1】:

    添加一个变量来记住上一帧按钮的状态。这样,只有当它是被点击按钮的第一帧时,您才能进入跳转开始块:

    private bool wasJumpPressedLastFrame = false;
    
    void PlayerJump()
    {
        bool canJump = charController.isGrounded;
    
        //Button Pressed start jumpDuration
        if (joybutton.Pressed && canJump && !wasJumpPressedLastFrame )
        {
            isJumping = true;
            jumpDuration = jumpTime;
        }
    
    
        if (isJumping == true)
        {
            if (jumpDuration > 0)
            {
                vertical_Velocity = jump_Force;
                jumpDuration -= Time.deltaTime;
            }
    
        //timer runs out
            else
            {
               isJumping = false;
            }
        }
    
        //cancel jump if mid-air
        if (!joybutton.Pressed)
        {
            isJumping = false;
        }
    
        wasJumpPressedLastFrame = joyButton.Pressed;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-13
      • 1970-01-01
      相关资源
      最近更新 更多