您的位置:首页 > 移动开发 > Unity3D

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

2015-02-04 18:32 806 查看
最近在做一个打砖块的游戏,其实遇到发射炸弹,然后炸掉一个范围内的物体的问题。

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

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 2D 爆炸效果 C#