【Unity】2Dシューティングを作る ~弾と敵の当たり判定~

Unityで敵と弾の当たり判定を実装 unity

プレイするゲームがないなら、自分で作ればいいじゃない!

ということで初心者が Unity を使って「ゲームを作る」ゲームをやっていきます!

今回は「弾と敵の当たりを判定して消すまで」の記事です

 

スポンサーリンク

コンポーネントの追加

これまでに作成したプレイヤーに追加します

追加するコンポーネントは2つ!

 

Rigidbody 2D

リジッドボディは判定するオブジェクトのどちらかにアタッチされている必要がある

Unityでリジッドボディを追加
コンポーネントを追加⇒2D物理から

 

リジッドボディの設定

2Dシューティングなので「ボディタイプをキネマティック」に変更する

これで物理演算の影響を受けなくなります

Unityでボディタイプを変更

 

Collider 2D

画像に合うコライダーを選択する

詳しくはこちら

Unityでコライダーを追加
コンポーネントを追加⇒2D物理から

 

コライダーの設定

「トリガーにする」にチェックを入れます

Unityでコライダーのトリガー編集

 

当たりの範囲を変更する

Unityでコライダーを編集
下記画像の緑枠状態になる
Unityで当たり判定を修正
初期設定
Unityで当たり判定を変更
良い感じに設定する

 

弾にも追加する

同じようにコンポーネントを追加すればいいのですが

弾はプレハブなので「コライダーの編集」がやりづらい…

 

そんなときは弾をシーンビューに表示させて、それで編集します

しかしその編集はアセットにあるプレハブには適用されていません

 

アセットのプレハブに適用させる

プレハブオブジェクトの編集をプレハブに適用するには

「オーバーライド」をしなければなりません

Unityでプレハブの編集を適用

 

これでアセットにあるプレハブにもコライダー設定が適用されました!

 

タグの追加と設定

どのオブジェクトかを判定するシステムとして

「タグ」というものを使用します

 

敵を作成

画像を用意します

 

敵にも同じようにコンポーネントを追加して、コライダーを編集します

敵用のC#スクリプトも追加しましょう

 

スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyController : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        // 当たったのがプレイヤーの弾
        if (other.gameObject.CompareTag("player_bullet"))
        {
            // 自身を消す
            Destroy(gameObject);

            // 弾も消す
            Destroy(other.gameObject);
        }
    }
}

 

void OnTriggerEnter2D(Collider2D other)

コライダーが当たったときに処理される関数

other は当たったコライダーの情報が入っている

 

other.gameObject.CompareTag(“player_bullet”)

player_bullet の部分は「タグ名」を指定する

オブジェクトが指定したタグの場合は true になる

 

サンプル動画

 

さいごに

弾と敵の判定だけ作成しましたが、同じようにタグを追加してスクリプトを編集すると

プレイヤーと敵の判定も作成できました!

 

かれいど

ゲームをしたり、作ったり
色々な事に挑戦していきたい!

サッカー観戦も趣味で
主にJ1リーグを観ています。

かれいどをフォローする
unity
スポンサーリンク
シェアする

コメント