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’
回答1件
あなたの回答
tips
プレビュー