3D游戏编程作业8

本文详细介绍了如何使用Unity3D创建一个魔法球粒子效果,包括光球、光晕和星光的粒子系统设计,并通过C#代码控制粒子在场景中的动态效果。代码示例展示了光球控制器、光晕控制器和星光控制器的实现,使得魔法球能够左右移动,光晕和星光逐渐消退。
摘要由CSDN通过智能技术生成

作业目标

  • 简单粒子制作

    • 按参考资源要求,制作一个粒子系统,参考资源
    • 使用 3.3 节介绍,用代码控制使之在不同场景下效果不一样

实现过程

1、制作魔法球

首先,我们按照参考资料的步骤来设计一个魔法球粒子,这里我将魔法球分解为三个部分:最里面的光球、中间的光晕和最外面的星光。

所以一共需要设计3个粒子系统,它们的层次结构如下:

在这里插入图片描述
其中光球是主粒子系统,而光晕和星光都是光球的子粒子系统。

然后要设计各个粒子系统的状态参数,这里直接按照参考资料中给出的参数进行调整,要根据实际情况来,不能一味按参考资料的值进行设计,否则做出来的魔法球效果会很差。

1.1 光球

光球是魔法球的主体,是魔法球的发光处,其粒子系统设计如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 光晕

光晕是光球散发出来的光环,颜色相对光球会比较淡比较模糊,其粒子系统参数设计如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3 星光

星光可以看作是光球发出来的光线,从无到有再到无,其粒子系统参数设计如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、代码设计

这里一共设计了3个控制器来控制不同的粒子系统,其中光球的控制器使得整个魔法球可以在屏幕中左右移动,而光晕和星光的控制器则分别使得光晕和星光随着时间流逝慢慢变得微弱。

GuangQiuController.cs:

public class GuangQiuController : MonoBehaviour
{
    ParticleSystem exhaust;
    int direction;
    void Start() {
        exhaust= GetComponent<ParticleSystem>();
        direction = 0;
    }
 
    void Update() {
        int minX = -10, maxX = 10 ;
        if (direction == 0 && exhaust.transform.position.x > minX)
            exhaust.transform.position += Vector3.left * Time.deltaTime * 10;
        else if (direction == 1 && exhaust.transform.position.x < maxX)
            exhaust.transform.position += Vector3.right * Time.deltaTime * 10;
        else direction = 1 - direction;
    }
}

GuangYunController.cs:

public class GuangYunController : MonoBehaviour {
    ParticleSystem exhaust;
    float size = 2f;

    // Use this for initialization
    void Start () {
        exhaust = GetComponent<ParticleSystem> ();
    }

    // Update is called once per frame
    void Update () {
        size = size * 0.999f;
        var main = exhaust.main;
        main.startSize = size;
    }
}

XingGuangController.cs:

public class XingGuangController : MonoBehaviour {
    ParticleSystem exhaust;
    float size = 5f;

    // Use this for initialization
    void Start () {
        exhaust = GetComponent<ParticleSystem> ();
    }

    // Update is called once per frame
    void Update () {
        size = size * 0.999f;
        var main = exhaust.main;
        main.startSize = size;
    }
}

效果展示

首先是魔法球的效果展示,这里没有挂载任何C#文件,只是简单的粒子系统。

在这里插入图片描述

然后是挂载了控制器的魔法球的效果展示:

在这里插入图片描述

代码地址

传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值