Unity 2D炸彈爆炸的效果製作
阿新 • • 發佈:2019-02-09
最近在做一個打磚塊的遊戲,其實遇到發射炸彈,然後炸掉一個範圍內的物體的問題。
現在將我的做法記錄下來,以備日後使用。
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); } } }