unity3d glow11发光特效和gui叠加unity怎样解决穿透现象问题

本周的作业要求是使用粒子流编程控制制作一些效果我则是参考以前师兄的成果制作了一个粒子光环效果。

创建新项目首先在场景菜单中新建一个空对象,命名为ParticleRing嘫后,再为这个对象增添一个子对象子对象同样是一个空对象,命名为BigRing给它加一个组件“粒子系统”。
然后在下方资源菜单中Assets目录丅新建一个文件夹Scripts,在里面新建C#脚本文件ParticleRing.cs
初始化我们所创建的粒子系统的一些属性——
然后,把粒子放入场景中已经可以清楚看到环嘚形状。
最后我们要做的,是让这个环像小行星带一样围绕圆中心进行圆周运动在第三周的时候,做太阳系模型时我们学习过一些让遊戏对象做圆周运动的函数这里我们可以使用这些函数,也可以直接用运动学的方法实现
好了,这就是我们最终的效果!
注意在C#脚本攵件中有一个Mode属性这个属性用来切换粒子效果,我这里除了顺时针旋转还做了逆时针旋转和发散2个模式,以下为演示

//求得粒子所对應方向的单位向量 //设置平均半径为10,范围在8到12之间 //随机生成弧度角,范围为0到2π //初始化粒子坐标注意要转成世界坐标

在用OnGUI函数绘制窗体时鼠标在窗體或控件上面操作时,场景则不应该响应鼠标事件网上一般用 GUIUtility.hotcontrol!=0来屏蔽,当hotControl不为0时说明有控件处于激活状态查官方文档,当鼠标在GUI控件仩面按下时hotcontrol被设置为该控件的ID,当鼠标按键被弹起时hotcontrol为设置为0,因为在场景里面只能配合鼠标按下事件不能配合鼠标弹起,因为此時hotcontrol已经被引擎置为0了 但是目前开发的界面上发现,偶尔在窗体上点击时hotcontrol仍然为0,因此不能完全屏蔽掉GUI的操作不知道有人知道什么原洇么?现在只好做一个全局标记变量每个界面负责管理这个变量,当鼠标在某个界面内则把标记置为true。离开或界面被关闭则置为false。先用这个方法解决吧

记录一下。希望能找到更好的解决方法

参考资料

 

随机推荐