Unity3D的刚体Rigidbody下面有个AddExplosionForce函数,查看文档我们得知这个函数是用来添加爆炸力的。爆炸效果在游戏中经常使用到,尤其是射击类游戏。我们通过一个小例子学习一下这个方法的使用。
首先新建一个项目,命名为“explosionTest”,我们在场景中加入四个方块Cube作为受到爆炸影响的物体,并给它们添加刚体组件,然后新建一个球体Sphere,作为炸弹,命名为“bomb”。把炸弹放到四个方块的中间,在炸弹的上方放置一个引发小球,当小球落下时触发碰撞函数OnCollisionEnter(),使炸弹爆炸。建完后的场景如下:
添加一个C#脚本文件“explosionScript”,代码如下:
using UnityEngine;
using System.Collections;
public class explosionScript : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnCollisionEnter(Collision col)
{
//如果碰撞物是上方落下的小球,进行爆炸处理
if (col.transform.name == "Sphere")
{
//定义爆炸半径
float radius = 3.0f;
//定义爆炸位置为炸弹位置
Vector3 explosionPos = transform.position;
//这个方法用来反回球型半径之内(包括半径)的所有碰撞体collider[]
Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
//遍历返回的碰撞体,如果是刚体,则给刚体添加力
foreach (Collider hit in colliders)
{
if (hit.rigidbody)
{
hit.rigidbody.AddExplosionForce(600, explosionPos, radius);
}
//销毁炸弹和小球
Destroy(col.gameObject);
Destroy(gameObject);
}
}
}
}
把脚本拖到炸弹上,运行游戏,当小球落下后,碰到炸弹触发函数,使得周围的方块被炸飞。
最后附上项目的下载地址:
点此下载
版权声明:本文为jukai7原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。