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

Posted

技术标签:

【中文标题】按钮单击时的 Unity 动画返回空闲动画【英文标题】:Unity Animation on Button Click returns to Idle animation 【发布时间】:2019-03-20 07:53:06 【问题描述】:

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

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");

【问题讨论】:

【参考方案1】:

我会简单地将这个设置与Parameters一起使用

制作PressedAnimation 剪辑not Loop Time 并使用bool 参数,例如IsPressed。 (也可以使用触发器,但在这种情况下,布尔值更容易且更节省 - 触发器堆栈......)

比过渡的设置:

空闲 -> PressedAnimation

和 PressedAnimation -> 空闲

而不是在您的代码中设置

rangeBtnAnim.SetBool("IsPressed", true);

rangeBtnAnim.SetBool("IsPressed", false);

回到空闲状态。

注意实际上拥有动画(如果它们不复杂)的最简单方法是在 Idle 和 @ 中仅具有 1 个单个关键帧987654343@。 Unity 不会简单地根据过渡持续时间设置在值之间插入过渡动画。


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

对于两个过渡 PressedAnimation -> 保持Pressed UnPressAnimation -> 空闲 使用ExitTime

其他两个使用参数

【讨论】:

非常感谢您花这么多精力为我详细解释。我正在重做一切。很快就会更新你。再次感谢 此解决方案适用于另一个按钮。只有范围选择按钮的问题是 - 单击时我正在重新加载场景,因此默认情况下它会返回空闲状态。【参考方案2】:

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

然后,在动画控制器中,在 Animated(无循环)和 Animated_Remains(循环)之间放置一个过渡。如果您希望在从 Animated 过渡到 Idle 时具有相同的行为,那么您可以创建第 4 个动画 Idle_Remains。

所以,点击你的按钮后,它会播放 Animated 动画,并自动过渡到 Animated_Remains。

当我必须使用动画移动我的相机并使其停留在最后一帧位置时,我这样做了。

【讨论】:

非常感谢。我会试试这个并尽快更新你。我挣扎了很长时间 我在我的问题中添加了截图。我创建了过渡来保持动画(检查循环),但仍返回空闲状态。我在点击按钮时打电话给RangeSelectionButton_Pressed。你能告诉我有什么问题吗? 或者你只是让动画剪辑不是Loop所以它无论如何都会停留在动画的最后一个关键帧上

以上是关于按钮单击时的 Unity 动画返回空闲动画的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时的动画视图

Unity:使用动画师实例化预制件

Unity 3D 导入三维模型||Unity 3D 动画系统简介(Mecanim)

unity3d 如何用GUI按钮播放动画脚本怎么写

在as3中移动时的行走动画

如何在 Unity 上播放死亡动画?