2014年4月11日金曜日

[Unity]特定のオブジェクトだけ衝突判定を無視する方法


標題の方法ですが、四方を壁に囲まれた空間で特定のオブジェクトは一方向の壁には当たらずそのまますり抜けていきたいときにとった方法です。他のオブジェクトは跳ね返ります。

すり抜ける壁のレイヤーをBottomWallと名付けます。
すり抜けていくオブジェクトをEnemyと名付けます。
そして、ソースコードに

        int layer1 = LayerMask.NameToLayer("BottomWall");
        int layer2 = LayerMask.NameToLayer("Enemy"); 
        Physics2D.IgnoreLayerCollision(layer1, layer2);

を追加すれば、BottomWallとEnemyをレイヤーに設定したオブジェクトは衝突判定を無視します。
上記はPhysics2Dで行っているが、Physicsでも同様にできます。

Physicsには、IgnoreCollisionでCollider同士の衝突判定もあるのだが、2Dにはそれがないのが謎です。

0 件のコメント:

コメントを投稿