x


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

more ▼

asked Sep 09 '10 at 11:52 PM

Randy 1 gravatar image

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
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

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 gravatar image

armoredpokey
100 5 6 7

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

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

By RSS:

Answers

Answers and Comments

Topics:

x2163
x70
x67
x20

asked: Sep 09 '10 at 11:52 PM

Seen: 971 times

Last Updated: Jan 19 at 09:29 PM