运用刚体组件实现火焰下落碰撞爆炸
要求:运用刚体组件,使火焰在距离平面一定距离高度自由落体,在碰到平面的瞬间发生爆炸。
预备知识:刚体组件,碰撞器组件
刚体组件,是实现物体重力属性的重要组件,有质量、阻力等系列属性值,如图
碰撞器组件,是实现物体碰撞的重要组件,实现要求所用的是球形碰撞器,可以通过改变半径来改变碰撞判定范围,可以从Unity3D中被物体的外表看到一个绿色的球体范围,即碰撞判定范围。
编写碰撞脚本:通过碰撞监视器判断物体是否发生碰撞关系,在发生碰撞瞬间,创建爆炸对象,删除火焰对象。
//声明预设体
public GameObject Prefab;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
//监听发生碰撞
private void OnCollisionEnter(Collision collision)
{
//创造一个爆炸对象
Instantiate(Prefab, transform.position, Quaternion.identity);
//销毁火焰
Destroy(gameObject);
}
//持续碰撞中
private void OnCollisionStay(Collision collision)
{
}
//碰撞结束
private void OnCollisionExit(Collision collision)
{
}
编写爆炸脚本:通过计时器判断时间大于1s后删除炮炸对象。
void Update()
{
time += Time.deltaTime;
if (time > 1)
{
Destroy(gameObject);
}
}
实验完成。
拓展实验:开始程序后火焰悬停空中不动,鼠标点击左键后火焰下落。
编写脚本:程序初始化时关闭火焰重力属性,在识别到鼠标左键点击后打开火焰重力属性。
//刚体插件
private Rigidbody body;
// Start is called before the first frame update
void Start()
{
//获取刚体对象
body = GetComponent<Rigidbody>();
//初始化关闭重力
body.useGravity = false;
}
// Update is called once per frame
void Update()
{
//点击鼠标左键,开始掉落
if (Input.GetMouseButtonDown(0))
{
body.useGravity = true;
}
}
实验完成。