【问题标题】:Trigger attack even while space is held即使在保持空间的情况下也能触发攻击
【发布时间】:2022-11-14 00:15:55
【问题描述】:

对统一和 C# 非常陌生,但我自己无法解决这个问题。提前致谢。

我正在制作 2D 平台游戏。当我的玩家角色在空中时,我的攻击动画不会触发。我有以下代码来控制跳转,当按下空格时执行跳转命令;按住会跳得更高,松开跳跃会取消向上的速度并允许玩家下落。

        //Jump controller
        var jumpInput = Input.GetButtonDown("Jump");
        var JumpInputReleased = Input.GetButtonUp("Jump");
        if(jumpInput && IsGrounded())
            JumpExc();

        if(JumpInputReleased && body.velocity.y > 0)
        {
            body.velocity = new Vector2(body.velocity.x,0);
        }
    private void JumpExc()
    {
        body.velocity = new Vector2(body.velocity.x,bounce);
    }

那我也有这个

        //Control Ground Melee Attack
        if (Input.GetMouseButtonDown(0) && IsGrounded())
        {
            Attack();
        }

        //Control Jumping Melee Attack
        if (Input.GetMouseButtonDown(0) && body.velocity.y > 0)
        {
            JumpAttack();
        }
    //Execute Ground Melee Attack
    void Attack()
    {
        anim.SetTrigger("Attack");
    }

    //Execute Jumping Melee Attack
    void JumpAttack()
    {
        anim.SetTrigger("JumpAttack");
    }

地面攻击完美无缺。跳跃效果很好。当我跳攻击,角色“等待”空间被释放,在跳跃的顶点攻击,然后摔倒。我基本上希望 Unity 做到:“无论如何,按命令出击”。

在我的 Animator 中,每当触发 Attack() 时,我都会从 Any State 过渡到 Attack。跳跃动画分为上升和下降(如果 y 速度为正,上升为真;当 y 速度为负时,下降为真)。当 JumpAttack 被触发时,我也有从 Jump 到 Jump Attack 的过渡,但它不会这样做——它总是在执行攻击之前等待空间被释放。

我认为问题在于 Unity 变得混乱,因为我正在按住空间——它希望我在触发攻击之前释放空间。但我不知道还有什么方法可以拥有可变的跳跃高度并进行跳跃攻击。

【问题讨论】:

    标签: unity3d game-engine


    【解决方案1】:

    尝试像这样更改条件:

    if (Input.GetMouseButtonDown(0))
    {
      if(IsGrounded())
      {
        Attack();
      }
      else if (body.velocity.y > 0)
      {
        JumpAttack();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 2017-11-04
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      相关资源
      最近更新 更多