最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
万安县| 治多县| 吉安市| 若尔盖县| 睢宁县| 南宫市| 宾阳县| 汤阴县| 宜兰市| 乐业县| 新邵县| 康乐县| 翁源县| 新宾| 南靖县| 彭州市| 东山县| 新津县| 吐鲁番市| 石首市| 沙坪坝区| 赫章县| 牙克石市| 东方市| 宣武区| 岳阳市| 房山区| 无极县| 满城县| 漳平市| 泰宁县| 峨眉山市| 北川| 吉木萨尔县| 崇仁县| 张掖市| 徐州市| 弥渡县| 崇礼县| 灯塔市| 安丘市|