精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Unity實現物體破碎效果
本文由譯林軍_尹維雄翻譯


在這篇教程中,我將向您展示如何在你的Unity游戲中創建一個簡單的破碎效果。當游戲中的箱體(或者其他任何物體)被擊中或者銷毀時,之前我們都只是將其刪除,而現在取而代之,我們可以對其應用一個破碎效果,使其變成很多小碎片。


要求


對于此教程,首先你需要一個最新版的Unity,當然還有使用Unity的基本經驗。而后面更高級的效果,則有必要需要一個3D建模工具。如果你沒有可用的建模工具或者你不想自己建模,你可以下載此教程的源代碼(有關Unity的文件也包含其中)。


這種破碎效果的一個基本版本就是:一個立方體(物體)被銷毀,然后破碎成一些碎片自然地跌落在地面。




稍后,我們將會用一個較為復雜的桶狀模型來退換立方體,如下圖:




這里你可以自己體驗一下:



點擊查看demo(也可以點擊這里查看)。


基本設置


創建一個新的Unity項目并且打開一個新場景。接著創建一個平面作為地面,再創建一個立方體,此立方體將會作為被打碎的物體。當然,還要放置一個平行光,讓物體變得可見。然后再創建兩個材質,分別分配給地面與立方體,以便我們能很清楚的看出他們之間是分離開的,然后再移動攝像頭到合適位置,以便能讓任何物體可見。




銷毀立方體


有很多方法可以用來銷毀立方體,但目前,我們將用最簡單的方法。


創建一個新的Javascript文件,命名為destructionController.js. 我們會把所有刪除立方體與創建立方體碎片的功能都放在這個文件中。添加下面的代碼:


  1. function Update()

  2.        {

  3.               if(Input.GetKey(Keycode.space))

  4.               {

  5.                      Destroy(gameObject);

  6.               }

  7.        }
復制代碼


然后,拖動js文件到立方體上面,給立方體添加腳本控制。運行并測試游戲,如果你按下空格鍵,立方體應該會被刪除。



立方體在被刪除后,正如上面截圖中看到的,層級窗口中的立方體也被刪除。


創建碎片


創建8個小的立方體來充當之前大立方體的碎片。將8個小立方體設置相同的材質(不用擔心立方體的樣子,后面我們會讓它看上去會很優美),它們看上去會是下面這樣子:



將8個小立方體無重疊無交叉的組成一個大的立方體,如下圖:



讓每一個小立方體附加一個剛體,設置質量為22,使重力加速度對其有影響,設置其為運動狀態。這些設置將會使碎片跌落地面并產生物理效應。如果你想,你可以調整這些值來產生更適合你游戲的效果。



現在,我們將這些小立方體組合為一個空的游戲對象,命名為remainsCube. 當原先的立方體被銷毀時,它會退換為這樣一個由小立方體組成的新對象。



拖動remainsCube對象到項目目錄,創建一個預制件。一旦創建預制件完成,我們可以將其從主場景中刪除。


讓碎片顯現出來


添加下面的高亮行代碼到destructionController腳本:


  1. var remains: GameObject;      
  2. function Update()      
  3. {            
  4. if(Input.GetKey(Keycode.space))              
  5. {                    
  6. Instantiate(remains, transform.position,transform.rotation);                     
  7. Destroy(gameObject);              
  8. }      
  9. }
復制代碼

上面的代碼將會在原立方體的位置創建一個remains的副本,然后刪除原立方體,這就給人一種假象,認為新立方體就是原來的立方體,且新立方體是可以破碎的。


為了讓這能工作,你得手動設置remians到立方體上。點擊原立方體,在Inspector窗口你將會看到Destruction Controller腳本,而Remains的位置應該是空的。拖動預制件remainsRemains的位置,Destruction Controller腳本在Inspector窗口看上去應該像下面這樣的:



第一次優化


可以進行測試了!如果一切設置正確,那么當你按下空格鍵時,remains8個小立方體的組合對象)應該會替換原立方體。如果運氣好,remains應該會跌落到地面上。


看,原立方體:



將會變成像下面這樣子的:



不幸的我


悲劇的是,我們無法保證碎片能以一種很真實的破碎效果跌落到地面。幸運的是,我們有很多方法可以解決它。


創建一個新的gameObject對象,并且給它一個球形對撞機,但不是剛體。將remians拖到場景,以便我們可以編輯。將球形對撞機對象附加給remains,讓其與remians中的立方體相交放置。



現在這些碎片(小立方體)會立即與球形物體碰撞,產生一個自然的破碎跌落的效果。





刪除碎片


根據我們創建的游戲,在一個場景中,我們無法一次渲染太多的碎片。最簡單直接的方法是立方體破碎后的幾秒我們將碎片刪除。為了實現我們的想法,新建一個Javascript文件,命名為selfDestruct.js。添加如下代碼:


  1. function Start()      
  2. {            
  3. yield WaitForSeconds(4.0);              
  4. Destroy(gameObject);      
  5. }
復制代碼

當對象被創建后,等待4秒然后自我刪除。將上面的代碼附加到remians對象。現在,如果你銷毀原立方體,并且創建碎片,這些碎片(remains)將會在4秒后自我刪除。


就是這樣了!當物體被銷毀時,現在你有了一個物體破碎成小碎片的一個基本的效果。你可以按原樣使用這種效果,但是先讓我們考慮更遠一點,我們看看這種效果如何應用到更加復雜的對象上面。


用真實的物體替代立方體


有了基本的破碎效果,換上真實的物體,我們讓它變得更加完美。



如果你擅長使用3D建模工具,你可以創建自己的物體。如果不擅長,或者你沒有這樣一個可用的物體來替換立方體,可以從這里下載我事先準備好的3D文件。


將文件拷貝到asset目錄,3D模型會被自動導入。使用模型之前,在Asset Explorer窗口點擊導入的3D文件,查看scalefactor的值,確保為1(而不是0.1或者0.001,這是唯一復雜一點的事情了)。



如果你點擊導入的模型對象,在Inspector窗口中你可以看到一個meshfilter字段。如果你點擊它,將會獲取項目中可用的網格。好了,我們現在退換remians中的所有立方體為桶狀物體的一部分。



一個完整的立方體變成了一個桶狀的網格,更小的立方體碎片,需要很多barrel_fragment_01barrel_fragment_08的網格。這些網格被分配完成后,設置他們的位置為(0,0,0)。(因為它們的旋轉點已經被設置了,因此通過這種方法可以很容易的設置他們的位置為0)。


換掉盒子碰撞機,網格碰撞機處理將會更加便利。刪除所有碎片上的所有盒子碰撞機,取而代之的是網格碰撞機。檢查每一個網格碰撞機,確保正確(barrel_fragment_01需要barrel_fragment_01,等等)的網格模型被應用到碎片上。



完成上面的操作后,將所有的網格碰撞機設置為convex(一個非convex的網格碰撞機無法與其他非convex網格碰撞機進行碰撞檢測,這是一個程序問題),同樣,刪除所有我們前面給remains添加的球形碰撞機,因為這些可能不是必要的了。



如果一切設置正確,你將會看到一個桶狀物體破碎成8塊更小的碎片。


更多的細節


這種相同的系統亦可以應用于其他的效果,也同樣對物體的銷毀產生影響。為什么這么說呢?將這種效果添加到碎片!添加聲音到一種自然的裂紋效果。還可以添加粒子效果,將會產生煙霧效果。


總結


此文中,我們展示了一種物體破碎為碎片的最直接簡單的方法。現在,你知道了如何銷毀一個對象,將其從游戲中刪除;在物體被銷毀之前,如何將其退換為更小的碎片;如何讓那些小的碎片自我銷毀。


這個系統可以被修改和改裝以便適合其他特殊的目的。比如,射擊一個箱體或者桶狀物體使其粉碎,當擊中時,我們可以運用此系統創建一個爆炸效果。或者讓一只小船破裂為兩片。盡情的發揮你的想象力吧!




原文鏈接:http://gamedevelopment.tutsplus.com/tutorials/how-to-make-an-object-shatter-into-smaller-fragments-in-unity--gamedev-11795


本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用RayFire制作出物體部分破碎效果的方法
素描基礎教程和素描基礎知識的講解
c4d的顫動變形器
數字人C4D基礎知識之十二:CG人輕松學Xpresso入門
谷歌開源TensorFlow Graphics:專為3D圖像打造的深度學習利器
unity5粒子系統筆記
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 牙克石市| 高雄县| 海门市| 芦溪县| 宝丰县| 平利县| 鹤壁市| 濮阳市| 汉沽区| 云阳县| 松江区| 堆龙德庆县| 黄浦区| 府谷县| 鸡泽县| 荥阳市| 九龙坡区| 凉城县| 武宣县| 托克逊县| 文登市| 民和| 固始县| 垫江县| 钦州市| 阳曲县| 浏阳市| 皮山县| 军事| 东宁县| 浮梁县| 天全县| 板桥市| 若羌县| 潞城市| 呼图壁县| 阿勒泰市| 商南县| 钟山县| 抚顺县| 高唐县|