Unity3D粒子系统碰撞器抑制、反弹
關于碰撞檢測的主要配置我們看圖中的Collision:
第一項:因為是一個,所以這里我選擇的是World
第二項(Dampen):抑制(0~1),選這個為1時(完全抑制),碰撞之后,阻止了粒子,可以使碰撞的粒子消失
第三項(Bounce):反彈(0~2),選完這個之后,可以讓產生碰撞的粒子以某個角度反彈出去
第三項(Lifetime Loss):生命周期損失(0~1),碰撞之后讓粒子損失百分比的生命周期,為1時(生命周期完全損失),可以使粒子消失
第四項(Min Kill Speed):最小清除速度,設置值越大,粒子發生碰撞之后被移除的速度越快,當達到某個值之后,可以近似碰撞之后立即消失
第五項(Collides With):可碰撞范圍,設置可以與該粒子系統碰撞的層
第六項(Collision Quality):碰撞質量,設置發生碰撞的碰撞概率大小,選項三項從上到下由高到低,越低碰撞到的概率就越低
第七項(Send Collision Messages):發送碰撞信息,與下面這個方法有關
[csharp]?view plaincopy
總結一下以上可以使粒子消失的方法有以下三種:
(1)設置Dampen為1;
(2)設置Lifetime Loss為1;
(3)設置較大的Min Kill Speed值
?
?
OnParticleCollision() 函數。
MonoBehaviour.OnParticleCollision(GameObject)
當粒子碰撞了collider非Trigger就會觸發綁定了該腳本的 OnParticleCollision 函數。
這個可以用于游戲對象被粒子擊中時應用傷害到它上面。
對了,還要把特效的Particle System 中的Collision組件里的Send Collision Messages 的對勾打上,才能使函數生效哦!
?
同一幀中即使一個粒子系統的多個粒子對象均與碰撞體對象發生碰撞,碰撞體對象也只會接收到一條碰撞消息,也就是OnParticleCollision只會被調用一次。
還可以利用ParticleCollisionEvent數組來處理多個粒子對象碰撞事件事件
?
Unity粒子部分所帶的結構體屬性解析
?
//結構體ParticleCollisionEvent包含的屬性
public struct ParticleCollisionEvent
{
[Obsolete("collider property is deprecated. Use colliderComponent instead, whichsupports Collider and Collider2Dcomponents.")]
public Collider collider {get; }
public Component colliderComponent {get; }
public Vector3 intersection {get; }//碰撞的點在空間中的坐標
public Vector3 normal {get; } //粒子入射碰撞點的法線方向(eg:如果粒子從X軸正方向入射,則normal輸出為(1,0,0),反之負方向為(-1,0,0))
public Vector3 velocity {get; }//粒子碰撞時的三維速度向量
}
總結
以上是生活随笔為你收集整理的Unity3D粒子系统碰撞器抑制、反弹的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unet基础学习
- 下一篇: Orcale本人工具使用