[Unity]NGUIで当たり判定を付ける

NGUI でスプライトに当たり判定を付ける場合、普通に

  • スプライトに Collider を付ける
  • 必要に応じて RigidBody も付ける
  • OnCollisiionEnter などを書く

とした上で、

  • RigidBody の FreezePosision の z と FreezeRotation の x, y にチェック(負荷が減る、と思う)
  • 表示順の制御に z 座標を使っている場合、衝突し得るように Collider の Size.z などを調整
    • クリック等のイベントを受け取るスプライトの Collider は最も手前になるようにする
    • または、イベントを受け取るスプライトを含む UIPanel のレイヤを分け(スプライト個別にはレイヤを変更できないため UIPanel 単位になる)、UICamera の Event Receiver Mask をそのレイヤだけに、Camera の Culling Mask はそのレイヤも表示するようにする
あたりに気を付けるとよさそうです。

複数のスプライトが他のオブジェクトの子である場合などは、Collider は各スプライトに付け、イベントは親オブジェクトで処理(スプライト側で一旦受けて親に SendMessage)するのもよいかもしれません。

3D 用の衝突判定を 2D で使うのは富豪的な気もしますが…

コメント