做项目有时候会做天气模拟,模拟雨雪天气等等。但是容易忽略一个问题,就是房屋内不应该下雨或者下雪,这样不就穿帮了嘛。

下面就粒子穿透物体问题做一个demo。

正常下雨下雪在室内的话,你可以看到,粒子是穿透建筑的。

那要怎么模拟真实的雨雪天气,不让粒子穿透房屋建筑呢?

一:设置建筑物

1.把房子的层级改成层(BuildingLayer),如下图所示

2.给房子加碰撞 BoxCollider或者MeshCollider都可以,按自己的需求选择添加即可。

二:设置粒子

拿下雪的粒子为例,按下面设置:

1.type:选择World

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

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

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

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

6.Collides With:可碰撞范围,设置可以与该粒子系统碰撞的层,这里我们选择之前添加的建筑层BuildingLayer

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

8.Send Collision Messages:发送碰撞信息。

建筑物和粒子都设置完之后,就可以看到室外是鹅毛大雪,室内却没有雨雪的完美效果,如下图窗外飘雪~~:

拓展:

如果想看到粒子和建筑的碰撞信息,也很简单:

在建筑物上新建一个脚本如下图所示

运行查看控制台输出

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐