【游戏开发进阶】Unity流体模拟,支持粒子系统,支持流体碰撞交互(Obi Fluid插件使用教程)

本文介绍Unity流体模拟插件ObiFluid的使用方法,包括流体发射器、碰撞器及渲染器等组件配置,还讲解了如何调整流体颜色、材质及喷射速度等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

点关注不迷路,持续输出Unity干货文章。

嗨,大家好,我是新发,今天给大家分享一个Unity流体模拟插件:Obi Fluid
本文Demo工程已上传到GitCode,感兴趣的同学可以下载下来学习:
地址:https://gitcode.net/linxinfa/UnityFluidSimulationDemo
注意:我使用的Unity版本是2020.2.7f1c1 (64-bit)
在这里插入图片描述

二、效果演示

效果演示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、使用方法

1、流体发射器

Hierarchy空白处右键点击菜单3D Object / Obi / Obi Emitter (with solver)
在这里插入图片描述
此时,会创建一个挂了如下四个组件的物体:
Obi Emitter:流体发射器;
Obi Emitter Shape Disk:流体发射器的形状;
Obi Particle Renderer:流体粒子渲染器;
Obi Solver:流体解决方案。
在这里插入图片描述
此时运行效果如下:
在这里插入图片描述

2、流体碰撞器

我们创建一个平面。
在这里插入图片描述
挂上Obi Collider组件。
在这里插入图片描述
运行效果如下:
在这里插入图片描述

3、流体渲染器

我们看到上面的流体效果是明显的小球的样子,此时,我们给摄像机挂上Obi Fluid Renderer组件,并赋值Particle Renderers元素为上面创建的Obi Emitter
在这里插入图片描述

并将Obi Emmiter物体上的Obi Particle Renderer组件的Renderer勾选去掉。
在这里插入图片描述
再运行,效果如下:
在这里插入图片描述

4、修改流体颜色

通过Obi Particle RendererParticle Color属性,即可修改流体的颜色。
在这里插入图片描述
效果如下:
在这里插入图片描述

5、盆子模型

为了方便演示,我们加个盆子模型,为其添加Mesh Collider组件,并勾选Convex
在这里插入图片描述

并挂上Obi ColliderObi Rigidbody组件。
在这里插入图片描述
如下:
在这里插入图片描述

为盆子添加Obi Collider组件,否则流体会直接穿过盆子。
在这里插入图片描述
将摄像机镜头拉近,运行效果如下:
在这里插入图片描述

6、流体颗粒大小

通过Obi Particle RendererRadius Scale可以调节流体颗粒的大小,如下,我们调整为1.5
在这里插入图片描述
运行效果如下:
在这里插入图片描述
运行一会儿,帧率跌3.6FPS,我们需要设置一下参数,减少运算。
在这里插入图片描述

7、流体材质

通过Obi Emitter组件的Emitter Material可以设置流体的材质,如下,以LowResulution为例。
在这里插入图片描述
运行效果如下:
在这里插入图片描述
此时,帧率可以稳定在60FPS左右。
在这里插入图片描述

8、喷射口调节

选中Obi Emitter,可以在Scene窗口中看到喷射口的形状,是一个像花洒一样的东西。
在这里插入图片描述

我们看到喷射口的方向不是对着盆子的,调整一下Transform的角度,使喷射口的方向对准盆子。
在这里插入图片描述

喷射口有点大,可以通过Obi Emitter ShapeRadius即可调节喷射口的大小,我们调为0.12,如下:
在这里插入图片描述
在这里插入图片描述

运行效果如下:
在这里插入图片描述
我们还可以替换喷射口形状,比如换成条形的喷射口。
在这里插入图片描述
在这里插入图片描述

9、喷射速度调节

我们看到喷射速度比较慢,可以通过Obi Emitter组件的Speed属性调节喷射速度,我们调为4,再给一个随机受力Random Velocity
在这里插入图片描述

运行效果如下:
在这里插入图片描述

10、碰撞材质

可以通过Obi Emitter组件的Collider Material设置碰撞材质。
为了演示,我们把喷射口角度调整一下,让流体喷射在盆口边缘,如下:
在这里插入图片描述
接着,我们以VerySticky为例。
在这里插入图片描述
运行效果如下,可以看到粘性很强:
在这里插入图片描述

11、流体重力加速度

通过Obi Solver组件的Gravity可以调节流体的重力加速度,如果重力加速度太大,流体可能会穿透容器。
在这里插入图片描述

如下,-30的重力加速度太快了,导致流体穿透容器。
在这里插入图片描述

如果设置为正值,流体则会收到向上的加速度,比如设置为5
在这里插入图片描述
运行效果如下:
在这里插入图片描述

12、使用粒子系统

Obi Emitter子节点下创建一个粒子系统。
在这里插入图片描述
给粒子系统挂Particle Advector组件,并赋值Solver对象。
在这里插入图片描述
将摄像机的Obi Fluid Renderer组件禁用。
在这里插入图片描述
随便设置下粒子的效果,
在这里插入图片描述
运行效果如下:
在这里插入图片描述

四、结束语

喜欢Unity的同学可以点击关注,欢迎留言评论,我会不断写一些Unity的干货文章,希望可以帮助到想学Unity的同学。

### 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方法打印日志信息同时触发声音回放机制。
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值