try {
$memcache->set($key, serialize($Rows), MEMCACHE_COMPRESSED, 36000);
} catch(...) {
// do nothing
}
İ正在尝试制作2D hack&slash游戏,这就是为什么我需要一个战斗系统。 因此,要执行此操作,我想制作两个动画,SlashR用于右剑,SlashL用于左剑。我想要做的是,如果我按下鼠标按钮并且我的角色向右转,则将播放SlashR动画,反之反之亦然。 但是当我按下鼠标按钮(flipX = false)时,SlashR动画只播放一次。完成一个动画后,动画将完全停止,反之亦然。 但是也有奇怪的事情,当我向左转角色,然后向右转时,SlashR动画再次播放。 注意:SlashR和SlashL的循环时间未选中
答案 0 :(得分:1)
根据来自动画师的状态图,SlashR
和SlashL
的状态在完成后不会返回到Idle
。
动画完成后,这将使剪切状态保持其当前状态。
进行从SlashR
和SlashL
到Idle
(或您想要的任何状态)的状态转换,它应该可以解决问题。
但是也有奇怪的事情,当我向左转角色,然后向右转时,SlashR动画又在播放。
那是因为在您的
if ((_attack.attackk || Input.GetMouseButtonDown(0)) && spr.flipX==false)
{
anim.Play("SlashR");
}if((_attack.attackk || Input.GetMouseButtonDown(0)) && spr.flipX==true){
anim.Play("SlashL");
}
您不检查玩家当前是否在先进攻。
这样,当播放器在攻击时左右移动时,另一个动画立即开始播放。
您的新代码应为:
if ((_attack.attackk || Input.GetMouseButtonDown(0)) && spr.flipX==false) {
anim.SetTrigger("SlashR");
} else if((_attack.attackk || Input.GetMouseButtonDown(0)) && spr.flipX==true){
anim.SetTrigger("SlashL");
}
答案 1 :(得分:1)