Jump to content
  • Advertisement
  • entries
  • comments
  • views

Edge Traversal

Sign in to follow this  


So we got the basic mechanics of edge traversal finally working, kind of. Excuse the dodgy animation, just a placeholder.

The idea is we maintain a contact point at each hand, offset slightly from the centre position. Each offset is a reference to an edge i.e. a pointer to the body, an index to identify the edge and a world-space position.

When we try to move, we move the position along its current edge, checking to see if we go over the end or not (basically a method called pointOnLine() which returns 0 - 1 when in the segment range or <0 or >1 if outside) and, if so, we find the next adjacent edge and project along that edge by the amount of step remaining.

This gives us two points we can form a vector between, then cross with (0,1,0) to get the normal so that he smoothly rotates around the corners.

Unfortunately the player capsule does intersect with the geometry a lot during this so I've had to disable collision checks between the bodies who own the edges in question, but this turns out to not be a perfect solution since some configurations of the environment can still report collisions where there should be none, so I need to think this through a little, see if we can come up with a better approach.

But it is essentially working and goes to show that if you have the freedom of an entirely kinematic controller with no physics, you can achieve almost any behaviour that you want.

Thanks for stopping by. I'm trying to keep these a bit briefer these days, and hope they remain of interest.

Sign in to follow this  


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!