どうも、チャーさんです。
あなたはUnityで敵を消滅させたいですか?
例えばプレイヤーが敵を攻撃したら消滅させたり、
そんな風にしたいならばこの記事を読んでください。
この記事を読めばUnityで敵を消滅させる方法がわかり、
あなたのUnityプロジェクトでも敵を消滅させれるでしょう。
しかしこの記事を読まないとその方法がわからず、
苦労するかもしれません。なのでUnityで敵を消滅させたいなら
このままスクロールして記事を読んでください。
動画はこちら
目次
Unityで敵を消滅させる方法はコレ
まず結論ですが、Unityで敵を消滅させたいなら、
Unityで用意されてる、
Destroy()
というメソッドを使いましょう。
このメソッドはオブジェクトを消滅させることが
できるメソッドです。
消滅させたいオブジェクトはメソッドの引数のなかに
書けばOKです。
例えば、
void Start()
{
Destroy(gameObject);
}
という風にコードを書けば、再生ボタンを押した
瞬間に、このコードが書いてあるスクリプトを
貼り付けたオブジェクトが消滅します。
Unityで敵と衝突した際に敵を消滅させる方法
とはいえ、これじゃ全然ゲームとして成立しません。
ゲーム開始ボタンを押した瞬間、敵が消滅するからです。
こんなんじゃ困ります。
ゲームじゃプレイヤーが敵を攻撃したら消滅したりしてくれないと
困るからです。
なのでDestroyと合わせて使うのは、
衝突判定を行ってくれるUnityが用意してるメソッド、
OnCollisionEnter()
を使いましょう。
するとプレイヤーが攻撃(プレイヤーの武器が敵と衝突)
したら敵を消滅させるということができます。
衝突判定用の用意されてるメソッドは以下です。
void OnCollisionEnter(Collision col){
}
*注意点*
また衝突判定を使うには、
オブジェクトのコンポーネントに
Rigidbodyとcolliderが設定されてる必要があります。
colliderは3dオブジェクトを用意すると
基本初めからUnity側でつけてくれてます。
なのであなたがつけるのはRigidbodyだけです。
でコードに話戻しますが、
この衝突判定のメソッドの{}の中にDestroyを書けば、
例えば衝突したら敵を消滅させるみたいなことができます。
具体的には以下のようなコードです。
void OnCollisionEnter(Collision col){
Destroy(gameObject);
}
敵がプレイヤーと衝突すると消滅させる具体的なコード部分
ただしかし、これだと、このスクリプトを貼った
敵がどんなものに衝突したとしても、
敵が消滅します。
床に当たっても敵が消滅してしまいます。
なので、敵が衝突したものがプレイヤーだったら
のようにcollisionのメソッド内でif文を使い、
条件指定します。
どうやって書くかというとif文と
OnCollisionEnter(Collision col)のこの引数のcolを
使えばできます。
この引数のcolは便利で、衝突したオブジェクトの情報が
勝手に格納されます。
なのでコード的には以下のように書けばいいです。
void OnCollisionEnter(Collision col){
if(col.gameObject.name == “Player”){
Destroy(gameObject);
}
}
(補足 col.gameObject.name とは、衝突した.ゲームオブジェクトの.名前 という意味)
このように書くと、引数の変数colに敵と衝突したオブジェクトの情報が、
格納され、その衝突したオブジェクトがPlayerと名付けた
オブジェクトだった場合、
敵オブジェクトが消滅します。
Unityで敵を攻撃した時に消滅させるならこの方法
またこのif文のところを
if(col.gameObject.name == “PlayerWeapon”)
とかにしてプレイヤーが持ってる武器(プレイヤーの子オブジェクト)に、
PlayerWeaponと名前をつければ、
プレイヤーが武器で敵を攻撃して
敵にそれが当たれば、
敵オブジェクトを消滅させることができます。
とはいえこれだと攻撃せずとも敵が武器と接触するだけで消滅
するので、厳密には武器のcolliderのオンオフをするコードを
書かないといけないです。
詳しくは割愛しますが。
基本的なやり方の概念しては、
基本的にプレイヤーの武器になるオブジェクトは、
まずcolliderをオフにしておきます。
そして、コードの中で、例えば攻撃ボタンを押した時に
プレイヤーオブジェクトのアニメーションが動いて
武器で敵を攻撃するとかなら、
攻撃ボタンを押した瞬間に、武器オブジェクトの
colliderがオンになるように設定します。
そうすると攻撃しない時は、敵と武器オブジェクトが
衝突しても、衝突判定がないので、
敵は消滅しませんが、
攻撃ボタンを押した時は、武器オブジェクトのcolliderが
オンになってるので、武器と敵が接触すると、
衝突判定があったことになり、
Destroy()が作動して、敵が消滅します。
このようにすれば、敵を武器で攻撃した時に
敵を消滅させることができます。
と、このようにDestroyとCollisionを組み合わせて
条件分岐等すれば、敵を攻撃したら消滅みたいに
色々ゲーム的な設定ができますので、
ぜひやってみて欲しいです。楽しいですよ。
まとめ
ではまとめに入ります。
Unityで敵を消滅させるには、
Unityで準備されている、Destroy()
のメソッドを使いましょう。
またそのままだと一瞬で消えて使い物にならないので、
ゲーム性を持たせるために、Collisionなどの衝突系の
メソッドと組み合わせて、
あなたのゲーム的な条件に合わせて、敵を消滅させる
ようにしましょう。
そうすれば、楽しい感じでUnityで敵を消滅させる
ことができますよ!
それではこの記事は以上です。
読んでいただきありがとうございました。
チャーさん