1.新建粒子系统
2.新建材质
- 更改材质类型为skybox-cubemap
- 更改颜色
- 更改cubmap类型
3.更改粒子系统的配置
1.配置持续时间、起始生命周期(可以调节火的长度)、发射(随单位时间产生的粒子数)-类似于火的浓度大小
2.设置形状类型为椎体,半径(相对于圆锥的半径,宽度)
3.设置生命周期颜色(火焰的过渡颜色)和生命周期大小(火焰的幅度变化,从大到小的变化)
4.勾选触发器、设置渲染器(可以改变粒子系统本身的形状)、材质选择part开头的火焰效果、
4.为粒子系统fire添加刚体和胶囊碰撞体
配置胶囊碰撞体的数值(方向设置为z轴、高度适中)、勾选为触发器 注意:不勾选触发器的时候会出现碰撞不到的情况
5.挂载脚本文件到fire粒子系统上
并将爆炸的效果挂载到粒子系统上(此变量是在脚本文件中声明的变量的)
6.编写fire脚本文件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class fire : MonoBehaviour
{
// 关联爆炸效果
public GameObject boom;
void Start()
{
}
//
void Update()
{
//火有个向下的速度 火落地的时候或者碰到其他物体要爆炸
}
private void OnTriggerEnter(Collider target)
{
Debug.Log("碰到了");
//target拿到碰撞对象
//显示爆炸效果 --其实就是克隆
GameObject clone = Instantiate(boom, transform.position,transform.rotation);//克隆爆炸对象到火的位置
Destroy(this.gameObject);
Destroy(clone, 0.3f);
}
}
7.将左上角的粒子系统fire移动到asset文件夹中
将烟花当做一种对象进行拖入
8.新建getFire脚本文件
并将脚本文件挂载到FirePoint空对象中
9.编写getFire脚本文件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class getfire : MonoBehaviour
{
public GameObject fire; //关联火
private float time = 0;
// Start is called before the first frame update
void Start()
{
}
// 每隔0.5秒出现火团 不能一开始出现很多火
void Update()
{
//每次增加时间
time += Time.deltaTime;
if(time >= 0.7f)
{
//克隆火 Quaternion.identity-不旋转
Instantiate(fire,new Vector3(transform.position.x+Random.Range(-10,10),
transform.position.y,transform.position.z+Random.Range(-10,10)),Quaternion.identity);
time = 0; //重置
}
}
}
更新的fire文件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class fire : MonoBehaviour
{
// 关联爆炸效果
public GameObject boom;
public Rigidbody rig;
void Start()
{
rig = GetComponent<Rigidbody>();
}
//
void Update()
{
//火有个向下的速度 火落地的时候或者碰到其他物体要爆炸
rig.velocity = new Vector3(0, -10f, 0);
}
private void OnTriggerEnter(Collider target)
{
Debug.Log("碰到了");
//target拿到碰撞对象
//显示爆炸效果 --其实就是克隆
GameObject clone = Instantiate(boom, transform.position,transform.rotation);//克隆爆炸对象到火的位置
Destroy(this.gameObject);
Destroy(clone, 0.3f);
}
}
注意:
fire脚本文件主要实现的是关联爆炸对象、获取刚体,设置火向下的速度;当火碰撞其他物体的时候克隆碰撞位置的爆炸效果,并且隔一回儿消除爆炸效果和克隆爆炸对象
getFire脚本文件主要实现的是关联火fire的对象,每次更新设置火焰出现的时间并且在活的周围克隆火的对象,使之成为轰炸区的效果
每次更新完时间>=0.7后需要把时间重置为0,不然火焰会到处释放。