資源描述:
《unity3d【動(dòng)畫(huà)腳本】》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、Unity3D——?jiǎng)赢?huà)腳本?Animation?Scripting有時(shí)你需要程序化的驅(qū)動(dòng)你的角色骨骼.?例如你可能需要你的角色的頭注視3d空間的某個(gè)點(diǎn).?這個(gè)活最好讓腳本來(lái)干.?幸運(yùn)的是,?Unity做這個(gè)很容易.?在Unity?中所有骨骼來(lái)驅(qū)動(dòng)蒙皮網(wǎng)格(skinned?mesh)的變換(Transforms).?因而你可以給角色的骨骼寫(xiě)腳本,就和其他GameObject一樣. 很重要的一點(diǎn)是動(dòng)畫(huà)系統(tǒng)updates?the?Transforms?是在Update()?function調(diào)用之后??,
2、LateUpdate()?function?調(diào)用之前.?因而如果你要調(diào)用?LookAt()?function?你應(yīng)該在?LateUpdate()?中調(diào)用,覆蓋動(dòng)畫(huà)播放. 布娃娃系統(tǒng)Ragdolls?也是用同樣的方法制作出來(lái)的.?你可以簡(jiǎn)單的把剛性物體(Rigidbodies),?角色關(guān)節(jié)(Character?Joints)?和?膠囊碰撞體(Capsule?Colliders)連接給不同的骨骼.?這樣物理系統(tǒng)就可以作用于蒙皮角色(skinned?character). 動(dòng)畫(huà)播放時(shí)為了讓角色受動(dòng)畫(huà)系
3、統(tǒng)的控制,可以設(shè)置物體為動(dòng)力學(xué)物體(isKinematic),當(dāng)需要讓他受物理控制時(shí)把該屬性取消?! 〗巧劳鰰r(shí),可以銷(xiāo)毀原始模型,創(chuàng)建一個(gè)布娃娃代替。同樣,飛機(jī)車(chē)輛等的爆炸效果,最好也是替換成另外一個(gè)由一批帶有剛體的部件組成的預(yù)制件,部件上可以增加一些粒子特效來(lái)實(shí)現(xiàn)煙霧火焰等效果?! ?dòng)畫(huà)融合(Animation?Blending)可以實(shí)現(xiàn)動(dòng)作轉(zhuǎn)化時(shí)的平滑過(guò)渡。動(dòng)畫(huà)混合(Animation?Mixing)和附加動(dòng)畫(huà)(Additive?Animations)可以削減游戲創(chuàng)建的動(dòng)畫(huà)片段的數(shù)量。動(dòng)畫(huà)可以
4、和其他動(dòng)畫(huà)以各種組合一起使用?! ∽屢恍﹦?dòng)畫(huà)只應(yīng)用給身體的一部分。例如,有個(gè)一個(gè)揮手動(dòng)畫(huà),想要在空閑角色或正行走的角色播放揮手動(dòng)畫(huà)。沒(méi)有動(dòng)畫(huà)混合,您必須創(chuàng)建兩個(gè)手揮舞著動(dòng)畫(huà):一個(gè)用于空閑,一個(gè)用于行走。而通過(guò)調(diào)用AddMixingTransform(),疊加動(dòng)畫(huà)混合變換到動(dòng)畫(huà)。不過(guò),如果你添加肩膀變換作為混合變換,來(lái)做揮手動(dòng)畫(huà),那么揮手動(dòng)畫(huà)將從肩膀位置處受完全控制,身體的其余部分將不會(huì)受到它的影響,將繼續(xù)播放空閑或行走動(dòng)畫(huà)。因此,只需要一個(gè)揮手動(dòng)畫(huà)。?123var?mixTransform?:?Tr
5、ansform?=?transform.Find(“root/upper_body/left_shoulder”);?animation[“wave_hand”].AddMixingTransform(mixTransform); 附加動(dòng)畫(huà)(Additive?Animations)允許你在頂層覆蓋其他所有可能播放的動(dòng)畫(huà)的效果當(dāng)你制作一個(gè)附加動(dòng)畫(huà)時(shí),?Unity將計(jì)算動(dòng)畫(huà)片斷里的第一幀?(first?frame)和當(dāng)前幀(current?frame)的差異.?然后它將在所有其他播放的動(dòng)畫(huà)之上應(yīng)用這個(gè)
6、差異【狗刨學(xué)習(xí)網(wǎng)】 附加動(dòng)畫(huà)和動(dòng)畫(huà)混合都可以讓我們減少對(duì)游戲中要制作動(dòng)畫(huà)的數(shù)量,尤其對(duì)于一些表情動(dòng)畫(huà)現(xiàn)在你只需要制作一個(gè)左傾(?lean-left)?和右傾(?lean-right)動(dòng)畫(huà).?Unity將為此傾斜動(dòng)畫(huà)新建一個(gè)層并置于walk,?idle?或?run循環(huán)的層級(jí)之上. 疊加型動(dòng)畫(huà)通過(guò)將兩個(gè)動(dòng)畫(huà)彼此相減進(jìn)行計(jì)算,并將其存儲(chǔ)為兩個(gè)動(dòng)畫(huà)的差值。當(dāng)使用疊加動(dòng)畫(huà)時(shí),在每個(gè)使用疊加動(dòng)畫(huà)的變換上也在播放一些其他非疊加動(dòng)畫(huà),這是至關(guān)重要的。否則,動(dòng)畫(huà)將添加在最后一幀的結(jié)果上面,這當(dāng)然不是你想要的?! ?/p>
7、動(dòng)畫(huà)層(Animation?Layers) 例如有一個(gè)射擊動(dòng)畫(huà),一個(gè)空閑和行走循環(huán)動(dòng)畫(huà),想要在行走和空閑動(dòng)畫(huà)之間連續(xù)過(guò)渡,基于玩家的速度。但當(dāng)玩家射擊時(shí),僅顯示射擊動(dòng)畫(huà),因此,射擊動(dòng)畫(huà)基本上有更高優(yōu)先級(jí)。要做到這點(diǎn)最簡(jiǎn)單的方法是在射擊時(shí)簡(jiǎn)單的保持行走和空閑動(dòng)畫(huà),然后我們需要確保射擊動(dòng)畫(huà)比空閑和行走動(dòng)畫(huà)在更高的層。這意思是射擊動(dòng)畫(huà)將首先接收融合權(quán)重。行走和空閑動(dòng)畫(huà)僅當(dāng)射擊動(dòng)畫(huà)不使用融合權(quán)重100%時(shí),接收權(quán)重。因此,交叉淡入淡出射擊動(dòng)畫(huà)時(shí),權(quán)重將從0開(kāi)始很短時(shí)間內(nèi)變?yōu)?00%,在開(kāi)始時(shí)步行和空閑層仍
8、然會(huì)收到融合權(quán)重,但當(dāng)射擊動(dòng)畫(huà)完全切入時(shí),它們不再接收權(quán)重,這正是我們所需要的!?0102030405function?Start?()?{???//循環(huán)播放???animation.wrapMode?=?WrapMode.Loop;???//射擊動(dòng)作不循環(huán)???animation["shoot"].wrapMode?=?WrapMode.Once;060708091011121314151617181920???//?idle?和walk?設(shè)置低優(yōu)先級(jí)默認(rèn)為.???