LoginSignup
4
5

More than 5 years have passed since last update.

UnityでSpriteをフリップ(左右反転)する

Posted at

http://qiita.com/fuqunaga/items/45f6db289549cde35af7
の続編

transform.localScale.x を -1 にしてスプライトをフリップしてた のがまずかった
http://forum.unity3d.com/threads/217184-OnCollisionExit2D-Issue

transform.localRotation を180度、Y軸回転して対処したった

これはよろしくなかった
Collider2Dがrotationのzしか反映されないので左右非対称な形状だと、
フリップに追従できない

正解はやっぱり
transform.localScale.x を -1 にする

この背景を理解してると
OnCollisionStay2D()、OnCollisionExit2D()が呼ばれない
のもなんとなく納得ができる

つまり、Collider2Dの形状が変わる(左右反転)からCollision2Dも新たに生成されてる、と
これはtransform.localScaleに値を代入する処理がトリガーになってるっぽくって、
同じ値を代入しなおしても上記2つの関数が発生しない模様
(値の変更の有無にかかわらず毎フレーム代入してるコードだったのでOnCollisionEnter2D()以外が
常に発生しなかった)

これ理解してないときに値が違うときにだけ代入するコードだったら、だいぶわかりにくいバグになってたな・・・

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5