怪异的2D跳跃问题

时间:2018-10-31 13:48:46

标签: c# unity3d gameobject

我有一个很奇怪的问题,我好几天都找不到解决方法。我在屏幕上有2个按钮。一种是跳跃,另一种是进攻。

当我按下跳转按钮时,直到随后再按下Attack之前什么都没有发生。当我按下跳转按钮后立即按下Attack时,玩家会同时进攻并跳跃。

如果我跳跳后没有按下攻击,则什么也不会发生。仅当游戏对象上的动画师组件处于活动状态时,才会出现此问题。停用后,播放器根本不会跳。

这些是方法:

 public void Jump()
{

  if(isGrounded && canJump)
    {
      anim.SetTrigger("jump");
      p.velocity = new Vector2(0,jumpHeight);
      canJump = false;
    }                  
}

   public void Attack()
{
    if(canAttack())
    { 
         anim.SetTrigger("attack");
    }
}

这是Animator组件的外观:

https://imgur.com/a/TSJSgNC

以下是canMovecanAttackcanRun的计算方式:

//This defines if the character has the ability to move while attacking
bool canMove()
{
    if (agile == false)
    {
        if(anim.GetCurrentAnimatorStateInfo(0).IsName("Attack"))
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    else if (agile)
    {
        return true;
    }
    else
        return false;
}
//Game is an endless runner so, when the game starts and character isn't dead, character keeps running.
bool canRun()
{
    if(m.gameStarted && ph.isDead == false)
    {
        return true;
    }
    else
    {
        return false;
    }
}

bool canAttack()
{

    if(!anim.GetCurrentAnimatorStateInfo(0).IsName("Attack") && isGrounded && canJump)
    {
        return true;
    }
    else
    {
        return false;
    }
}

0 个答案:

没有答案