五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity筆記——用代碼獲取Animator動(dòng)畫的移動(dòng)量

2023-08-15 21:34 作者:黑白色的楓  | 我要投稿

在Animator組件中,有一個(gè)?Apply Root Motion?選項(xiàng),勾上它以后,在播放動(dòng)畫時(shí),游戲?qū)ο缶蜁?huì)真的根據(jù)動(dòng)畫的移動(dòng)幅度來移動(dòng),動(dòng)畫一腳邁半米,Animator?所在的?gameObject?也會(huì)向前移動(dòng)半米。

聽起來似乎很美好,但是如果播放動(dòng)畫的對(duì)象是子物體,那么?Animator?也僅僅會(huì)驅(qū)動(dòng)子物體進(jìn)行移動(dòng),父物體則不會(huì)受到影響的停留在原地。

遇到這種情況,我們就需要通過代碼來獲取動(dòng)畫的移動(dòng)量,再把這個(gè)移動(dòng)量傳遞給父物體,驅(qū)動(dòng)父物體進(jìn)行移動(dòng)。

首先我們要再?Animator?所在的對(duì)象上新建一個(gè)腳本,命名為 RootMotionControl?,命名僅供參考,并聲明?OnAnimatorMove?函數(shù),它是MonoBehaviour?的生命周期函數(shù)之一,在處理完?duì)顟B(tài)機(jī)和動(dòng)畫后的每一幀中調(diào)用。

deltaPosition 表示這一幀動(dòng)畫移動(dòng)的量,再得到這個(gè)量以后,我們就可以向上傳遞,SendMessageUpwards?會(huì)向自己同級(jí)和自己父級(jí)的 MonoBehaviour?調(diào)用 OnUpdateRM 函數(shù),OnUpdateRM?可以根據(jù)自己的需求更改,第二個(gè)參數(shù)為 object 類型,對(duì)應(yīng)的我們的OnUpdateRM 函數(shù)的參數(shù)也要是object類型進(jìn)行接收。

SendMessageUpwards 函數(shù)會(huì)遍歷所有的父級(jí)對(duì)象,性能消耗比較大,這里推薦使用委托或者單例等方式進(jìn)行處理。

這是黑魂復(fù)刻中的代碼,CheckState?函數(shù)判斷了當(dāng)前是否處于?attack?動(dòng)畫層的?attack1hC動(dòng)畫,為?true?的時(shí)候就將移動(dòng)量記錄下來,并在?FixedUpdate?中處理移動(dòng)的時(shí)候進(jìn)行累加,在使用完后賦值為Vector3.zero進(jìn)行置空。

這樣,就可以在?Animator?沒有啟用 Root Motion是時(shí)候,讓角色也可以根據(jù)動(dòng)畫實(shí)際的移動(dòng)量來移動(dòng)。


參考視頻

參考文檔

Unity官方文檔

Unity筆記——用代碼獲取Animator動(dòng)畫的移動(dòng)量的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
福贡县| 安龙县| 宜良县| 九龙城区| 德兴市| 江门市| 南岸区| 临潭县| 晋州市| 塘沽区| 东乌珠穆沁旗| 临洮县| 扶风县| 永川市| 衡阳市| 偃师市| 杨浦区| 麻江县| 鄱阳县| 佛山市| 温宿县| 乐清市| 上高县| 江陵县| 逊克县| 芜湖市| 富锦市| 浮山县| 榕江县| 靖州| 桑植县| 霍林郭勒市| 女性| 东兰县| 镶黄旗| 东莞市| 高清| 耒阳市| 永兴县| 石棉县| 淮北市|