预制体制作
导入要用到的模型,添加CapsuleCollider组件和Rigidbody组件,并设置好相关属性。
添加这两个组件是为了实现爆炸的效果。
实现原理
用一个变量来记录油桶受到攻击的次数,当受到三次以上的攻击时就触发爆炸。
爆炸时,以当前油桶为中心获取爆炸范围内的物体。并使用Rigidbody组件给它们添加一个爆炸的力并播放爆炸的粒子特效。
public class BarrelCtrl : MonoBehaviour {
public GameObject expEffect;//爆炸的特效
public float expRadius = 10.0f;//爆炸半径
private int hitCount = 0;//受到攻击次数
private void OnCollisionEnter(Collision collision)
{
if(collision.transform.tag == "BULLET")
{
Destroy(collision.gameObject);
if(++hitCount >= 3)
{
ExpBarrel();
}
}
}
private void ExpBarrel()
{
Instantiate(expEffect, this.transform.position, Quaternion.identity);
//获取爆炸范围内的物体
Collider[] colls = Physics.OverlapSphere(this.transform.position, expRadius);
foreach(Collider coll in colls)
{
Rigidbody rig = coll.GetComponent<Rigidbody>();
if(rig != null)
{
rig.mass = 1.0f;//重置质量
//施加爆炸的力
rig.AddExplosionForce(1000.0f, this.transform.position, 10.0f, 300.0f);
}
}
Destroy(this.gameObject, 2.0f);
}
}