【问题标题】:Creating an animation scrubber in unity统一创建动画洗涤器
【发布时间】:2016-05-09 22:42:32
【问题描述】:

我正在尝试创建一个用于在 Unity 中展示 3d 动画模型的擦洗器。

我有一个可以更新动画的当前帧,但是在播放动画帧时不会更新滑块。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class NewAnimController : MonoBehaviour {

    public Slider slider;
    public Animator animator;

    private AnimationState anim;

    void Start()
    {
        animator.speed = 0.0001f;
        slider.onValueChanged.AddListener(OnValueChanged);
        anim = GetComponent<Animation>()["Take 001"];

    }

    void Update ()
    {
        anim.time = slider.value;
    }

    public void OnValueChanged(float changedValue)
    {
        animator.speed = 0.0001f;
        animator.Play("Take 001", -1, slider.normalizedValue);
    }

请帮忙。非常感谢

【问题讨论】:

  • Youtube 有一个洗涤器,您可以使用它来将当前时间移动到所需的位置。

标签: c# animation unity3d


【解决方案1】:

这在普通的 Unity.UI (2016) 中非常简单......

1 - 点击“添加画布”

2 - 点击“添加滑块”

3 - 一行代码Update...

GetComponent<Slider>.value = .. your animation time ..

就是这样!

如果您喜欢不同的滑块旋钮,只需拖入不同的图像即可。在编辑器中根据需要更改滑块宽度、颜色等。


为未来的读者注意,获得动画时间似乎通常是

float t = animator.GetCurrentAnimatorStateInfo(0).normalizedTime;

【讨论】:

  • 你提供的代码是c#还是js?滑块也可以双向工作,动画会在播放时更新滑块,如果您移动滑块,它会更改动画的当前帧?
  • 不在这个问题上我觉得我很好,我会看看我能从另一个问题中实现什么,非常感谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多