環境
- Unity 2018.3.0f2
やりたいこと
- 動的に
SpriteRenderer
のsprite
を差し替えている - 差し替えた
sprite
の形に合わせてCollider2D
を作りたい - エディタでは
AddComponent<PolygonCollider2D>()
するとざっくりとした形でコライダ生成してくれる
iOSのランタイムだとエラー発生
Sprite outline generation failed - could not read texture pixel data. Did you forget to make the texture readable?
AddComponent<PolygonCollider2D>()
したタイミングで上記エラー発生(XCodeでログ確認)- そうなると赤枠範囲でのコライダが作られちゃうようで、青枠タップしても低木を選択できなかった。
対応
- エラーメッセージに書かれてる通り、Spriteの
Read/Write Enabled
を有効にする。 - 今回はSpritePackerを使っていたので、Sprite個別ではなくPacker側を変えるだけでよかった。
解決!のように見えてなんかおかしい
- 赤丸部分は反応するけど木の幹あたりが触れない
Colliderを可視化
こちらを参考に見えるようにしてみた。kanさんいつもありがとうございます。
- エディタ
- iOS
やっぱりおかしい。低木にいたってはPolygonCollider2Dのデフォルト形状だ...
どうしよう
事前にコライダ形状もマスタデータとして用意しておくしかないのかな・・・
そもそもサボって動的に作ろうとしてるのが不味いかもしれない。 端末ごとで形状違うとかになったら目も当てられない。