首先介绍两个API:
——相交球检测:Physics.OverlapSphere(Vector3 position, float radius, [int layerMask])
position:球心
radius:半径
layerMask:检测的层
返回球型半径之内(包括半径)的所有碰撞体,缺点就是radius不方便测试

——添加爆炸力:rigi.AddExplosionForce(float explosionForce,Vector3 explosionPosition, float explosionRadius,[float upwardsModifier = 0.0f], [ForceMode mode = ForceMode.Force])
explosionForce:爆炸力的大小
explosionPosition:爆炸点
explosionRadius:爆炸半径

using UnityEngine;public class Test : MonoBehaviour
{//爆炸private void Boom(){Collider[] collider = Physics.OverlapSphere(transform.position, 5);foreach (Collider c in collider){if (c.tag == "Item"){c.GetComponent<Rigidbody>().AddExplosionForce(400, transform.position, 5);}}}
}

AddExplosionForce只能对于3D刚体使用,而2D刚体并没有这个API,我们可以自行编写一个简单的模拟爆炸效果:

using System.Collections.Generic;
using UnityEngine;public class Test : MonoBehaviour
{public List<GameObject> item = new List<GameObject>(); //所有物体public float force; //力的大小private void Update(){if (Input.GetKeyDown(KeyCode.Space)){Explosion();}}//爆炸public void Explosion(){//获取目场景中要爆炸的所有物体的中心点float minX = item[0].transform.position.x;float maxX = item[0].transform.position.x;float minY = item[0].transform.position.y;float maxY = item[0].transform.position.y;for (int i = 0; i < item.Count; i++){if (item[i].transform.position.x < minX){minX = item[i].transform.position.x;}}for (int i = 0; i < item.Count; i++){if (item[i].transform.position.x > maxX){maxX = item[i].transform.position.x;}}for (int i = 0; i < item.Count; i++){if (item[i].transform.position.y < minY){minY = item[i].transform.position.y;}}for (int i = 0; i < item.Count; i++){if (item[i].transform.position.y > maxY){maxY = item[i].transform.position.y;}}Vector2 midPos = new Vector2((maxX + minX) / 2, (maxY + minY) / 2);//模拟力foreach (GameObject temp in item){//物体与爆炸中心的距离(越近的受到的爆炸力越大)float dis = Mathf.Abs(Vector2.Distance(food.transform.position, midPos));Vector2 v = midPos - (Vector2) temp.transform.position;Vector2 dir = v.normalized;temp.GetComponent<Rigidbody2D>().gravityScale = 1;temp.GetComponent<Rigidbody2D>().velocity = -dir * (force - dis);}}
}

Unity中模拟爆炸的力相关推荐

  1. Unity中模拟键盘按键(转)

    做手机游戏时需要通过UI上的按钮控制物体,原来的脚本用于电脑端上运行,通过键盘按下按键,Input.GetAxisRaw("Vertical")和"Horizontal& ...

  2. Unity中使用模板测试模拟Mask组件效果

    本文分享Unity中使用模板测试模拟Mask组件效果 在上一篇文章中, 我们分享了模板测试的基础知识, 在今天的分享中, 我们会尝试使用模板测试来模拟遮罩效果. Unity中使用模板测试模拟Mask组 ...

  3. 在Unity中实现基于粒子的水模拟(二:开始着色)

    在Unity中实现基于粒子的水模拟(二:开始着色) 文章目录 在Unity中实现基于粒子的水模拟(二:开始着色) 前言 一.生成顶点 二.偏移模拟 1.接收细分着色器输出的顶点 2.根据数据调用对应的 ...

  4. 在Unity中实现基于粒子的水模拟(三:混合屏幕)

    在Unity中实现基于粒子的水模拟(三:混合屏幕) 文章目录 在Unity中实现基于粒子的水模拟(三:混合屏幕) 前言 一.着色算法介绍 1.折射 2.反射 二.准备纹理 1.获取纹理 2.模糊纹理 ...

  5. LS-DYNA模拟炸药在无限空域中的爆炸

    整理来源:B站UP视频教程 https://www.bilibili.com/video/av327711800/?vd_source=980508cc10234c598ddfa5aa8f5897e8 ...

  6. Unity 布料模拟插件Magica Cloth

    依赖包 Magica Cloth 使用 Job System 和 Burst compiler 加快布料模拟,所以需要先安装这两个依赖包 Burst 可以直接下载 在这里插入图片描述 Job Syst ...

  7. Unity中物体移动方法详解

    一:Transform --transform.Translate:不会考虑到碰撞 transform.Translate(Vector3 targetPos,指定参照坐标系(默认为Space.Sel ...

  8. Cinemachine教程 | Unity中如何快速制作镜头晃动?

    摘要:经常在游戏.影视中会看到镜头晃动的镜头,比如枪的后坐力.爆炸.碰撞.巨人踩踏地面等等,镜头晃动如何快速制作呢? 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周 ...

  9. 详解Unity中的粒子系统Particle System (十一)

    前言 今天讲最后一个模块--External Forces,该模块需要和Force Field组件配合使用,作用是模拟物理的力对粒子的影响.至此,Unity内置粒子系统的最后一块物理砖补齐,理论上来讲 ...

最新文章

  1. Python+OpenCV学习(17)---摄像机标定
  2. 日本社交餐厅评论服务平台Retty获1050万美元D轮融资
  3. Asp.net(C#)-显示所有缓存 清除所有缓存
  4. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(下)
  5. 设置调试PHP,debug php输出所有错误信息
  6. 在SQL Server里为什么我们需要更新锁
  7. 暑期训练日志----2018.8.17
  8. 34.scrapy解决爬虫翻页问题
  9. java中怎样上传zip_java服务器如何对zip文件分包上传?
  10. 四、对象创建和垃圾回收流程
  11. 让VSCode字体性感起来
  12. 对偶式与反函数_对偶式和反函数什么关系,是不是都是一样,还是怎么回事啊,...
  13. 苹果恢复出厂设置报4013错误问题
  14. vm安装win xp镜像遇到的安装问题之一
  15. Web3 赋能音乐行业,能否创造更多价值?
  16. rstudio 保存_R: RStudio的中文读取、保存与显示
  17. Spring_背诵英文单词
  18. 生态功能区划方法之二:生态服务功能重要性评价
  19. 2004-2019年分省农产品进出口额
  20. linux学习-解决“sshd: no hostkeys available -- exiting”

热门文章

  1. Excel打开xlsx、csv后空白解决方法
  2. HttpRunner学习
  3. java简单图书管理系统的代码,java编写的图书管理系统源代码
  4. 读明思宗殉国三百年纪念碑碑文
  5. 万豪国际亚太区15家酒店率先启动“益起旅行 ”体验项目
  6. M1卡/CUID卡格式化清卡操作方法
  7. 翻译“寿星天文历”有感
  8. 项目集成语音识别(科大讯飞)
  9. 使用NetTopologySuite将shp文件转为GeoJson格式
  10. Django搭建个人博客之如何编写文章