3DUnity编程与设计_HW8

1、简单粒子制作

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

根据参考资源给出实例,自己制作出实例:

效果如图:

3DUnity编程与设计_HW8_第1张图片

为控制其再不同的情景下显示不同的效果,挂载一个脚本,然后为其添加一个Colider,来做点击事件。

点击后,粒子开始围绕当前位置旋转,同时开始变色:

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class click : MonoBehaviour {
    
    public ParticleSystem light_;
    public Transform original;
    public float revs;
    public float rate;
    GameObject gameObject_;
    bool move;
    int color;
	// Use this for initialization
	void Start () {
        move = false;
        color = 1;
	}
    private void OnMouseDown()
    {
        /*鼠标选中gameobject */
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                gameObject_ = hit.collider.gameObject; //获得点击的物体
                light_ = gameObject.GetComponent();
                if(move){
                    move = false;
                    GameObject empty;
                    empty = gameObject_.transform.parent.gameObject;
                    empty.transform.position = new Vector3(0, 0, 0);
                }
                else{
                    move = true;
                    GameObject empty;
                    empty = gameObject_.transform.parent.gameObject;
                    empty.transform.position = new Vector3(-2, 0, 0);
                }
            }
        }
    }
	// Update is called once per frame
	void Update () {
        if(move){
            if(((color-color % 100)/100)%2 == 0)
                {
                Debug.Log("click2");
                var mainModule = light_.main;
                mainModule.startColor = Color.red;
                mainModule = original.GetComponent().main;
                mainModule.startColor = Color.red;
                color++;
                if (color > 500) color = 0;
            }else{
                Debug.Log("click1");
                var mainModule = light_.main;
                mainModule.startColor = Color.yellow;
                mainModule = original.GetComponent().main;
                mainModule.startColor = Color.yellow;
                color++;
                if (color > 500) color = 0;
            }
            gameObject_.transform.parent.transform.RotateAround(new Vector3(0,0,0),new Vector3(0,0,1), 50 * Time.deltaTime);
        }
	}
}

这样就完成了粒子效果

视频链接:https://www.bilibili.com/video/av74780672/

github链接:https://github.com/xutaiqi/Unity3D_HW8.git

你可能感兴趣的:(游戏)