Mechanimでアニメーションしながら、SpriteRenderer.enabledをスクリプトで触る際の注意
敵がスプライトアニメーションしていて、やられると点滅する。ということを実装しようとした。
スクリプトからSpriteRendererのenabledをいじることで実現できるはずだったのだが、何故かenabledがfalseにならない。
一時停止して直接Inspectorからenabled=falseにしても、次のフレームではtrueにされてしまう。
同じような点滅を敵以外では実装できているのに何故?
試しにAnimatorを外してみるとうまくいく。
調べてみると敵の持つアニメーションの中に1つだけSpriteRenderer.enabledを触っているものがあった。
試しにそのアニメーションでSpriteRenderer.enabledを使うのをやめてみると、思い通りの結果になった。
これは推測だが、SpriteRenderer.enabledを触るアニメーションが一つでもあると、
その他のアニメーションは暗黙的にSpriteRenderer.enabled=trueとなるキーフレームを持つのと同じ扱いになり、
それがためにenabledをfalseにしても次フレームでtrueに書き換えられていたのではないだろうか。
う〜ん、今回はアニメーション側でSpriteRenderer.enabledを使わないことで対応できたけど、どうしても外せない場合はどうするんだろう?