3D游戏编程与设计作业八

作业要求

本次作业基本要求是三选一。

  • 简单粒子制作
  • 完善官方的“汽车尾气”模拟
  • 使用粒子流编程控制制作一些效果, 如“粒子光环”

在本次作业中,我完成的是作业三——粒子光环。

实现

在项目中新建一个Particle System,修改一下Rotate以便其正对摄像机,Particle System中的相关参数也没有怎么修改:
在这里插入图片描述
然后就是通过脚本实现例子移动形成光环的效果了。
实现思路如下:
首先要使用一个数组particleRing来存储所有粒子,然后使用angle数组来存储各个粒子当前的角度(位置)和旋转半径R

    private ParticleSystem.Particle[] particleRing;
    private float[] particleAngle;
    private float[] particleR;

实现旋转的部分如下:

			if (i % 2 == 0){
                particleAngle[i] += (i % level + 1) * speed;
            }
            else{
                particleAngle[i] -= (i % level + 1) * speed;
            }
            
            particleAngle[i] = particleAngle[i] % 360;
            float rad = particleAngle[i] / 180 * Mathf.PI;
            particleRing[i].position = new Vector3(particleR[i] * Mathf.Cos(rad), particleR[i] * Mathf.Sin(rad), 0f);

这里的i是遍历整个粒子数组的index,前面的一个if判断的效果是让一半粒子顺时针旋转、一半粒子逆时针旋转。
每个粒子的Angle加上或者减去(i % level + 1)*speed,这里的用意是各个粒子的运行速度不完全一致,而是分为level个等级依次递增,然后将计算后的结果%360,为了保证Angle在合法范围[0,360]之间。
接着计算出相应弧度值,因为Mathf中的Cos和Sin函数接收的参数是弧度值。
最后就直接修改每一个粒子的位置,利用数学知识: x = r c o s θ x=rcos\theta x=rcosθ y = r s i n θ y=rsin\theta y=rsinθ即可。

除此之外,本项目还实现了粒子光环的颜色渐变,利用到的是

public Gradient Color;

在每次update 遍历粒子的时候进行如下操作:

particleRing[i].color = Color.Evaluate(Mathf.Abs(Mathf.Cos(Time.time)));

可以根据时间来在渐变色板上以cos的变化进行取色。

此时效果如下:
在这里插入图片描述
基本实现了粒子光环的效果,但是想要进行一些处理,让光环的中间比较厚、两边比较薄一点,显得更加美观,因此在设置粒子半径r的时候增加如下操作:
在这里插入图片描述
先取最小半径和最大半径的均值,然后先在进行三次随机,这样粒子落在中间的概率就比落在两边的概率大了。

此时效果如下:

在这里插入图片描述
可以看出两边的厚度明显小于中间,粒子光环制作完成。

源代码

GitHub

参考博客

Unity3d-粒子光环

Unity3D学习:制作粒子光环特效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D脚本编程游戏开发源码提供了一种有效的方式来创建令人兴奋的游戏。Unity3D是一款功能强大的游戏引擎,它允许开发者使用C#或JavaScript等脚本语言来编写游戏逻辑。 Unity3D脚本编程基于组件的设计模式。开发者可以在场景中添加各种组件,并使用脚本来控制它们的行为。例如,可以创建一个脚本来控制玩家角色的移动,另一个脚本来控制敌人的行为。这种模块化的设计使得开发过程更加灵活和可维护。 脚本编程也提供了一种可视化的方式来操纵游戏对象。Unity3D提供了一个强大的编辑器,开发者可以使用脚本来创建自定义的编辑器工具,这使得设计人员可以更轻松地进行游戏开发和调试。脚本编程还可以与其他功能强大的开发工具相结合,如动画和物理引擎,以创建更加逼真和令人印象深刻的游戏体验。 对于游戏开发源码来说,它是一种可供开发者学习和参考的资源。通过研究和了解游戏开发源码,开发者可以深入了解游戏开发的各个方面,包括游戏逻辑、资源管理、碰撞检测等。源码还可以帮助开发者提高编程设计技巧,并为他们提供创建自己游戏的灵感和指导。 总之,Unity3D脚本编程游戏开发源码提供了一种强大的工具和资源,帮助开发者创建令人兴奋和吸引人的游戏。它们对于游戏开发者来说是宝贵的资产,可以帮助他们实现创意,并创造出独一无二的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值