unity版本:2019.2.1 一些游戲中的角色死亡時(shí),死亡的肢體動(dòng)作十分逼真,例如人類一敗涂地,Unity3D物理引擎中的Ragdoll系統(tǒng),可以用來創(chuàng)建這種效果。 添加Ragdoll系統(tǒng)后的效果技術(shù)先不說,先上視屏讓大家看看加了RagDoll系統(tǒng)的人物模型效果: Unity Ragdoll布娃娃系統(tǒng) 如何給模型添加布娃娃系統(tǒng)官方文檔:https://docs./Manual/wizard-RagdollWizard.html
怎樣控制布娃娃系統(tǒng)布娃娃系統(tǒng)的核心是由物理引擎實(shí)現(xiàn)的,所以在角色死亡或需要時(shí),通過勾選和取消關(guān)節(jié)添加的Rigidbody組件的Is Kinematic選項(xiàng)來激活和關(guān)閉布娃娃系統(tǒng)。 由于由此開發(fā)者可以通過獲取模型的某個(gè)節(jié)點(diǎn)的Rigidbody組件來控制特定的運(yùn)動(dòng)。要注意的是在打開布娃娃系統(tǒng)時(shí),模型最好不要播放動(dòng)畫。同時(shí),不要在場(chǎng)景中大量使用布娃娃系統(tǒng),畢竟是用物理引擎實(shí)現(xiàn)的比較耗性能。 foreach (var temp in this.transform.GetComponentsInChildren<Rigidbody>()) { //關(guān)閉頭關(guān)節(jié) if (temp.name == "head") temp.isKinematic = false; //激活其他關(guān)節(jié) else temp.isKinematic = true; } 深入應(yīng)用1、Rogdoll純物理控制
2、使用布娃娃系統(tǒng)需要注意的坑:1.布娃娃系統(tǒng)需要用物理力來控制,不能在使用布娃娃系統(tǒng)的時(shí)候同時(shí)使用骨骼動(dòng)畫。 2.部位穿插拉伸,要把部位Character Joint組件上面的Enable Projection勾上 3.激活布娃娃彈得很高,就是剛體的速度,把rigidbody的速度置為0 4.如果布娃娃動(dòng)作僵硬,肯定用錯(cuò)骨骼來綁定布娃娃導(dǎo)致的 5.布娃娃穿透場(chǎng)景碰撞的問題,其實(shí)這個(gè)由于速度太快引起的,可以設(shè)置rigidbody的碰撞檢測(cè)模式collisionDetectionMode 6.受力不要全部部位都給力,一般都是給一個(gè)部位就夠了,不然各種力作用引起怪異表現(xiàn) 7.關(guān)于倒地之后抖動(dòng)問題,這個(gè)只能加個(gè)檢測(cè),如果所有剛體速度小于某個(gè)數(shù)則關(guān)閉剛體功能 |
|