如上圖來看,我原本打算要讓這個Sprite發射粒子,但是沒想通通都被Sprite擋住了,基本上問題就出在SpriteRenderer上,所以來看一下SpriteRenderer。
在SortingLayer這邊我使用了自訂的一個Layer名稱Background而不是原本的Default,這個就是造成粒子被擋住的原因,如果你把Layer改為Default可以發現粒子又出現了。
另外一個問題的可能就是Sorting Order,這邊的Order是0,但如果在Default的狀況下調整Order到1之類的,就會發現粒子又會被遮蔽。
所以從這個狀況來看可以知道粒子系統噴出的粒子,所屬的Layer是Default以及Order是0,既然知道問題在哪要調整就簡單了,只要改變粒子系統的Sorting設定即可。
但是ParticleSystem沒有可以調整SortingLayer或Order的地方,所以可以做個簡單的Component來解決這個問題。
CODE:
public int order; public string layerName; void Start() { Component[] components = GetComponents(typeof(Component)); //取得物件上所有的Component當然也可以只取得ParticleSystem物件來設定 foreach(Component component in components) { //調整所有Component的Sorting設定到自己想要的Layer跟Order component.renderer.sortingLayerName = layerName; component.renderer.sortingOrder = order; } }
之後把這個Component掛到有粒子系統的物件上,這樣就可以簡單調整粒子的Sorting設定了,也就可以避免粒子被2D的Sprite物件擋住的問題發生。
1 comment:
讚喔
Post a Comment