Hi all!
I’m making a 2D ball game in Unity v6.0, now in the process of adding some 2D lighting. The player ball is a circle sprite. To make it look like a sphere, the sprite has a normal map added as a secondary texture. The light effect works fine with a 2D spot light. (Using URP: sprite-lit-default as the shader.) However, when the ball is rotating, the light intensity changes with the rotation.
I was assuming this is because the normal map’s rotation follows the sprite’s rotation.
However: after some thought and further searching online, I’m starting to think it’s not caused by the normal map rotating, but by rounding errors in the automatic rotation of the normal map.. (because the png map uses only 1 byte per channel?). This article here seems related: 2018 Unity question .
(Please confirm whether my suspicions are correct.)
The article was closed long ago. I’m wondering if there’s a better solution or workaround in the meanwhile?
I’ve tried overlaying the rotating sprite with a connected non-rotating transparent sprite. This works reasonably well, but of course there’s a trade off between light effect intensity and clarity of the rotating sprite behind it. I can probably improve on it by tweaking the way the 2 overlayed sprites combine.. Will probably need custom shaders in the end. More suggestions always welcome.
Is there an easier way to fix the normal map rotation, so that it does not rotate when the ‘parent’ sprite rotates? (preferably without using custom shaders, for now..)
Thanks in advance!
(Also posted here)

