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

歡迎光臨散文網(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ó)家法律
阿拉善盟| 溧水县| 日喀则市| 廊坊市| 砀山县| 化州市| 且末县| 古丈县| 吕梁市| 开原市| 涟源市| 天祝| 东至县| 嫩江县| 施秉县| 凯里市| 内乡县| 京山县| 于都县| 仁化县| 儋州市| 宜城市| 凯里市| 绍兴县| 宁南县| 磐安县| 永年县| 霸州市| 郸城县| 吉木乃县| 阿拉善右旗| 英山县| 龙里县| 西乌| 绥德县| 香河县| 丰顺县| 邻水| 嘉峪关市| 濮阳市| 建宁县|