Как управлять анимацией трехмерного объекта с помощью ползунка в единстве - PullRequest
0 голосов
/ 20 ноября 2018

Скажем, у нас на сцене есть трехмерный игровой объект с одной анимацией, так что я должен сделать, чтобы управлять его анимацией с помощью ползунка, например, если изменить значения ползунка, анимация будет воспроизводиться в соответствии с этими значениями

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Полагаю, вам нужно что-то похожее на VideoPlayer (например, видеоплеер YouTube), но с анимацией.Начните здесь: https://docs.unity3d.com/ScriptReference/AnimationState-time.html

using UnityEngine;
using System.Collections;

    public class ExampleScript : MonoBehaviour
    {
        public Animation anim;
        public float animationTime;// attach your slider value to this float

        void Update()
        {
            anim["Walk"].time = animationTime;
        }
    }
0 голосов
/ 20 ноября 2018

Я предполагаю, что вы создали аниматор с их анимацией.

Вам нужно только знать, что ваш обратный вызов onValueChanged вызывается каждый раз, когда вы изменяете значение слайдера.Так что там, где вы хотите установить новые режимы анимации.

using UnityEngine;
using System.Collections;
using UnityEngine.UI; // Required when Using UI elements.

public class SliderAnimator : MonoBehaviour
{
    public Slider mainSlider;
    public Animator anim;
    public void Start()
    {
        //Adds a listener to the main slider and invokes a method when the value changes.
        mainSlider.onValueChanged.AddListener(delegate {ValueChangeCheck(); });
    }

    // Invoked when the value of the slider changes.
    public void ValueChangeCheck()
    {           
        //Here we set the animation            
        switch((int)mainSlider.value){
          case 0:
            //Set first animation
            anim.SetBool("FirstAnimationName", true);
            break;
          case 1:
            //Set second animation
            anim.SetBool("SecondAnimationName", true);
            break;
          default:            
            break;
        }

        //To avoid casting the mainSlider.value
        if(mainSlider.value >= 0 && mainSlider.value < 0.5f)
        {
            //Set first animation
            anim.SetBool("FirstAnimationName", true);
        }
        if(mainSlider.value >= 0.5f && mainSlider.value <= 1f)
        {
            //Set second animation
            anim.SetBool("SecondAnimationName", true);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...