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

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

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

Q&A

解決済

1回答

1158閲覧

OnCollisionEnter2Dの判定が入らない

Grass_64

総合スコア4

0グッド

0クリップ

投稿2021/03/09 13:19

二つの2D Object(Sprite)に衝突判定を付けたいのですが、素通りしてしまって困っています。
2D Object Sprite 『One』にテクスチャ(420600)とBox Collider 2Dとメインのスクリプト
もう一つのObjectが
2D Object Sprite 『Two』にテクスチャ(420
600)とBox Collider 2D
それぞれのBox Collider 2DのsizeはX:4.2,Y:6とあるのでテクスチャ画像と同じサイズの
当たり判定が入っていると考えています。

メインのスクリプトで「One」の方に右に移動させ、
「Two」に衝突時に停止するように考えているのですが、完全に素通りします。
わざとOnCollisionStayも加えてみたのですが、こちらも無視されているので、
メソッド自体に入っていないようです。

ですので、極めて初期での見落としがあると思うのですが、ご指導いただけたらと存じます。
イメージ説明
イメージ説明
One(スクショの時はPlayerOne)とTwoのInspector欄です

Unity

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Battlemain : MonoBehaviour 6{ 7 //宣言 8 public float speed = 5.0f; 9 public bool goalCheck; 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 goalCheck = false; 15 } 16 17 void OnCollisionEnter2D(Collision2D col) 18 { 19 20 if (col.gameObject.name == "Two") 21 { 22 Debug.Log("Hit"); 23 goalCheck = true; 24 return; 25 } 26 } 27 28 void OnCollisionStay2D(Collision2D col) 29 { 30 31 if (col.gameObject.name == "Two") 32 { 33 Debug.Log("Hit"); 34 //goalCheck = true; 35 return; 36 } 37 } 38 39 // Update is called once per frame 40 void Update() 41 { 42 if (goalCheck) 43 { 44 return; 45 } 46 transform.position = new Vector3(transform.position.x + speed * Time.deltaTime, transform.position.y, 0.0f); 47 } 48} 49

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

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

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

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

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

guest

回答1

0

ベストアンサー

https://qiita.com/sensuikan1973/items/055384e1145bbbe73e40
RigidBodyをつけるか
Triggerでの判定に変更しましょう

投稿2021/03/09 22:22

U_U_Jenkins

総合スコア110

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

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

Grass_64

2021/03/10 13:45

ありがとうございます!早速Rigidbody2Dを取り付けてみました! そしたら通過せずに止まってくれました(両方にRigidbody2Dつけたらそのまま押し出しちゃいました)が、 void OnCollisionEnter2D(Collision2D col) void OnCollisionStay2D(Collision2D col) のDebug.logが出ないので、重なった扱いにならなかったってことなのでしょう。 いただいたLinkを確認してTriggerを見直してみます
Grass_64

2021/03/10 15:34

教えていただいたサイトのスクリプトに差し替えてやってみたんですが、 判定されないなぁと思ってたら if(collision.gameObject.tag == OPPONENT) ってあって、あらかじめタグをつけておけってことだったんですかね。 タグの中身が入ってないよっていう警告が出てたので、 if (collision.gameObject.name == OPPONENT) に書き換えてOPPONENTに対象のオブジェクト名を設定したらDebug.logが出てきました。 今宵はギブアップですが、なんとか進められそうです。
Grass_64

2021/04/14 03:26

色々組み合わせ見たんですが、やっぱりTriggerで落ち着きました。 ちょっと遅くなってしまいました。ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問