Sphere based navigation

Good day!

I’m a Lead Maya Animator at a broadcast studio by day, a burgeoning Unity enthusiast by night, and predictably I’ve run into some problems.

I’m trying to make a game in which the player issues a navigation command to their avatar (which we see through an orbiting camera) by rotating and scaling a surrounding “navigation” sphere with a painted target on it. Once the player has decided that the ‘target’ is in an acceptable position, they “execute” the command, and their avatar moves to that point in 3d space over a set amount of time. The game structure is basically turn based, and so once the avatar reaches their player selected destination, the sphere navigation would occur again. The idea is to give accurate navigation commands in 3d space intuitively through rotating and scaling the “navigation” sphere.

I could do this in Maya with a sphere, a few locators, some slight expression writing, and a few clever constraints; but in Unity I’m not really sure how to approach this puzzle. Any advice, suggestions, or even a “You’re doomed. Try -this- instead”, would be massively appreciated.

Thanks in advance to any that reply!

If I understand it correctly, it should be not too difficult. Create a target gameobject. Scaling the “sphere” moves the target towards or away from the avatar. Just a Transform.Translate based on the position difference normalized then multiplied by the magnitude of the scaling gesture.

For rotations there is a useful Transform.RotateAround to always rotate the target around your avatar along a given axis. The axis always being perpendicular to the gesture direction and aligned with the screen, I would imagine.

Keep the sphere a separate gameobject, and always just center it on the avatar and scale it based on the distance to the target.

If you don’t have a lot of experience with Unity, there may be a few details to figure out and reading through some of the documentation but it should be fairly straight forward to implement. You’re certainly not doomed or anything.