I'm fairly new with Unity, but I need to get the FPSWalker to walk freely within the interior of a cylinder. Think Rama, if you know what the heck that is.
I've seen a lot of tutorials for walkable spheres, mostly using faux gravity, which isn't what I need. Instead I'm sure I can just find some way to use Quaternions and the normals of the current surface to accomplish this.
1) Turn off gravity: done (I think, just turned it off for the FPC's rigidbody and for the floating cylinder - not sure what to do with the gravity calculation in the FPSWalker).
2) Apply a relative downward force in the player's y-direction: done (attached a ConstantForce component to the First Person Controller).
3) Make the player's relative coordinates rotate along with the interior surface of the cylinder <-- here's where all my problems are.
I've tried it a million ways, RaycastHit.normal, etc. There's clearly just an issue of unfamiliarity with the way the FPSWalker works on my part... any help would be appreciated.
asked Sep 09 '10 at 11:52 PM
If you know the central axis line of the cylinder (should be relatively easy to calculate, a basic function of the cylinder's rotation), then just subtract the Vector3 of the closest point on the axis from the Vector3 of your walker's position.
Then just change the gravity code in the FPSwalker to apply a constant force in the direction of that vector.
So if your cylinder just goes straight up on the z-axis, and its center is at x=10, y=10, then the vector you want is
answered Jan 19 at 09:20 PM