I need to make a character to always stand up against an artificial Gravity Vector.
The artificial gravity source can be anywhere and any angle/vector.
When I am inside the trigger collider of the gravity source, I want my character to slowly “stand up”, meaning its feet pointing towards the floor, even if not touching, while keeping its rotation around its local Y axis to keep looking approximately in the same direction.
I have a script attached to my character gameObject.
By now I achieved to make the character to stand up against the global Vector3.up, I simply need help with doing it against a specific vector.
Here’s the part of this script I need help with :
Vector3 gravityVector = artificialGravitySource.transform.up; // unused for now...
Quaternion startRotation = transform.rotation;
Quaternion endRotation = new Quaternion (0, transform.rotation.y, 0, transform.rotation.w);
transform.rotation = Quaternion.RotateTowards(startRotation, endRotation, 100 * Time.deltaTime);
I need to set my endRotation according to gravityVector, keeping my local y rotation.
Thank you for your help.