質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

246閲覧

あるオブジェクトに対してだけOnTrrigerEnter2Dで処理を行いたい

sgyeta

総合スコア23

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/06/28 07:14

前提・実現したいこと

イメージ説明
前提として、赤のオブジェクトAと青のオブジェクトBと白の床があります。
3つのオブジェクトは全てspriteで、BoxCollider2Dコンポネーントが付いており
赤と青のオブジェクトだけ、RigidBody2Dが付いている状態です。
実行すると、青いオブジェクトが以下のスクリプトで、赤方向に移動し
青いオブジェクトが赤オブジェクトにに接触した瞬間に、何か処理を行いたいと考えております。

現在はこの実装を、青いオブジェクトのOnCollisionEnter2D内で行っているのですが
これをOnTrrigerEnter2Dに変更したいです。その為、青いオブジェクトの
Rigidbody2DのisTrrigerをONにしたところ、青いオブジェクトが床をすり抜けてしまいました(当たり前ですが・・・)
こちらの質問と類似かと思いますが、青いオブジェクトから赤いオブジェクトに対してだけ
OnTrrigerEnter2Dで当たり判定を行うことは可能でしょうか?解決に至らなかった為、ご教示頂けると幸いです。

発生している問題・エラーメッセージ

isTrrigerをONにすると床をすり抜けてしまう

該当のソースコード

C#

1public class BoxController : MonoBehaviour 2{ 3 void Update() 4 { 5 transform.position -= new Vector3(0.1f, 0.0f, 0.0f); 6 } 7 8 private void OnCollisionEnter2D(Collision2D collision) 9 { 10 if(collision.gameObject.tag == "A") 11 { 12 Debug.Log("当たった"); 13 } 14 } 15}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

OnCollisionEnter2Dではダメなんですかね。。
青から赤にだけ、というのは難しいですが、青が壁(と認識されるもの)と接触した際にその動きをキャンセルする、という方法が一つの方法としてあると思います。
参考程度にコードも書いておきますが、テストしたわけではないので多少おかしい部分もあるかもしれません。

public class BoxController : MonoBehaviour { // 速度が変更した時にも戻せるように Vector3 move = new Vector3(0.1f, 0.0f, 0.0f); void Update() // もしかしたらFixedUpdateじゃないとずれるかもしれない { transform.position -= move; } private void OnTriggerEnter2D(Collider2D collision) { if(collision.gameObject.tag == "Wall") // 壁にWallタグを付ける { transform.position += move; // 逆に動かすことで計算量的にキャンセルさせる } else if(collision.gameObject.tag == "A") { Debug.Log("当たった"); } } }

投稿2020/06/28 07:57

yuuyu

総合スコア1139

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問