- Home /
FPS walking inside of a cylinder
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
@thenickhis: Then don't post an answer. Answers should answer the question!!
I've converted your answer into a comment.
Answer by armoredpokey · Jan 19, 2013 at 09:20 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.
------------ 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))
Your answer
Follow this Question
Related Questions
cylinder pulling mechanism 0 Answers
Rotate GameObjects to define a cylinder 1 Answer
Generating a procedural cylindrical mesh following a path 1 Answer
Enemy walking through walls/terrain 1 Answer
Determine Rotation Between Two Points 2 Answers