我们在一个场景当中设置一个平面来当作地面。在地面上方我们设置几个Cube来当做被炸飞的物体,空出地面正中间的位置。在这个位置的上方我们设置一个球,当作炸弹。我们给球和盒子都添加刚体组件。运行的效果就是球从空中下落,掉到地面的时,周围的盒子像四周飞出。
我们只需要把Cube击飞就好了,不需要把地面也炸飞,所以为了避免地面被炸飞,我们把Cube的tag都改成了Box,来和地面作区分。代码为:
private void OnCollisionEnter(Collision collision)
{
//爆炸范围半径5M
float r = 5f;
//得到圆心为collision.contacts[0].point,半径为r的圆中间所有的碰撞体
Collider[] colliders = Physics.OverlapSphere(collision.contacts[0].point, r);
//遍历碰撞体
foreach (Collider collider in colliders)
{
//判断是不是可以被击飞的箱子
if (collider.tag == "Box")
{
//添加爆炸力 力 爆炸点 爆炸半径
collider.GetComponent<Rigidbody>().AddExplosionForce(500f, collision.contacts[0].point, r);
}
}
}