校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 關(guān)于Unity動畫狀態(tài)機(jī)Animator使用教程

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

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

一、前言

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

二、Animator組件

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

三、Animator Controller文件

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

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

四、Animation Clip文件

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

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

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

通過Animator創(chuàng)建出來的Animation Clip無法直接通過掛Animation組件進(jìn)行播放,如果強(qiáng)行播放,Console會報(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有個Legacy勾選框

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

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

每個Animator Controller都會自帶三個狀態(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)某個狀態(tài)可以從任何狀態(tài)以相同的條件跳轉(zhuǎn)到時,那么你就可以用Any State來簡化過渡關(guān)系。

2、Entry狀態(tài)

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

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

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

3、Exit狀態(tài)

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

六、動畫狀態(tài)的屬性

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

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

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

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

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

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

參數(shù)有FloatInt,BoolTrigger

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

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

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

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

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

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

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

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

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

十一、檢查動畫狀態(tài)

方法1、AnimatorStateInfo

在腳本中添加代碼

//檢查是否正在播放jump動畫.
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的每個狀態(tài)都可以掛載腳本,創(chuàng)建腳本,繼承于StateMachineBehaviour類,用于檢測狀態(tài)機(jī)中動畫切片(Anamation)的運(yùn)行狀態(tài)。
官方示例:https://docs.unity3d.com/ScriptReference/StateMachineBehaviour.html
將腳本掛載在對應(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)換到另一個狀態(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)時的每一幀的monobehavior。
        // 需要注意的是,OnStateIK只有在狀態(tài)位于具有IK pass的層上時才會被調(diào)用。
        // 默認(rèn)情況下,圖層沒有IK通道,所以這個函數(shù)不會被調(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,不然動畫會出現(xiàn)抖動

2 動作循環(huán)。

不然如果沒有下個狀態(tài)切換,直接停止動作

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

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

十四、補(bǔ)充

1、Mirror

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

2、Solo與Mute

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于Unity動畫狀態(tài)機(jī)Animator使用教程》,本文關(guān)鍵詞  關(guān)于,Unity,動畫,狀態(tài)機(jī),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于Unity動畫狀態(tài)機(jī)Animator使用教程》相關(guān)的同類信息!
  • 本頁收集關(guān)于關(guān)于Unity動畫狀態(tài)機(jī)Animator使用教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩在线观看一区二区| 国产精品网曝门| 欧美在线观看你懂的| 92精品国产成人观看免费| 国产一区二区三区在线观看精品 | 国产亚洲欧美一级| xfplay精品久久| 久久久亚洲精品一区二区三区| 久久精品视频在线免费观看 | 不卡大黄网站免费看| 成人v精品蜜桃久久一区| 99久久精品一区| 欧美日韩一区二区三区在线| 欧美日韩不卡在线| 日韩精品资源二区在线| 国产午夜一区二区三区| 国产精品久久久久婷婷二区次| 亚洲欧美综合另类在线卡通| 亚洲免费观看高清完整版在线观看| 伊人性伊人情综合网| 日韩高清欧美激情| 国产成人免费在线观看| 色婷婷久久久久swag精品| 欧美精品久久久久久久多人混战| 日韩亚洲欧美成人一区| 亚洲国产高清在线观看视频| 一区二区三区在线播放| 美女一区二区三区在线观看| 成人黄色777网| 91精品国产一区二区| 亚洲欧美综合网| 九色综合国产一区二区三区| 99久久伊人网影院| 欧美一区二区三区影视| ●精品国产综合乱码久久久久| 亚洲大片一区二区三区| 成人三级在线视频| 91精品欧美久久久久久动漫| 亚洲国产精品99久久久久久久久| 视频一区二区不卡| 99国产一区二区三精品乱码| 日韩精品一区二区三区在线 | 精品国产乱码久久久久久夜甘婷婷| 久久久久久久久岛国免费| 一级特黄大欧美久久久| 国产成人综合网| 日韩欧美在线1卡| 亚洲bdsm女犯bdsm网站| 99热精品一区二区| 久久久.com| 精品亚洲免费视频| 欧美色涩在线第一页| 日韩毛片在线免费观看| 国产成人啪午夜精品网站男同| 91精品国产综合久久婷婷香蕉 | 国产精品国模大尺度视频| 日本不卡的三区四区五区| 91碰在线视频| 亚洲欧美色一区| 成人高清伦理免费影院在线观看| 日韩欧美国产麻豆| 午夜精品爽啪视频| 在线观看av不卡| 亚洲欧美日韩精品久久久久| 国产91丝袜在线18| 国产偷国产偷亚洲高清人白洁| 免播放器亚洲一区| 欧美va亚洲va在线观看蝴蝶网| 日韩vs国产vs欧美| 日韩欧美在线一区二区三区| 日韩av在线发布| 日韩一卡二卡三卡四卡| 欧美aaaaaa午夜精品| 337p亚洲精品色噜噜噜| 日韩影视精彩在线| 日韩一区二区免费高清| 美女网站色91| 久久久午夜精品| 成人激情开心网| 亚洲欧洲综合另类| 欧美日韩性生活| 蜜臀va亚洲va欧美va天堂| 日韩一区二区三区三四区视频在线观看| 一区av在线播放| 欧美一区二区三区影视| 久99久精品视频免费观看| 久久综合色婷婷| 成人丝袜18视频在线观看| 亚洲靠逼com| 欧美精品丝袜中出| 免费人成黄页网站在线一区二区| 欧美一区二区免费观在线| 精品一区二区三区视频在线观看 | 久久久久久久久一| 成人av网址在线| 亚洲一二三区不卡| 欧美成人精品二区三区99精品| 国产精品主播直播| 亚洲精品欧美二区三区中文字幕| 欧美色成人综合| 国产麻豆精品一区二区| 亚洲免费av网站| 欧美精品九九99久久| 国产精品夜夜嗨| 亚洲一区二区三区四区的| 91精品国产91久久综合桃花| 激情文学综合插| 亚洲激情五月婷婷| 日韩精品在线网站| 日本精品视频一区二区三区| 午夜精品123| 国产精品传媒视频| 日韩三区在线观看| 色视频成人在线观看免| 极品销魂美女一区二区三区| 综合中文字幕亚洲| 精品国产免费久久| 欧美亚洲综合网| 成人免费毛片片v| 蜜臀精品一区二区三区在线观看| 亚洲欧美在线视频观看| 欧美www视频| 欧美精选在线播放| 色综合av在线| av亚洲精华国产精华精华| 美日韩一区二区| 丝袜诱惑亚洲看片| 亚洲一区二区三区视频在线播放| 日本一区免费视频| 欧美videos大乳护士334| 欧美三级电影网| jizz一区二区| 国产91精品一区二区| 经典三级视频一区| 麻豆久久久久久| 日产精品久久久久久久性色| 一区二区三区中文在线| 中文字幕在线不卡| 国产亲近乱来精品视频| 26uuu国产电影一区二区| 日韩三级精品电影久久久| 91精品婷婷国产综合久久 | 久久成人精品无人区| 午夜精品123| 日日夜夜精品免费视频| 亚洲成人手机在线| 亚洲成人av中文| 亚洲高清免费观看 | 国产欧美精品一区二区三区四区 | 激情综合色播五月| 久久狠狠亚洲综合| 狠狠色综合色综合网络| 黄页视频在线91| 韩国一区二区在线观看| 国产一区二区三区黄视频 | 成人午夜在线免费| 粉嫩蜜臀av国产精品网站| 高清不卡在线观看| 成人av电影在线播放| av电影天堂一区二区在线 | 久久99最新地址| 韩国精品主播一区二区在线观看 | 欧美日韩欧美一区二区| 欧美高清dvd| www欧美成人18+| 国产精品素人一区二区| **性色生活片久久毛片| 亚洲另类中文字| 日韩av电影天堂| 国产精品系列在线观看| 91香蕉视频污在线| 在线成人午夜影院| 国产亚洲欧美日韩日本| 亚洲人成网站在线| 午夜精品国产更新| 国产福利一区二区三区视频在线| 成人av网在线| 欧美另类videos死尸| 精品免费日韩av| 亚洲精品中文字幕乱码三区| 亚洲大片免费看| 国产成人8x视频一区二区| 色综合久久久久网| 欧美成人女星排名| 一区二区三区在线视频观看| 蜜桃av噜噜一区二区三区小说| 国产一区激情在线| 欧美日韩午夜精品| 久久精品人人做人人爽人人| 国产精品久久久久久亚洲伦| 婷婷开心激情综合| 99视频国产精品| 日韩免费看网站| 亚洲国产精品久久久久婷婷884| 精品系列免费在线观看| 欧美色网站导航| 亚洲欧美自拍偷拍色图| 激情六月婷婷综合| 在线不卡的av| 中文字幕制服丝袜成人av|