コガネブログ

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

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

目次

前回のチュートリアル

はじめに

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

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

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

「Shot」プレハブを選択し、「Add Component」ボタンを押して

入力欄に「BoxCollider2D」と入力し、表示された「Box Collider 2D」を選択します

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

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

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

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

「Enemy1」プレハブを選択し、「Add Component」ボタンを押して

入力欄に「BoxCollider2D」と入力し、表示された「Box Collider 2D」を選択します

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

さらに、「Enemy1」プレハブを選択した状態で「Add Component」ボタンを押して、

入力欄に「Rigidbody2D」と入力し、表示された「Rigidbody 2D」を選択します

そして、追加した「Rigidbody 2D」の「Body Type」を「Kinematic」に変更します

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

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

弾と敵に当たり判定の機能を追加できたので、
弾と敵が当たったら、敵の 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 );
    }
}

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

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

次のチュートリアル

チュートリアル一覧