爆炸油桶实现

预制体制作

导入要用到的模型,添加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);
    }
}

猜你喜欢

转载自blog.csdn.net/sinat_37888718/article/details/81084649