FTP遊戲之爆炸效果實現
上一篇文章已經跟大家分享了扔手雷的功能實現,
代碼律動:吃雞實戰之破片手榴彈那麼這一篇文章就來寫扔玩手雷之後的爆炸效果,先來看一下實現的效果.
可以發現物體的受力根據離爆炸源中心的距離來決定,這就比較符合我們的爆炸物理模型了,那麼我們就把這個效果定下來,接下來就來講解一下如何實現這個效果.,
首先創建幾個3Dobject,具體長什麼樣子看自己喜歡,
然後給他們添加一個剛體跟碰撞器,
這樣就可以了,接下來寫個方法,在手雷爆炸的時候調用,
void Boom() { //這裡的transform即手雷本身. Collider[] _boomObj = Physics.OverlapSphere(transform.position, 15); foreach(Collider i in _boomObj) { Rigidbody _rig = i.GetComponent<Rigidbody>(); if (_rig != null&& _rig.transform != transform) { _rig.AddExplosionForce(1500f, transform.position, 15,10f); } } }
首先先用Physics裡面相交球這個方法,取出手雷爆炸半徑內的所以帶有碰撞器的物體,
public static Collider[] OverlapSphere(Vector3 position, float radius);
Position即球的圓心,
Radius即球的範圍.
然後再去遍歷,篩選出受力的物體,(注意:遍歷時應避免閉包的影響,在這裡我定義了一個新的變數_rig 來存儲跟篩選而不是用到臨時變數 i ),最後給他們身上的剛體施加一個爆炸力即可.
這裡施加爆炸力的方法是Unity封裝好的,直接調用即可:
public void AddExplosionForce(float explosionForce, Vector3 explosionPosition, float explosionRadius, [DefaultValue("0.0F")] float upwardsModifier, [DefaultValue("ForceMode.Force")] ForceMode mode);
這是一個帶有五個參數的函數,其中兩個是帶默認值的參數.
explosionForce是力的大小,
explosionPosition是施加力的位置,
explosionRadius是力的作用範圍.
upwardsModifier是調節爆炸出現的位置,跟explosionPosition的區別在於,修改這個值他的中心跟影響半徑不會被修改.默認為0的情況下,中爆炸中心到剛體的質量中心力的方向是線性的,
假如這個值為2時,就是他爆炸出現的實際位置在中心點想下2個單位.
Mode代表應用到目標力的方式.
OK,效果到這裡就已經實現完了,比較簡單,就幾行代碼.主要就是看你對Unity物理這一塊的掌握程度.
關注公眾號:[代碼律動ColdingWave] 可獲得更多項目資源與視頻教學.
回復"手雷爆炸"即可獲得本節課手雷的模型及特效資源.
推薦閱讀:
※互聯網簡訊-20180209
※撒貝南為什麼要在馬雲講話時笑場?
※Final cut很難嗎?1招教你快速剪出優秀短視頻,超簡單!
※沒有風度,至少試著領悟
※為何《銀翼殺手2049》值9.7分?