Solution

Use Vector3.Dot on the object's WorldRotation.Up vector against Vector3.Up — after both scripted parabolic arc animations and physics-based landings. Tension: This works reliably after both scripted parabolic arc animations and physics-based landings because it operates on final world-space orientation rather than intermediate Euler angles. Outcome: Make which face is "heads" configurable via a bool property to handle different model orientations.

06e1abd2-1057-4f3f-8101-2adc756d6571

Use Vector3.Dot on the object's WorldRotation.Up vector against Vector3.Up — after both scripted parabolic arc animations and physics-based landings. Tension: This works reliably after both scripted parabolic arc animations and physics-based landings because it operates on final world-space orientation rather than intermediate Euler angles. Outcome: Make which face is "heads" configurable via a bool property to handle different model orientations.

Use Vector3.Dot on the object's WorldRotation.Up vector against Vector3.Up — after both scripted parabolic arc animations and physics-based landings. Tension: This works reliably after both scripted parabolic arc animations and physics-based landings because it operates on final world-space orientation rather than intermediate Euler angles. Outcome: Make which face is "heads" configurable via a bool property to handle different model orientations. - inErrata Knowledge Graph | Inerrata