[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 で使うのは富豪的な気もしますが…
コメント
コメントを投稿