【Unity初心者 ゲーム開発メモ】エフェクト発生、削除のメモ
こんにちは、妄想仮面です。
皆さん、元気にしておりましたでしょうか。
かなり久々の投稿すぎて、Wordpressの使い方ほぼ忘れてしまい投稿に手間取ってしまいました。。。
(しかも、この短期間の間にAmazonAPIがバージョンアップしていて、更新必要みたいだったし…)
とまあ、前置きはさておき、最近現場が変わりまして、本格的にUnityの勉強が必要な状況になってきました。
※その経緯とかはそのうちブログで記載したいと思います。
で、せっかくUnityの勉強をしているので、ただ勉強するだけは勿体ないなと思ったので私のメモとして、詰まった部分などをブログでアウトプットしていきたいと思い更新を再開することにしました。
では早速、メモを記載していきたいと思います。
※下記ではUnityちゃんを使用するため、下記からインストールしてください。

Unity‐Chan!Model
![]() ![]() |
エフェクトの発生、削除を実現!!
現在、学習がてら3Dのゲームを制作しているのですが、その中で、キャラクターが死んだときに爆発エフェクトで消し去りたいなと思いました。
以下のような爆発を実現します
Unityちゃん…∑(゚д゚;)
さらば…
こんな感じでUnityちゃんを爆発させたいのですが、実装時につまずいた点があったため、こちらにざっくりメモしていきます!
UnityAssetStoreからアセットをダウンロード
正直ここはなんでもいいです。
自分が使用したい爆裂魔法を選んで、Unityちゃんを消し飛ばしてあげてください。※物騒
ちなみにぼくは以下のAssetを使用しました。
スクリプト作成
C#で爆発用のスクリプトを書いていきます。
※後々Prefab化して敵など他のオブジェクトにも使用するため、Playerスクリプト内などに一緒に記載するとかなりめんどくさいことになるため、分けて記載してください。
1.スクリプト「Player」に以下のコードを記載
下記スクリプトはPlayerオブジェクトへアタッチ済みとする
以下では、「unitychan」という名前のオブジェクトへアタッチしている
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using UnityEngine; using UnityEngine.UI; public class Player : MonoBehaviour { //unitychanを入れる箱 public GameObject unitychan; //破壊されたエフェクトを入れる public GameObject breakEffect; void Start() { //Playerオブジェクトを読み込む unitychan = GameObject.Find("unitychan"); } //Collisionを使うと衝突判定になる ※Triggerはすり抜け判定 isTriggerが必要になる。 //isTriggerがtrueになるとフィールドのオブジェクトもすり抜けるため、今回衝突判定で対応 private void OnCollisionEnter(Collision col) { if (col.gameObject.tag == "Enemy") { //Destroy時のエフェクトを実行 //Instantiate(breakEffect)でエフェクトを生成してeffect変数へ格納する GameObject effect = Instantiate(breakEffect) as GameObject; //エフェクトが発生する場所を決定する(unitychanオブジェクトの場所) effect.transform.position = unitychan.transform.position; //Playerオブジェクトを削除する Destroy(unitychan, 0.0f); } } |
2.「Explosion」スクリプトを記載
Playerに記載したスクリプトのみでは、エフェクトが爆発し続けてUnityちゃんも成仏できないので、下記で、爆裂魔法を消す処理を記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; public class Explosion : MonoBehaviour { // Start is called before the first frame update void Start() { //エフェクトが生成されて1秒後にオブジェクトを削除する //※生成処理はPlayer.csにて行っている Invoke("BreakEffect", 1.0f); } void BreakEffect() { //gameObjectを削除 //今回はPrefabをProjectから生成しているため、名前指定は必要ない Destroy(gameObject); } } |
上記でスクリプトの準備はOKです
Prefabの設定
Prefabの設定をしていきます。
1、爆裂魔法オブジェクトをHierarchyに配置
2、配置した爆裂魔法オブジェクトに「Explosion.cs」スクリプトをアタッチ
※Projectからでは爆裂魔法オブジェクトにスクリプトをアタッチできないため、一度Hierarchyに配置する必要がある
3、爆裂魔法オブジェクトをPrefab化
配置した爆裂魔法オブジェクトをProjectへD&Dするだけ
4、Hierarchyに配置した爆裂魔法オブジェクトは削除していい
5、PlayerオブジェクトのスクリプトにProjectからPrefab化した爆裂魔法オブジェクトをアタッチ
※アタッチしなくても生成されたため正直大丈夫だったかも
下記、Break Effectの中
7.PlayerオブジェクトとEnemyタグをつけたオブジェクトにColliderを追加する
追加するColliderは何でもいいです。また、設定はしなくていいです。当たり判定を持たせられればいいので。
ちなみに、ぼくはPlayerには「CapsuleCollider」敵には「BoxCollider」を使用してます。
※オブジェクトを配置するTerrainやオブジェクトを動かす処理などは別途必要となります。そのうちメモ書くと思います。
上記完了後、作成したPlayerオブジェクトとEnemyタグを設定したオブジェクト(なんでもいい)をぶつけると爆発してUnityちゃんが散るはずです。
さらばUnityちゃん!
本日は以上です。
ディスカッション
コメント一覧
まだ、コメントがありません