Unity 2D炸弹爆炸的效果制作

最近在做一个打砖块的游戏,其实遇到发射炸弹,然后炸掉一个范围内的物体的问题。

现在将我的做法记录下来,以备日后使用。

using UnityEngine;
using System.Collections;

public class BombControl : MonoBehaviour {

	public GameObject explosion;//爆炸效果的引用,这里我用的是从网上下载的Prefab
	public float radius=3F;//爆炸范围的半径

	// Use this for initialization
	void Start () {

	}
	
	// Update is called once per frame
	void Update () {
		//如果炸弹没爆炸,则当炸弹的位置低于-4的时候,自动销毁炸弹
		if (this.gameObject.transform.position.y < -4) {
			Destroy(this.gameObject);
		}
	}

	void OnCollisionEnter2D(Collision2D col){
		string tag = col.gameObject.tag;
		//如果炸弹撞到砖块(这里我将砖块分为block_general,block_reward,block_move,block_firm)或者墙体(TopWall,Wall)
		if (tag == "block_fixed" || tag == "block_general" || tag == "block_reward" || tag == "block_move" || tag == "block_firm" || tag=="TopWall" || tag=="Wall") {
			//实例化一个爆炸效果
			Instantiate(explosion,gameObject.transform.position,Quaternion.identity);
			//获得以炸弹为中心的一定范围内的所有对象
			Collider2D[] colliders= Physics2D.OverlapCircleAll(gameObject.transform.position,radius);
			//如果炸弹碰到的是砖块,则销毁砖块
			foreach(Collider2D collider in colliders){
				string co_tag=collider.gameObject.tag;
				if(co_tag == "block_fixed" || co_tag == "block_general" || co_tag == "block_reward" || co_tag == "block_move" || co_tag == "block_firm"){
					Destroy(collider.gameObject);
				}
			}
			//最后销毁炸弹本身
			Destroy(this.gameObject);
		}

	}
}

你可能感兴趣的:(Unity,Unity,2D,爆炸效果,C#)