3D游戏编程期末大作业——粒子系统
1.建立对象
-
建立一个空对象并命名为System,并在System中建立三个空对象:Collider、out_circle、in_circle。
-
设置Collider的参数并添加Sphere Collider,用于设置控制粒子呈现效果。
-
设置out_circle和in_circle的参数并添加Particle System用于呈现粒子效果,这两个物体的参数相同:
其中要通过修改Render中的material来修改粒子的材质,否则无法达到预期的呈现效果:
2.编写C#脚本ParSystem
- 新建CirclePosition结构,用于记录粒子光环的当前半径大小radius、角度angle和时间time,其中时间是游离运动需要的:
public class CirclePosition
{
public float radius = 0f, angle = 0f, time = 0f;
public CirclePosition(float radius, float angle, float time)
{
this.radius = radius; // 半径
this.angle = angle; // 角度
this.time = time; // 时间
}
}
- 声明ParSystem的各项私有变量,粒子系统和粒子数组是必须的,CirclePosition数组对应每个粒子,也是必须的,还有让粒子光环产生分层感的速度差分层数;另外还需要加入控制粒子收缩的各项变量:
private ParticleSystem particleSystem; // 粒子系统
private ParticleSystem.Particle[] particleSystemArray; // 粒子数组
private CirclePosition[] CirclePos; // 极坐标数组
private int speeddiffer = 10; // 速度差分层
private Ray ray; // 射线
private RaycastHit rayhit;