单击按钮时的Unity动画返回到空闲动画

时间:2019-03-20 07:53:06

标签: unity3d animation button onclick

我有四个按钮来选择数字范围。 (单击的按钮应设置动画并保持缩放,以指示选择了哪个按钮)我试图统一播放按钮单击时的动画。因此,当单击按钮时,将播放动画并返回到空闲状态。但是我不希望它返回到空闲状态,而是希望它保留在单击动画剪辑的最后一帧(最后一帧比例为1.2)。循环时间未选中。 我在检查器中分配了onclick动画播放器播放(字符串)。请帮忙 还尝试了以下代码

public GameObject rangeBtn;
public Animator rangeBtnAnim;   

private void Start()
{
    if ((rangeBtn != null) && (rangeBtn.GetComponent<Animator>() != null))
    {
        rangeBtnAnim = rangeBtn.GetComponent<Animator>();
    }
}


public void PlayAnimation()
{
    rangeBtnAnim.Play("RangeSelectionButton_Pressed");
}

enter image description here

2 个答案:

答案 0 :(得分:1)

我在游戏中使用过的东西。假设您有两个动画:“空闲”和“动画”。 您希望动画完成后的按钮停留在最后一帧吗?然后,创建第三个动画Animated_Remains,它仅包含一个帧,最后一个来自Animated。

然后,在您的动画控制器中,在Animated(无循环)和Animated_Remains(循环)之间进行过渡。如果您希望从“动画”过渡到“空闲”时具有相同的行为,则可以创建第四个动画“ Idle_Remains”。

因此,单击按钮后,它将播放Animated动画,并自动过渡到Animated_Remains。

当我不得不用动画来移动我的相机并使它停留在最后一帧位置时,我这样做了。

答案 1 :(得分:1)

我只会将此设置与Parameters

一起使用

enter image description here

制作PressedAnimation剪辑 Loop Time,并使用bool参数,例如IsPressed。 (也可以使用触发器代替,但是在这种情况下,布尔操作更简单,更省力-触发器堆栈...)

比过渡设置:

空闲-> PressedAnimation

enter image description here

和PressedAnimation->空闲

enter image description here

比起您的代码,您应该进行设置

rangeBtnAnim.SetBool("IsPressed", true);

rangeBtnAnim.SetBool("IsPressed", false);

回到空闲状态。

注意,实际上,制作动画(如果不复杂的话)的最简单方法是在Idle中仅拥有 1 个关键帧,并且在PRessedAnimation中。 Unity会简单地根据过渡持续时间设置制作一个过渡动画,在值之间进行插值。


或者,如果您的动画变得更加复杂,您可能宁愿做类似的事情

enter image description here

对于这两个过渡
PressedAnimation-> StayPRessed
UnPressAnimation->空闲
使用ExitTime

enter image description here

另两个使用参数

enter image description here

enter image description here