Unity3d 冲压布尔没有将动画变量设置为true到false

Unity3d 冲压布尔没有将动画变量设置为true到false,unity3d,Unity3d,简而言之,我想编写一个打孔脚本,在这个脚本中,每当玩家按下j键时,就会播放打孔动画。问题是没有播放打孔动画。这是我的代码,还有我和动画制作人的截图,还有我的打孔动画 void Start() { anim=GetComponent(); } //每帧调用一次更新 无效更新() { if(Input.GetKeyDown(KeyCode.J))//攻击 { 打印(“打孔次数”); 打孔=正确; i打孔(打孔); }否则 { 打孔=假; i打孔(打孔); } } 无效ispunching(bool

简而言之,我想编写一个打孔脚本,在这个脚本中,每当玩家按下j键时,就会播放打孔动画。问题是没有播放打孔动画。这是我的代码,还有我和动画制作人的截图,还有我的打孔动画

void Start()
{
anim=GetComponent();
}
//每帧调用一次更新
无效更新()
{
if(Input.GetKeyDown(KeyCode.J))//攻击
{
打印(“打孔次数”);
打孔=正确;
i打孔(打孔);
}否则
{
打孔=假;
i打孔(打孔);
}
}
无效ispunching(bool punch)
{
如果(打孔)
{
打印(“打孔:+打孔);
动画设置工具(“冲压”,冲压);
Waitilpunchanimfinish(1f);
}
否则,如果(!punch)
{
打印(“不打孔”+打孔);
动画设置工具(“冲压”,冲压);
}
}
IEnumerator WaitilpunChanimFinish(浮动时间)
{
返回新的WaitForSeconds(时间);
打孔=假;
} 
这是这里的图片。我知道空闲动画不会转换为打孔动画。我这样做是为了简化事情,这样人们可以更容易地修复它:

冲压动画图片关键帧

更新中

if(Input.GetKeyDown(KeyCode.J))//攻击
{
打印(“打孔次数”);
打孔=正确;
i打孔(打孔);
}否则
{
打孔=假;
i打孔(打孔);
}
因此,立即在下一帧中将
冲压
重置为
,此时
GetKeyDown
将不再是


相反,我更愿意像这样在协同程序中完成整个打孔程序

//此标志的唯一用途是不具有多个
//同时,科鲁因特。
私人拳击;
私有void Start()
{
anim=GetComponent();
}
私有void更新()
{
//仅在尚未打孔时接收输入
if(!punching&&Input.GetKeyDown(KeyCode.J))//攻击
{
start例程(Punch());
}
}
//一次性完成整个打孔程序
私有IEnumerator Punch()
{
打印(“开始打孔”);
打孔=正确;
动画设置工具(“冲压”,真);
返回新的等待秒(1f);
动画设置工具(“冲压”,假);
打孔=假;
打印(“完成的冲压”);
} 

您应该向我们提供更多信息。您是否尝试在现场检查您的
动画师是否将状态切换为“打孔”?您是否检查了
Animator
上的
冲压
bool设置是否正确?如果动画冲压状态的返回条件指定退出时间为1,它将在返回到前一状态之前完成动画。使用此动画功能而不是创建协同程序不是更好吗?