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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

3460閲覧

Unity2D 衝突判定の無効化

jabu

総合スコア38

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/06/11 05:43

編集2018/06/11 07:09

Unity2D、C#でゲーム開発をしております。
オブジェクトA(enemy)にはBoxCollider2Dが二つあり、オブジェクトB(player)にはBoxCollider2Dが一つあります。
一時的にオブジェクトB(player)のオブジェクトA(enemy)への衝突判定を無効化したいと思っています。

以下、オブジェクトAにアタッチしたenemy classコードです。

public class enemy : MonoBehaviour GameObject playerBoxCollider; void Start() { //プレイヤーのBoxCollider2Dを取得 playerBoxCollider = GameObject.Find("player"); //衝突判定無効化 Physics2D.IgnoreCollision(this.gameObject.GetComponent<BoxCollider2D> (),playerBoxCollider.GetComponent<BoxCollider2D>()); }

この時にオブジェクトA(enemy)にアタッチしたBoxCollider2Dの二つのうち、一つは衝突判定が無効になるのですが、もう一つのBoxCollider2Dが無効になりません。
Physics2D.IgnoreCollisionの一つめの引数のthis.gameObject.GetComponent<BoxCollider2D> ()を

Collider2D[] enemyBoxCollider = GetComponents<Collider2D>();

として、Physics2D.IgnoreCollisionの第一引数をenemyBoxCollider[0]などとしても(無効な引数です。。)のようなエラーでうまくいきません。

Physics2D.IgnoreCollision()の第一引数にenemyの二つのBoxCollider2Dを指定する方法をご教授願います。

以下エラーになります。
The best overloaded method match for ‘UnityEngine.Physics2D.IgnoreCollision(UnityEngin.collider,UnityEngin.collider)’ has some Invalid arguments

Argument ‘#1’ cannot convert ‘UnityEngine.BoxCollider2D[]’ expression to type ‘UnityEngine.collider’

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

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

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

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

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

fiveHundred

2018/06/11 06:57

エラーメッセージは「(無効な引数です。。)」と要約せずに、コピペで記載してください(複数行ある場合は全て記載してください)。
jabu

2018/06/11 07:07

fiveHundredさま。ありがとうございます。質問の本文を修正しました。
fiveHundred

2018/06/11 08:43

ソースコードの変更内容があなたの言っている通りになってないような気がします。変更後のソースコードを記載していただけますでしょうか?
jabu

2018/06/11 12:35

fiveHundredさま。ご指摘ありがとうございました。もう一度整理してコードを見直したところ問題なく動きました。エラーのコードではCollider enemyBoxCollider = GetComponents<Collider2D>();となっておりました。自己解決しましたので以下にコードを載せておきます。いろいろありがとうございました。
guest

回答1

0

自己解決

Collider2D[] enemyBoxCollider = GetComponents<Collider2D>(); Physics2D.IgnoreCollision(enemyBoxCollider[0],playerBoxCollider.GetComponent<BoxCollider2D>()); Physics2D.IgnoreCollision(enemyBoxCollider[1],playerBoxCollider.GetComponent<BoxCollider2D>());

で問題なく動きました。

投稿2018/06/11 12:36

jabu

総合スコア38

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問