婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程

關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程

熱門(mén)標(biāo)簽:鶴壁高頻外呼系統(tǒng)多少錢(qián)一個(gè)月 400電話辦理費(fèi)用低 地圖標(biāo)注項(xiàng)目幾個(gè)月 宿遷怎么辦理400電話 外呼系統(tǒng)怎么群發(fā)短信 谷歌地圖標(biāo)注日期 聯(lián)通外呼系統(tǒng)電腦app軟件 400電話申請(qǐng)到底哪家好 蘇州呼叫中心外呼系統(tǒng)哪家強(qiáng)

一、前言

Unity可以用兩種方式控制動(dòng)畫(huà)
1 Animation,這種方式簡(jiǎn)單,直接 Play(“Idle”)或者CorssFade(“Idle”)就可以播放動(dòng)畫(huà);
2 AnimatorUnity5.x之后推薦使用這種方式,因?yàn)槔锩婵梢约由匣旌蟿?dòng)畫(huà),讓動(dòng)畫(huà)切換更加平滑。

二、Animator組件

你通過(guò)Animation窗口(快捷鍵是Ctrl+6)中的Create New Clip創(chuàng)建Animation時(shí),一個(gè) Animator已經(jīng)悄無(wú)聲息地出現(xiàn)在了對(duì)應(yīng)的GameObject

三、Animator Controller文件

在第一步中生成的Animator組件上, 第一個(gè)Controller參數(shù)在創(chuàng)建Animator時(shí)已經(jīng)被賦值了,可以點(diǎn)擊該值,并切換到Project窗口下,會(huì)發(fā)現(xiàn)這個(gè) Controller對(duì)應(yīng)的文件是一個(gè).controller文件。
Animator Controller就是動(dòng)畫(huà)控制器,負(fù)責(zé)在不同的動(dòng)畫(huà)間切換,屬于制作動(dòng)畫(huà)效果的必備原件。

注意,你也可以通過(guò)GameObject上的 Add Component添加一個(gè)嶄新的 Animator組件,但是這種情況下 AnimatorController參數(shù)默認(rèn)為空,所以需要我們手動(dòng)將事先準(zhǔn)備好的.controller文件拖拽到該參數(shù)位置,動(dòng)畫(huà)控制器才能正常工作。

四、Animation Clip文件

雙擊 .controller"文件,會(huì)彈出一個(gè) Animator窗口,該窗口中顯示的就是動(dòng)畫(huà)控制器文件中的所有內(nèi)容(也可以在頂部的工具欄通過(guò) Window - Animator打開(kāi)這個(gè)界面)

Project窗口右鍵單擊,選擇Create->Animation創(chuàng)建Animation Clip.anim文件)

再把.anim文件拖拽進(jìn)Animator窗口,作為Animator Controller的一個(gè)狀態(tài)(State

通過(guò)Animator創(chuàng)建出來(lái)的Animation Clip無(wú)法直接通過(guò)掛Animation組件進(jìn)行播放,如果強(qiáng)行播放,Console會(huì)報(bào)一條警告信息:

The AnimationClip 'XXX' used by the Animation component 'XXX' must be marked as Legacy.

以及一條提示信息

Default clip could not be found in attached animations list

如下

為什么呢?
如果我們把Inspector切換為Debug模式

可以看到Animation Clip有個(gè)Legacy勾選框

Legacy是遺產(chǎn)的意思,也就是傳統(tǒng)的通過(guò)Animation組件來(lái)播放Animation Clip的做法,如果使用Animation組件來(lái)播放Animation Clip,則必須把Legacy勾選上,不過(guò)這種方式已經(jīng)是過(guò)時(shí)的做法,推薦使用Animator來(lái)播放Animation Clip

五、 狀態(tài)機(jī)的狀態(tài)(State)

每個(gè)Animator Controller都會(huì)自帶三個(gè)狀態(tài):Any State, EntryExit

1、Any State狀態(tài)

表示任意狀態(tài)的特殊狀態(tài)。例如我們?nèi)绻M巧谌魏螤顟B(tài)下都有可能切換到死亡狀態(tài),那么Any State就可以幫我們做到。當(dāng)你發(fā)現(xiàn)某個(gè)狀態(tài)可以從任何狀態(tài)以相同的條件跳轉(zhuǎn)到時(shí),那么你就可以用Any State來(lái)簡(jiǎn)化過(guò)渡關(guān)系。

2、Entry狀態(tài)

表示狀態(tài)機(jī)的入口狀態(tài)。當(dāng)我們?yōu)槟硞€(gè)GameObject添加上Animator組件時(shí),這個(gè)組件就會(huì)開(kāi)始發(fā)揮它的作用。
如果Animator Controller控制多個(gè)Animation的播放,那么默認(rèn)情況下Animator組件會(huì)播放哪個(gè)動(dòng)畫(huà)呢? 由Entry來(lái)決定的。
但是Entry本身并不包含動(dòng)畫(huà),而是指向某個(gè)帶有動(dòng)畫(huà)的狀態(tài),并設(shè)置其為默認(rèn)狀態(tài)。被設(shè)置為默認(rèn)狀態(tài)的狀態(tài)會(huì)顯示為 橘黃色。

當(dāng)然,你可以隨時(shí)在任意一個(gè)狀態(tài)上通過(guò) 鼠標(biāo)右鍵->Set as Layer Default State更改默認(rèn)狀態(tài)。

記住, EntryAnimator組件被激活后 無(wú)條件 跳轉(zhuǎn)到默認(rèn)狀態(tài),并且每個(gè)Layer有且僅有一個(gè)默認(rèn)狀態(tài)。

3、Exit狀態(tài)

表示狀態(tài)機(jī)的出口狀態(tài),以紅色標(biāo)識(shí)。如果你的動(dòng)畫(huà)控制器只有一層,那么這個(gè)狀態(tài)可能并沒(méi)有什么卵用。但是當(dāng)你需要從子狀態(tài)機(jī)中返回到上一層(Layer)時(shí),把狀態(tài)指向Exit就可以了。

六、動(dòng)畫(huà)狀態(tài)的屬性

我們可以選中某個(gè)自定義狀態(tài),并在Inspector窗口下觀察它具有的屬性

屬性名 描述
Motion 狀態(tài)對(duì)應(yīng)的動(dòng)畫(huà)。每個(gè)狀態(tài)的基本屬性,直接選擇已定義好的動(dòng)畫(huà)(Animation Clip)即可
Speed 動(dòng)畫(huà)播放的速度。默認(rèn)值為1,表示速度為原動(dòng)畫(huà)的1.0倍。
Mutiplier 勾選右側(cè)的Parameter后可用,即在計(jì)算Speed的時(shí)考慮 區(qū)域1 中定義的某個(gè)參數(shù)。若選擇的參數(shù)為smooth, 則動(dòng)畫(huà)播放速度的計(jì)算公式為 smooth * speed * fps(animation clip中指定)
Mirror 僅適用于humanoid animation(人型機(jī)動(dòng)畫(huà))
Cycle Offset 周期偏移,取值范圍為0-1.0,用于控制動(dòng)畫(huà)起始的偏移量。把它和正弦函數(shù)的offset進(jìn)行對(duì)比就能夠理解了,只會(huì)影響起始動(dòng)畫(huà)的播放位置。
Foot IK 僅適用于humanoid animation(人型機(jī)動(dòng)畫(huà))
Write Default 最好保持默認(rèn),感興趣可以參考官方手冊(cè)
Transitions 該狀態(tài)向其他狀態(tài)發(fā)起的過(guò)渡列表,包含了Solo和Mute兩個(gè)參數(shù),在預(yù)覽狀態(tài)機(jī)的效果時(shí)起作用
Add Behaviour 用于向狀態(tài)添加“行為”

七、狀態(tài)間的過(guò)渡關(guān)系(Transitions)

直觀上說(shuō)它們就是連接不同狀態(tài)的有向箭頭

要?jiǎng)?chuàng)建一個(gè)從狀態(tài)A狀態(tài)B的過(guò)渡,直接在狀態(tài)A上 鼠標(biāo)右鍵 - Make Transition并把出現(xiàn)的箭頭拖拽到狀態(tài)B上點(diǎn)擊鼠標(biāo)左邊即可。

八、添加狀態(tài)控制參數(shù)

參數(shù)有FloatIntBoolTrigger

FloatInt用來(lái)控制一個(gè)動(dòng)畫(huà)狀態(tài)的參數(shù),比如速度方向等可以用數(shù)值量化的東西,
Bool用來(lái)控制動(dòng)畫(huà)狀態(tài)的轉(zhuǎn)變,比如從走路轉(zhuǎn)變到跑步,
Trigger本質(zhì)上也是bool類型,但它默認(rèn)為false,且當(dāng)程序設(shè)置為true后,它會(huì)自動(dòng)變回false

如下這里創(chuàng)建一個(gè)Int類型的參數(shù)AnimState

九、編輯切換狀態(tài)的條件

點(diǎn)擊連線,在Inspecter窗口中可以進(jìn)行設(shè)置,在Conditions欄下可以添加條件,如下圖表示當(dāng)參數(shù)
AnimState0時(shí)會(huì)執(zhí)行這個(gè)動(dòng)畫(huà)Any StateNew Animation2的過(guò)渡

必須在Parameters面板中添加了參數(shù)才可以在這里查看到,其次添加的條件為”與”關(guān)系,即必須同時(shí)滿足。

十、代碼中控制狀態(tài)

我們可以通過(guò)代碼來(lái)設(shè)置條件狀態(tài),達(dá)到動(dòng)畫(huà)切換的目的

Animator ator = go1.GetComponentAnimator>();
ator.SetInteger("AnimState", 0);

上面的代碼,讓AnimState這個(gè)參數(shù)值為0,滿足了從Any StateNew Animation2的過(guò)渡條件,從而實(shí)現(xiàn)New Animation2動(dòng)畫(huà)的過(guò)渡。

十一、檢查動(dòng)畫(huà)狀態(tài)

方法1、AnimatorStateInfo

在腳本中添加代碼

//檢查是否正在播放jump動(dòng)畫(huà).
AnimatorStateInfo stateinfo = anim.GetCurrentAnimatorStateInfo(0);   
bool playingJump = stateinfo.IsName("jump");
if(playingJump)
{
	if(stateinfo.normalizedTime  1.0f)
	{
		//正在播放
	}
	else
	{
		//播放結(jié)束
	}
	
}

當(dāng)處于狀態(tài)jump,則stateinfo.IsName("jump")返回true

方法2、繼承StateMachineBehaviour

Animator的每個(gè)狀態(tài)都可以掛載腳本,創(chuàng)建腳本,繼承于StateMachineBehaviour類,用于檢測(cè)狀態(tài)機(jī)中動(dòng)畫(huà)切片(Anamation)的運(yùn)行狀態(tài)。
官方示例:https://docs.unity3d.com/ScriptReference/StateMachineBehaviour.html
將腳本掛載在對(duì)應(yīng)的狀態(tài)上即可。代碼如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JumpState : StateMachineBehaviour
{
    private GameObject player;
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // 正在played的狀態(tài)的第一幀被調(diào)用
        Debug.Log("------OnStateEnter------------");
    }
    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {        
    }
    // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // 轉(zhuǎn)換到另一個(gè)狀態(tài)的最后一幀 被調(diào)用
        Debug.Log("-------------OnStateExit-----------------");
    }
    // OnStateMove is called right after Animator.OnAnimatorMove()
    override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
    	// 在OnAnimatorMove之前被調(diào)用 
        
    }
    // OnStateIK is called right after Animator.OnAnimatorIK()
    override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        // 在OnAnimatorIK之后調(diào)用,用于在播放狀態(tài)時(shí)的每一幀的monobehavior。
        // 需要注意的是,OnStateIK只有在狀態(tài)位于具有IK pass的層上時(shí)才會(huì)被調(diào)用。
        // 默認(rèn)情況下,圖層沒(méi)有IK通道,所以這個(gè)函數(shù)不會(huì)被調(diào)用
        // 關(guān)于IK的使用,可以看看這篇文章《Animator使用IK實(shí)現(xiàn)頭部及身體跟隨》
        // https://www.jianshu.com/p/ae6d65563efa
    }
}

十二、控制播放速度

Animator ator = go1.GetComponentAnimator>();
var stateinfo = ator.GetCurrentAnimatorStateInfo(0);
if(stateinfo.IsName("Jump"))
{
	ator.speed = 2;
}

十三、注意事項(xiàng)

1 取消勾選

Can Transition To Self,不然動(dòng)畫(huà)會(huì)出現(xiàn)抖動(dòng)

2 動(dòng)作循環(huán)。

不然如果沒(méi)有下個(gè)狀態(tài)切換,直接停止動(dòng)作

3.一般我們要的都是立即切換,所以這里 不要勾選

Has Exit Time,如果勾選了,則表示在該動(dòng)作完成后才允許切換,

十四、補(bǔ)充

1、Mirror

鏡像,可以反轉(zhuǎn)當(dāng)前動(dòng)畫(huà),減少動(dòng)畫(huà)師工作量

2、Solo與Mute

Mute相當(dāng)于把目標(biāo)過(guò)渡禁用掉。Solo表示只生效這一條過(guò)渡
可以多選,當(dāng)選中后會(huì)出現(xiàn)箭頭提示
條件滿足優(yōu)先于Solo/Mute,當(dāng)條件沒(méi)有滿足時(shí)依然不會(huì)過(guò)渡

以上就是關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程的詳細(xì)內(nèi)容,更多關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Unity 如何設(shè)定 Animator分割播放
  • Unity3D制作序列幀動(dòng)畫(huà)的方法
  • Unity代碼實(shí)現(xiàn)序列幀動(dòng)畫(huà)播放器
  • 在Unity中實(shí)現(xiàn)動(dòng)畫(huà)的正反播放代碼

標(biāo)簽:莆田 襄陽(yáng) 哈爾濱 鄂爾多斯 遵義 錫林郭勒盟 雙鴨山 丹東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程》,本文關(guān)鍵詞  關(guān)于,Unity,動(dòng)畫(huà),狀態(tài)機(jī),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲第一福利视频在线| 一本大道久久a久久精二百| 一区二区三区中文字幕精品精品| 国产精品久久国产精麻豆99网站 | 欧美视频在线一区二区三区 | 7777精品伊人久久久大香线蕉经典版下载 | 青青草成人在线观看| 九色综合狠狠综合久久| 成人国产一区二区三区精品| 欧美日韩黄色影视| 国产视频911| 午夜精品久久久| 国产成人免费网站| 欧美日韩国产色站一区二区三区| 日韩三级视频在线看| 一区在线观看视频| 色婷婷av一区二区三区之一色屋| 在线观看www91| 欧美tickle裸体挠脚心vk| 综合久久一区二区三区| 日韩成人一级片| 91日韩在线专区| 精品对白一区国产伦| 一区二区成人在线| 国产超碰在线一区| 3atv在线一区二区三区| 中文字幕五月欧美| 国产一区二区在线观看免费| 欧美三级日韩三级国产三级| 国产性做久久久久久| 免费高清不卡av| 欧美在线视频全部完| 亚洲欧洲日产国产综合网| 极品美女销魂一区二区三区免费| 在线免费观看日本欧美| 欧美国产日韩亚洲一区| 久久超碰97人人做人人爱| 欧美日韩国产高清一区二区三区| 亚洲天堂2016| 国产91清纯白嫩初高中在线观看 | 亚洲成人黄色小说| 不卡的电视剧免费网站有什么| 精品国产青草久久久久福利| 首页亚洲欧美制服丝腿| 日本韩国欧美在线| 亚洲精品欧美综合四区| 91美女在线观看| 最新国产精品久久精品| 国产91精品露脸国语对白| 国产日韩欧美在线一区| 精品亚洲aⅴ乱码一区二区三区| 这里只有精品99re| 免费在线观看视频一区| 日韩一区二区在线观看| 日本在线不卡一区| 91精品国产综合久久久久| 日韩电影一二三区| 日韩欧美国产三级| 激情综合网激情| 久久久精品免费免费| 国产精品亚洲第一区在线暖暖韩国| 精品日本一线二线三线不卡| 韩日av一区二区| 久久久久久久网| 暴力调教一区二区三区| 亚洲视频免费观看| 欧美精品自拍偷拍动漫精品| 日韩高清欧美激情| 国产亚洲精品福利| 高清久久久久久| 亚洲品质自拍视频| 欧美日韩亚洲综合在线 | 欧美mv日韩mv| 风间由美性色一区二区三区| 中文字幕一区二区三区不卡| 在线区一区二视频| 国产电影精品久久禁18| 最新国产精品久久精品| 欧美日本一区二区三区四区| 奇米色777欧美一区二区| 欧美精品一区二区三区久久久| 国产91丝袜在线观看| 亚洲一区二区视频| 精品裸体舞一区二区三区| 大白屁股一区二区视频| 亚洲一级片在线观看| 精品精品欲导航| 成人h动漫精品| 午夜久久久影院| 国产日韩欧美不卡在线| 91免费观看视频在线| 三级成人在线视频| 国产精品色一区二区三区| 91豆麻精品91久久久久久| 久久精品国产精品亚洲综合| 亚洲欧洲中文日韩久久av乱码| 日韩一级免费观看| www.欧美色图| 国产呦精品一区二区三区网站| 亚洲激情第一区| 久久久久国产精品麻豆ai换脸| 色综合色综合色综合| 精一区二区三区| 亚洲午夜精品网| 国产色产综合产在线视频 | 日一区二区三区| 国产精品理伦片| 日韩一级二级三级精品视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 一区二区三区在线观看国产 | 国产成人a级片| 香蕉成人伊视频在线观看| 久久伊人中文字幕| 欧美日韩卡一卡二| 一本色道久久综合亚洲aⅴ蜜桃 | 丁香桃色午夜亚洲一区二区三区| 亚洲综合精品自拍| 国产日韩欧美麻豆| 日韩午夜精品电影| 欧美自拍丝袜亚洲| 99久久久免费精品国产一区二区| 久久国产精品一区二区| 亚洲五月六月丁香激情| 亚洲理论在线观看| 国产精品午夜春色av| 国产亚洲成年网址在线观看| 91精品国产一区二区| 在线精品观看国产| 91免费视频大全| 欧美tk—视频vk| 日韩一区二区在线看片| 5566中文字幕一区二区电影| 欧美日韩视频不卡| 欧美日本在线观看| 欧美日韩精品欧美日韩精品一 | 亚洲自拍都市欧美小说| 亚洲国产精品国自产拍av| 久久久三级国产网站| 亚洲精品一区二区三区福利| 日韩欧美国产高清| 日韩欧美亚洲另类制服综合在线| 欧美三级视频在线播放| 欧美在线观看一二区| 欧美体内she精高潮| 欧美日韩综合在线免费观看| 欧美日韩视频不卡| 欧美日本在线观看| 日韩精品一区国产麻豆| 精品国产乱子伦一区| 久久精品视频在线看| 国产精品女主播在线观看| 国产精品久久久99| 一级女性全黄久久生活片免费| 亚洲午夜久久久久| 美美哒免费高清在线观看视频一区二区 | 日本一区二区三级电影在线观看| 久久久久久电影| 国产精品色在线| 亚洲夂夂婷婷色拍ww47| 亚洲成人一二三| 免费成人在线网站| 国产电影一区在线| 一本大道久久a久久综合| 欧美美女一区二区在线观看| 日韩欧美在线综合网| 国产日韩欧美精品在线| 亚洲美女屁股眼交3| 首页国产欧美日韩丝袜| 国产成人啪午夜精品网站男同| 色婷婷狠狠综合| 亚洲精品一区二区三区精华液 | 一区二区三区欧美日| 亚洲福利视频三区| 激情另类小说区图片区视频区| 国产精品一级片| 91国产福利在线| 欧美成人激情免费网| 亚洲欧洲三级电影| 喷白浆一区二区| 春色校园综合激情亚洲| 欧美性一二三区| 久久综合999| 亚洲成人自拍网| proumb性欧美在线观看| 欧美一区二区私人影院日本| 国产精品色眯眯| 久久精品国产久精国产爱| 91啦中文在线观看| 久久综合九色综合97婷婷| 一区二区三区波多野结衣在线观看| 免费观看久久久4p| 欧美天堂一区二区三区| 中文字幕免费在线观看视频一区| 亚洲成a天堂v人片| av色综合久久天堂av综合| 欧美成人国产一区二区| 亚洲国产综合人成综合网站| 99精品久久只有精品| 久久亚洲一级片| 日本系列欧美系列|