コガネブログ

平日更新を目標に Unity や C#、Visual Studio などのゲーム開発アレコレを書いていきます

【Unity 入門】全方位シューティングを作る 第9回 弾と敵の当たり判定

目次

前回のチュートリアル

はじめに

前回は、敵を作成しました
今回は、弾と敵の当たり判定を作成していきます

弾に当たり判定の機能を追加

弾が敵に当たったら、敵の HP を減らし、
敵の HP が 0 になったら、敵が消えるようにしていきます
そのために、まずは弾に当たり判定の機能を追加します

f:id:baba_s:20180331135454p:plain

「Shot」プレハブを選択し、「Add Component」ボタンを押して
入力欄に「BoxCollider2D」と入力し、表示された「Box Collider 2D」を選択します

f:id:baba_s:20180331140151p:plain

そして、追加した「Box Collider 2D」の「Is Trigger」をチェックします

これで、弾に当たり判定の機能を追加できました

敵に当たり判定の機能を追加

続いて、敵に当たり判定の機能を追加します

f:id:baba_s:20180331135603p:plain

「Enemy1」プレハブを選択し、「Add Component」ボタンを押して
入力欄に「BoxCollider2D」と入力し、表示された「Box Collider 2D」を選択します

f:id:baba_s:20180331140250p:plain

そして、追加した「Box Collider 2D」の「Is Trigger」をチェックします

f:id:baba_s:20180331140004p:plain

さらに、「Enemy1」プレハブを選択した状態で「Add Component」ボタンを押して、
入力欄に「Rigidbody2D」と入力し、表示された「Rigidbody 2D」を選択します

f:id:baba_s:20180331140054p:plain

そして、追加した「Rigidbody 2D」の「Gravity Scale」に「0」と入力します

これで、敵に当たり判定の機能を追加できました

弾と敵が衝突した時のコードの実装

弾と敵に当たり判定の機能を追加できたので、
弾と敵が当たったら、敵の HP を減らし、
敵の HP が 0 になったら、敵が消えるコードを作成していきます

「Enemy」スクリプトをコードエディタで開き、
Enemy クラスの末尾に下記のコードを記述します

// 他のオブジェクトと衝突した時に呼び出される関数
private void OnTriggerEnter2D( Collider2D collision )
{
    // 弾と衝突した場合
    if ( collision.name.Contains( "Shot" ) )
    {
        // 弾を削除する
        Destroy( collision.gameObject );

        // 敵の HP を減らす
        m_hp--;

        // 敵の HP がまだ残っている場合はここで処理を終える
        if ( 0 < m_hp ) return;

        // 敵を削除する
        Destroy( gameObject );
    }
}

f:id:baba_s:20180331140339g:plain

これで Unity を再生すると、弾が敵にあたった時に
弾が消え、敵にダメージを与えられるようになったことが確認できます

次回は、プレイヤーと弾の当たり判定を作成していきます

次のチュートリアル

チュートリアル一覧