【Unity】物体爆炸,碎片横飞 您所在的位置:网站首页 unity爆炸效果 【Unity】物体爆炸,碎片横飞

【Unity】物体爆炸,碎片横飞

2023-12-23 17:45| 来源: 网络整理| 查看: 265

效果: 

可以看到,主角碰到我们的巧克力之后,巧克力爆炸,碎片横飞,然后消失。

思路:

1.判断主角与巧克力接触

2.接触到的瞬间删除巧克力(你希望爆炸的物体)。

3.生成巧克力碎片的prefab(多个碎片组合成的一个物体)。给这个物体添加一个爆炸力,让它向四周飞去。一小段时间后删除碎片。

给玩家一种该物体爆炸,变成碎片的感觉。实际上,该物体并没有变化,只是瞬间换成了多个碎块的组合体。这些碎块受力飞走了。

具体实现:

1.判断主角与巧克力接触后,执行相应操作:

主角和巧克力(需要爆炸的物体)都要添加碰撞盒。在主角或者巧克力身上的脚本里进行碰撞检测,我是在巧克力的脚本上检测的。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Monster : MonoBehaviour { //巧克力身上绑定的脚本:Monster类 public GameObject chips;//碎块prefab,在外部赋值 private void OnCollisionEnter(Collision col)//碰撞检测函数 { //判断碰撞到物体的layer是否和主角的layer相同。如果相同说明碰到了主角 if (col.gameObject.layer == LayerMask.NameToLayer("wuzei")) { SpawnEffects();//生成爆炸特效,不同monster特效可能不同 SpawnChips(chips);//生成碎块物体的prefab Destroy(gameObject);//删除本物体 } } }

2.生成碎块物体的prefab,向它添加爆炸力,让它飞走

每个碎块都要添加碰撞盒和刚体,之后才能受力运动

                

void SpawnChips(GameObject m_chips) { if (m_chips != null) { //生成prefab GameObject myChips = Instantiate(m_chips, transform.position, Quaternion.identity); //1s后删除该物体(爆炸后很快就应该消失) Destroy(myChips, 1f); //设置发生爆炸的位置 Vector3 explosionPos = myChips.transform.position;//这里把位置设置为该物体自身位置。可以根据实际情况调整。 //调用Physics类的OverlapSphere方法,选取受到爆炸影响的colliders,确定爆炸范围。 Collider[] colliders = Physics.OverlapSphere(explosionPos, radius); //对上一步获取到的所有碰撞体进行操作 foreach (Collider hit in colliders) { Rigidbody rb = hit.GetComponent();//获取刚体 if (rb != null) { rb.AddExplosionForce(power, explosionPos, radius, -3f); //调用函数AddExplosionForce(),向刚体添加爆炸力 } } } }

【注意】:为了效果更明显,可以把rigidbody的mass减小(m减小,a变大),LinerDrag减小(运动阻力)。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有