我有一个很奇怪的问题,我好几天都找不到解决方法。我在屏幕上有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组件的外观:
以下是canMove
,canAttack
和canRun
的计算方式:
//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;
}
}