プロジェクト作成
1.新規プロジェクトを名前をJoytas19で作成する(3Dモード)
Assetインポート
1.Assets->ImportPackage->ParticleSystemsを選択する。

2.以下のように項目にチェックを入れインポート(MaterialsとTexturesは全部、PrefabsはExplosion.prefabのみ)

ステージの作成
3.Create->Cubeを作成しFloorとリネーム後インスペクターを以下のように調整する。

Cubeの作成
4.Create->Cubeを作成し、インスペクターを以下のように調整し、適当にマテリアル(表面材質)を付与する。

5.新規にCubeタグを作成し、Cubeに設定する。Rigidbodyを付与する。

6.Cubeをプレファブ化し、5つほど適当に並べる。

スクリプトの作成
7.CameraController.csを以下のように作成し、カメラにアタッチする。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour {
public GameObject prefab;
void Update () {
if(Input.GetMouseButtonDown(0)){
StartCoroutine (Explosion ());
}
}
IEnumerator Explosion(){
yield return null;
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if(Physics.Raycast(ray,out hit,100.0f)){
if(hit.collider.tag=="Cube"){
//当たったCubeを消す
Destroy (hit.collider.gameObject);
//rayとcubeと当たった地点い爆発エフェクト生成
GameObject explosion=Instantiate (prefab, hit.point, Quaternion.identity) as GameObject;
//爆発あった地点から半径10の球を作成しその中に収まるコライダーを配列で取得する。
Collider[] colls = Physics.OverlapSphere (hit.point, 10.0f);
//コライダー配列の走査
foreach(Collider coll in colls){
//rigidbodyの取得(なければnullが返る)
Rigidbody rb = coll.GetComponent<Rigidbody> ();
if(rb != null){
//リジッドボディの付いている物体には爆発力を与える(爆発力,中心,半径)
//rb.AddExplosionForce (800.0f, hit.point, 10.0f);
//派手にしたい場合は第4引数を与えて上に飛ばしてやる(爆発力,中心,半径,上方向に飛ばす力)
//(物理的にリアルな挙動ではなくなるが派手になってゲーム向き)
rb.AddExplosionForce (500.0f, hit.point, 10.0f,10.0f);
}
}
//爆発が終わったら爆発エフェクトオブジェクトを消す,第二引数を与えて生成されて5秒後(爆発の演出が終わった後)に削除する。
Destroy (explosion, 5.0f);
}
}
}
}
8.カメラを選択し、インスペクターから最初にインポートしたExplosionプレファブを登録する。

実行
9.実行してみよう。最初の動画のように爆発して周辺の物体がふっ飛べば成功だ。


コメント