2016-03-14 41 views
1

我有一個2D遊戲。我有一些遊戲物體,它們是由單數形狀的碰撞體和一些由幾種形狀組成的遊戲物體組成的,並且包含在一個空的遊戲物體中,我已添加了角色碰撞物。所有遊戲對象都添加了粒子系統,單個形狀的遊戲對象按預期工作並在碰撞時爆炸,多形狀物體則不會。由多個遊戲對象組件組成的遊戲對象的粒子系統行爲不同

當使用Play On Awake和Looping測試它們時,爆炸會按預期工作,但它們不會在碰撞時爆炸。我曾嘗試將粒子系統放置在外部遊戲對象內部的其中一個形狀上,然後顯示錯誤組件系統,嘗試訪問x對象的粒子系統,這很有道理。

在每一個遊戲對象的C#類我有以下幾種方法:

private void OnCollisionEnter(Collision coll) 
{ 
    Explode(); 
} 

private void Explode() 
{ 
    var exp = GetComponent<ParticleSystem>(); 
    exp.Play(); 
    GetComponent<Renderer>().enabled = false; 
    Destroy(gameObject, exp.duration); 
} 

炸彈被設置爲0的速率,在一個突發熄滅。

我已經嘗試過搜索,並且在由多個3D遊戲對象形狀組成的遊戲對象中使用粒子系統時找不到所需的缺失信息。

我錯過了什麼?

回答

0

我整理了一下,有些問題是由於不理解要做什麼和創建黑客而產生的。

第一個問題是渲染器是在子對象中創建的,因此最好是獲取所有子對象並循環這些對象,然後在每個對象中禁用渲染器。

我還刪除了角色碰撞體,因爲這不是必需的,並且使用了球體碰撞體。

然後我沒有選中是運動學的,因爲這樣可以阻止我的空間中的物體被踢,而是增加了剛體的質量。

在爆炸方法我註釋掉除去渲染能見度,因爲這已經干擾了爆炸:

private void Explode() 
{ 
    var exp = GetComponent<ParticleSystem>(); 
    exp.Play(); 
    //GetComponent<Renderer>().enabled = false; 
    Destroy(gameObject, exp.duration); 
} 

我還延長了粒子系統啓動壽命超過持續時間。確保物體被破壞時顆粒是可見的。

我仍然需要調整爆炸,但這對我造成了巨大的影響。