I just discovered a big bug in topdown mode: when a character turns to face an object or walks to a marker, their collider flips from the Z axis back to the Y axis.
This has probably been going on for a while, but only my main characters so far have done walking/facing, and they don't have a hotspot script attached to them, so I didn't notice. But now I'm running into this issue with an NPC, and when he turns, the hitbox for his hotspot becomes really tiny at his feet (because the collider has flipped upright).
I'm using 2D Topdown mode, the characters all have a capsule collider but no rigidbody. (I tried adding the rigidbody again and freezing the rotation on it but that didn't work).
Comments
In top-down 2D mode, colliders should indeed rotate. The inner workings is basically that they behave exactly as they do in 3D mode, only the sprites (which are child objects) are locked to face the camera.
A shot of the NPC inspector would help, too. Have you placed the Hotspot on the root object?
So: once the Collider rotates like that, it's actually now in the CORRECT position. The Collider should always run along the Y-axis - the reason being that this causes collisions to only occur at a Character's feet; when navigating a scene, other Colliders shouldn't block the head, for instance.
You'll need to amend your prefab(s) so that Colliders run along the Y-axis. This shouldn't be too big a problem: once done, they should behave properly. What's more of a concern is that this'll reduce the "clickable area" of the NPC to just their feet, since that's all the Collider covers.
I'm going to have to put my hands up and call this a big oversight on my part. In my haste to get a viable 2D solution going (before Unity's own 2D tools were released), I overlooked this. There's no elegant way to get around this, so you'll have to do one of two things, I'm afraid:
1) Don't correct the prefab, and explicitly state which animation to play, as you are now.
2) Correct the prefab, and use Hotspots prefabs in place of the NPC's "internal" Hotspot.
Neither of these are particularly ideal, I apologise. In truth, I would recommend switching to the "Unity 2D" method, since it's faster and more in line with Unity's internal 2D workflow. But the above options should provide a workaround, nonetheless.
One other option (knew there was another):
Attach a Collider (along the Z-axis, as before) and a Hotspot script to the Sprite Child itself. This'll "catch" player clicks, and replace the NPC's Hotspot inspector (so transfer the values from one to the other, and place the root object on the Ignore Raycast layer). The sprite will always be positioned correctly, so any attached colliders should also be.
I've been thinking about using Unity2D for one of my projects... but I'm still not sure. I think I'll miss 2DTK multiple resolution/aspect ratio support and multiresolution sprite atlases