【Unity】Is Triggerのチェックは両方につけるべきなの?いいえ片方でも結構です(Triggerモード)

  • UnityでTriggerモード(すり抜ける)タイプの当たり判定を作りたい
  • 衝突するオブジェクト両方に【Is Trigger】ってチェック(true)すべきなの?

その悩みを解決します。

結論として片方だけでも良いです。

両方の【Is Trigger】にチェックを外すのはダメです。Collision系のメソッド【OnCollisionEnter】とかしか使えなくなります。

2Dでも3Dでも同じです。

目次

【Is Trigger】のチェックは片方だけでも良い

【Is Trigger】のチェックは片方だけでも良い

●Is Triggerにチェックをつける方法

【オブジェクト選択】→【Inspector】→【〇〇 Collider】→【Is Trigger】→【チェック】

最初に述べた通りにTrigger系のメソッドを実行させたい場合は、衝突するオブジェクトの片方の【Is Trigger】にチェックがついていればOKです。

正確な言い方だと、最低限一方のオブジェクトの【Is Trigger】にチェックがついていればOKです。

どちらもついていない状態だとTrigger系のメソッドを使うことができません。

Triggerモードを使う条件

  • 判定したいオブジェクトすべてにColliderコンポーネントがアタッチされている
  • 判定したいオブジェクトの最低限一方にRigidbody(またはRigidbody2D)コンポーネントがアタッチされている
  • 判定したいオブジェクトの最低限一方のColliderの【Is Trigger】がtrue(チェックあり)である

Trigger系のメソッドを使いたい場合はこの条件を満たしてないといけません( ・∇・)

ここから下は実験です。興味がある方はご覧ください。

実験

【Is Trigger】のチェックは片方だけでも良いのか実験

爆弾
アタッチされてるもの 【Circle Collider2D】【Rigidbody 2D】

プレイヤー(緑のやつ)
アタッチされてるもの 【Box Collider 2D】【PlayerControllerスクリプト(当然名前はなんでも良き)】

PlayerController.cs

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

public class PlayerController : MonoBehaviour {

    void OnTriggerEnter2D(Collider2D collision)
    {
        Debug.Log("miya");
    }
}

スクリプトにはオブジェクトと接触した瞬間に、「miya」とコンソールに表示されるようにしてます。

この状態で実験を行います。

【Is Trigger】のチェックが両方ついていないvar

【Is Trigger】のチェックが両方ついていないvar

はいふざけてます。なにも起こりません。

【Is Trigger】のチェックがスクリプトがアタッチされている方のみにチェックされているvar

【Is Trigger】のチェックがスクリプトがアタッチされている方のみにチェックされているvar

プレイヤーだけの【Is Trigger】にチェックがついている状態です。メソッドが実行されています。

【Is Trigger】のチェックがスクリプトがアタッチされていない方のみにチェックされているvar

【Is Trigger】のチェックがスクリプトがアタッチされていない方のみにチェックされているvar

爆弾のだけの【Is Trigger】にチェックがついている状態です。メソッドが実行されています。

【Is Trigger】のチェックが両方ついていないvar

【Is Trigger】のチェックが両方ついていないvar

爆弾とプレイヤーの【Is Trigger】にチェックがついている状態です。メソッドが実行されています。

Trigger系のメソッド

どうぞ。

2Dで使えるメソッド

OnTriggerEnter2D トリガーに接触したときに呼び出される
OnTriggerStay2D トリガーに接触している間呼び出される
OnTriggerExit2D トリガーに接触して、離れた瞬間に呼び出される

これらです。

まあトリガーっていってますけど、オブジェクト同士が接触したときって発想で良いです。厳密には違いますが、わかりやすい方が良いもんね。

3Dで使えるメソッド

OnTriggerEnter トリガーに接触したときに呼び出される
OnTriggerStay トリガーに接触している間、呼び出される
OnTriggerExit トリガーに接触して、離れた瞬間に呼び出される

これらです。

まとめ

  • Trigger系のメソッドを使うときは衝突するオブジェクトの最低限一方の【Is Trigger】がチェックあり(true)であれば良い

こんな記事もあります。

あわせて読みたい
【Unity】当たり判定【Trigger(トリガー)】モードの設定方法、メソッドの使い方 UnityでのTrigger(トリガー)を使った当たり判定の使い方を知りたい その悩みを解決します。 この記事では Triggerモードの説明 Triggerモードを使う条件 Trigger系の...

さぎのみや(@saginomiya8)でした。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる