クマに弾が当たったら爆発エフェクトを起動させる
前回の記事でプレイヤーの3Dモデルをプロ生ちゃんに変更しましたが,
Detonator Explosion Frameworkをダウンロード&セットアップする
メニューの
アセットストアのウィンドウが表示されるので,
Detonator Explosion Frameworkが検索結果に表示されるので,
Detonator Explosion Frameworkを使うにはUnity4.
「Needs Unity upgrade to version 4.
と表示されます。その場合,
DownloadボタンをクリックするとImporting packageダイアログが表示されるので
ProjectにDetonator
Explosion Frameworkが追加されました
爆発エフェクトを起動するコードを追加する
続いて,
MonoDevelopが起動してBear.
public class Bear : MonoBehaviour {
public GameObject detonator;
続いてOnCollisionEnterを以下のように変更します。
bool hitFlag = false;
void OnCollisionEnter(Collision collision) {
if (avatar != null) {
if (hitFlag == false && collision.collider.tag == "Bullet") {
hitFlag = true;
GameObject exp = (GameObject)Instantiate(detonator.gameObject, transform.position, Quaternion.identity);
var currentState = avatar.GetCurrentAnimatorStateInfo(0);
var nextState = avatar.GetNextAnimatorStateInfo(0);
if (!currentState.IsName("Base Layer.Dying") && !nextState.IsName("Base Layer.Dying")) {
avatar.SetBool("Dying", true);
Destroy(this.gameObject, 3.0f);
}
}
}
}
以下の部分が爆発エフェクト関連のコードです。
if (hitFlag == false && collision.collider.tag == "Bullet") {
hitFlag = true;
GameObject exp = (GameObject)Instantiate(detonator.gameObject, transform.position, Quaternion.identity);
if文のcollision.
で弾と当たった時を判定しています。hitFlagは接触判定を一度だけに限定するためにフラグ制御をしています。GameObject exp = (GameObject)Instantiate(detonator.
で爆発エフェクトをインスタンス化しています。これにより爆発エフェクトが作動します。