unity粒子系统碰撞

粒子系统中有一项是collision,与粒子系统之外的产生碰撞mode选择world,其他参数含义如下

(Dampen):抑制(0~1),选这个为1时(完全抑制),碰撞之后,阻止了粒子,可以使碰撞的粒子消失

(Bounce):反弹(0~2),选完这个之后,可以让产生碰撞的粒子以某个角度反弹出去

(Lifetime Loss):生命周期损失(0~1),碰撞之后让粒子损失百分比的生命周期,为1时(生命周期完全损失),可以使粒子消失

(Min Kill Speed):最小清除速度,设置值越大,粒子发生碰撞之后被移除的速度越快,当达到某个值之后,可以近似碰撞之后立即消失

(Collides With):可碰撞范围,设置可以与该粒子系统碰撞的层

(Collision Quality):碰撞质量,设置发生碰撞的碰撞概率大小,选项三项从上到下由高到低,越低碰撞到的概率就越低

(Send Collision Messages):发送碰撞信息,与下面这个方法有关

void OnParticleCollision(GameObject other) 
{
    if(other.transform.CompareTo("water"))
    {
        m_life--;
     }

}

而这个函数要放在被碰撞的物体上。

因此,我要实现灭火器来灭火,火是一个粒子系统,灭火器上的水(或烟)也是一个粒子系统,当灭火器的水与火碰撞时,火的生命值降低,所以在火的脚本添加这个函数

而 在水的粒子系统之勾选Collision,并设置相关参数,在火上添加碰撞体。若火上不添加碰撞体,只是勾选了粒子系统里的Collison,是无效的。上面的函数并不会被执行。


### Unity 粒子系统碰撞效果示例 在Unity中,为了使粒子系统具有更真实的物理特性,启用并配置碰撞模块至关重要。当其他物体包围粒子系统时,粒子与这些物体相互作用时,效果通常会更有说服力[^3]。 #### 创建基本场景 假设有一个简单的室内环境模型作为背景,在此环境中放置一个平面代表地面,并设置一些障碍物如立方体或其他几何形状来模拟墙壁或家具等结构件。确保所有静态网格都已标记为Static以便参与全局光照烘焙过程。 #### 设置粒子发射器 新建一个空的游戏对象并将Particle System组件附给它。调整其Transform位置使其位于空中适当高度处准备向下喷射火焰颗粒流。接着展开Inspector窗口内的ParticleSystem (Script) 属性列表找到Collisions Module部分: - 勾选`Collision`开启碰撞检测开关; - 将Dampen参数设为接近于零但不完全等于零的小数值(比如0.1),这样可以让撞击后的火花逐渐减速直至停止而不会立刻消失; - 调整Bounce系数至合理范围内(建议介于0~0.5之间),使得触碰表面后能够轻微弹起形成自然散开的趋势; - 对于Collides With选项卡内指定哪些LayerMask下的实体允许与其互动,默认情况下仅限Default层所以记得把之前提到过的那些静止道具所属图层也纳入进来考虑范围之内[^4]。 #### 编写响应逻辑 如果希望进一步增强沉浸感还可以编写一段C#脚本来监听特定事件的发生进而执行某些操作。例如每当有单个火星击打到目标表面上就播放一次短暂的声音提示音效或是改变材质颜色一段时间表示高温灼烧痕迹等等。下面给出了一段示范性的代码片段用于捕捉此类消息通知: ```csharp using UnityEngine; public class ParticleHitEffect : MonoBehaviour { private void OnParticleCollision(GameObject other){ Debug.Log($"A particle has hit {other.name}"); AudioSource audioSource = GetComponent<AudioSource>(); if(audioSource != null && !audioSource.isPlaying){ audioSource.Play(); } } } ``` 这段脚本应当挂载在一个拥有Audio Source组件并且已经载好合适音频剪辑资源的对象上。每当发生碰撞时就会调用OnParticleCollision方法打印日志信息同时触发声音回放机制。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值