# FPS walking inside of a cylinder

 0 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. --R more ▼ asked Sep 09 '10 at 11:52 PM Randy 1 1 ● 1 ● 1 ● 1 I'd really like to know this as well. Jul 05 '12 at 11:22 PM thenickhis @thenickhis: Then don't post an answer. Answers should answer the question!!I've converted your answer into a comment. Jul 05 '12 at 11:23 PM Bunny83 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

1 answer: sort voted first
 0 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.` ------------ cylinder axis     |     | <- Vector you want     |     v     * you `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`Vector3.normalize(Vector3(10-transform.postion.x, 10-transform.position.y, 0))` more ▼ answered Jan 19 at 09:20 PM armoredpokey 100 ● 5 ● 6 ● 7 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

### Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

Topics:

x2163
x70
x67
x20

asked: Sep 09 '10 at 11:52 PM

Seen: 971 times

Last Updated: Jan 19 at 09:29 PM