最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity 如何設(shè)定 Animator分割播放

 更新時(shí)間:2021年04月10日 15:33:22   作者:玉速林瘋  
這篇文章主要介紹了Unity 設(shè)定 Animator分割播放的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

項(xiàng)目有個(gè)需求,一整段非常長(zhǎng)的Animator 動(dòng)畫, 分割成一份份的播放,我們點(diǎn)擊相應(yīng)的按鈕就播放某個(gè)時(shí)間點(diǎn)的動(dòng)畫,廢話不多說(shuō)

新建一個(gè)空物體加上toggle group,

下面是一堆的toggle并在Group里加上父親

 private Animator myAnimator;
    public List<Toggle> myTogglesList;
    private float playTime;
    public void Awake()
    {
        myAnimator = GameObject.Find("XXX/xxx").GetComponent<Animator>();
        myTogglesList.AddRange(transform.GetComponentsInChildren<Toggle>());
    }
    public void Start()
    {
        base.Start();
        for (int i = 0; i < myTogglesList.Count; i++)
        {
            Toggle go = myTogglesList[i];
            myTogglesList[i].onValueChanged.AddListener((bool value) => OnClickBtn(go.gameObject, value));
        }
    }

void Update()
    {
     //playTime  得到當(dāng)前時(shí)間點(diǎn)
        playTime = myAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime;
        Debug.Log(playTime);
        if (myTogglesList[0].isOn && playTime > 0.1f)
        {
         //Animator.Play("ANI1", 0, 0f)  第一參數(shù) ANI1動(dòng)畫名  第二參數(shù)0,為0層, 第三參數(shù) 0f,為開始時(shí)間
            myAnimator.Play("ANI1", 0, 0f);
        }
        if (myTogglesList[1].isOn && playTime > 0.3f)
        {
            myAnimator.Play("ANI1", 0, 0.1f);
        }
        if (myTogglesList[2].isOn && playTime > 0.5f)
        {
            myAnimator.Play("ANI1", 0, 0.3f);
        }
        if (myTogglesList[3].isOn && playTime > 0.8f)
        {
            myAnimator.Play("ANI1", 0, 0.5f);
        }
  .........................
    }
    private void OnClickBtn(GameObject go, bool value)
    {
        switch (go.name)
        {
            case "btn01 (1)":
                myAnimator.Play("ANI1", 0, 0f);
                break;
            case "btn01 (2)":
                myAnimator.Play("ANI1", 0, 0.1f);
                break;
            case "btn01 (3)":
                myAnimator.Play("ANI1", 0, 0.3f);
                break;
            case "btn01 (3)":
                myAnimator.Play("ANI1", 0, 0.5f);
                break;
                .........................
        }
    }

補(bǔ)充:Unity animator不剪輯動(dòng)畫實(shí)現(xiàn) 分段播放動(dòng)畫

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

public Animator anim;
    private AnimatorStateInfo animInfo;    
    /// <summary>
    /// 控制動(dòng)畫暫停和播放
    /// </summary>
    int playSpeed = 0;
    void Update()
    { 
        animInfo = anim.GetCurrentAnimatorStateInfo(0);
        //判斷正在播放Take 001動(dòng)畫
        if (animInfo.normalizedTime < 0.99f && animInfo.IsName("Take 001"))
        {
            //第一段動(dòng)畫
            if (animInfo.normalizedTime > 0.19 && animInfo.normalizedTime < 0.2)
            {
                //達(dá)到條件時(shí)暫停播放動(dòng)畫
                print("暫停播放1");
                anim.speed = playSpeed; 
            }
            //第二段動(dòng)畫
            else if (animInfo.normalizedTime > 0.39 && animInfo.normalizedTime < 0.4)
            {
                print("暫停播放2");
                anim.speed = playSpeed;
            }
            else
            {
                //自動(dòng)設(shè)置回停止播放條件
                playSpeed = 0;
            } 
        }
     }
 
    /// <summary>
    /// 開始播放動(dòng)畫
    /// </summary>
    private void PlayAnim()
    {
        //設(shè)置播放動(dòng)畫條件
        playSpeed = 1;
    }

animInfo.normalizedTime 動(dòng)畫狀態(tài)標(biāo)準(zhǔn)化時(shí)間,一段動(dòng)畫值為從0~1。到1則動(dòng)畫播放完畢

animInfo.IsName("Take 001") 當(dāng)前播放的動(dòng)畫,Take 001是動(dòng)畫名稱

原理:首先要知道每段動(dòng)畫結(jié)束幀,然后該段動(dòng)畫結(jié)束幀除于總幀得到該結(jié)束幀在animInfo.normalizedTime 的值,最后作為條件暫停動(dòng)畫,繼續(xù)播放動(dòng)畫可實(shí)現(xiàn)下一段動(dòng)畫的啟停。

比如:有一個(gè)動(dòng)畫100幀,不剪輯,需要播放多段動(dòng)畫。

得知第一段的結(jié)束幀在20幀,那么20/100=0.2,0.2則為normalizedTime 值作為動(dòng)畫暫停條件(寫條件的時(shí)候可以設(shè)個(gè)范圍)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • C#中的委托數(shù)據(jù)類型簡(jiǎn)介

    C#中的委托數(shù)據(jù)類型簡(jiǎn)介

    委托是一個(gè)類型安全的對(duì)象,它指向程序中另一個(gè)以后會(huì)被調(diào)用的方法(或多個(gè)方法)。通過(guò)本文給大家介紹C#中的委托數(shù)據(jù)類型簡(jiǎn)介,對(duì)c委托類型相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • C#實(shí)現(xiàn)定時(shí)關(guān)機(jī)小應(yīng)用

    C#實(shí)現(xiàn)定時(shí)關(guān)機(jī)小應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)定時(shí)關(guān)機(jī)小應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • C#中多態(tài)現(xiàn)象和多態(tài)的實(shí)現(xiàn)方法

    C#中多態(tài)現(xiàn)象和多態(tài)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#中多態(tài)現(xiàn)象和多態(tài)的實(shí)現(xiàn)方法,較為詳細(xì)的分析了多態(tài)的原理與C#實(shí)現(xiàn)多態(tài)的方法,以及相關(guān)的注意事項(xiàng),需要的朋友可以參考下
    2015-05-05
  • 詳解C#中的string與String

    詳解C#中的string與String

    本篇文章主要對(duì)jC#中的小寫string與大寫String進(jìn)行詳細(xì)介紹,相信對(duì)大家學(xué)習(xí)會(huì)有很好的幫助,需要的朋友一起來(lái)看下吧
    2016-12-12
  • C#將hashtable值轉(zhuǎn)換到數(shù)組中的方法

    C#將hashtable值轉(zhuǎn)換到數(shù)組中的方法

    這篇文章主要介紹了C#將hashtable值轉(zhuǎn)換到數(shù)組中的方法,涉及C#中CopyTo方法的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 如何使用C#串口通訊實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收

    如何使用C#串口通訊實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收

    本文詳細(xì)介紹了如何使用C#實(shí)現(xiàn)基于串口通訊的數(shù)據(jù)發(fā)送和接收,通過(guò)SerialPort類,我們可以輕松實(shí)現(xiàn)串口通訊,并結(jié)合事件機(jī)制實(shí)現(xiàn)數(shù)據(jù)的傳遞和處理,感興趣的朋友一起看看吧
    2025-03-03
  • Visual C#中如何使用IComparable和IComparer接口

    Visual C#中如何使用IComparable和IComparer接口

    這篇文章主要介紹了C#中使用IComparable和IComparer接口,在本例中,該對(duì)象被用作第二個(gè)參數(shù)被傳遞給Array.Sort的接受IComparer實(shí)例的重載方法,需要的朋友可以參考下
    2023-04-04
  • 通過(guò)C#實(shí)現(xiàn)在Word中插入或刪除分節(jié)符

    通過(guò)C#實(shí)現(xiàn)在Word中插入或刪除分節(jié)符

    在Word中,分節(jié)符是一種強(qiáng)大的工具,用于將文檔分成不同的部分,每個(gè)部分可以有獨(dú)立的頁(yè)面設(shè)置,如頁(yè)邊距、紙張方向、頁(yè)眉和頁(yè)腳等,本文將介紹如何使用一個(gè)免費(fèi)的.NET庫(kù)通過(guò)C#實(shí)現(xiàn)插入或刪除Word分節(jié)符,需要的朋友可以參考下
    2024-08-08
  • 解答“60k”大佬的19道C#面試題(下)

    解答“60k”大佬的19道C#面試題(下)

    這篇文章主要解答了“60k”大佬的19道C#面試題中的后9道,文中的面試題比較小眾,作者給了不錯(cuò)的答案,相信對(duì)你以后的面試有所幫助,感興趣就來(lái)了解下
    2020-06-06
  • C# 創(chuàng)建控制臺(tái)應(yīng)用程序

    C# 創(chuàng)建控制臺(tái)應(yīng)用程序

    這篇文章主要介紹了C# 創(chuàng)建控制臺(tái)應(yīng)用程序,在學(xué)習(xí)C#語(yǔ)言的時(shí)候,首先要學(xué)習(xí)控制臺(tái)的應(yīng)用程序,這樣才能專注于語(yǔ)言的學(xué)習(xí),減少學(xué)習(xí)的梯度,也有利于輸出自己需要輸出的內(nèi)容,一定要先使用控制臺(tái)的應(yīng)用程序的方式,下面就和小編一起學(xué)習(xí)該內(nèi)容吧
    2021-10-10

最新評(píng)論

常熟市| 闽侯县| 师宗县| 龙井市| 红河县| 滦南县| 阿克陶县| 武城县| 浏阳市| 临夏市| 三河市| 怀安县| 额敏县| 攀枝花市| 哈密市| 白银市| 龙里县| 西林县| 荣成市| 卓资县| 崇州市| 东港市| 华蓥市| 抚顺县| 广东省| 石柱| 册亨县| 应城市| 伊通| 赣州市| 同心县| 利川市| 克拉玛依市| 军事| 黑龙江省| 六盘水市| 油尖旺区| 扶余县| 丰顺县| 宜州市| 时尚|