Sign in to follow this  
BrechtDebruyne

Nvidia PhysX character controller not responding to Force Field

Recommended Posts

BrechtDebruyne    154
Hey, my character controller is not responding to my created force field, even though I setted the collision groups correctly etc. The force field works fine against anything else.

How do I enable the force field to do something with the character controller? Is there a way for this? Because I couldn't find anything in physX documentation. I need those damn rocket jumps!

Thanks.

Share this post


Link to post
Share on other sites
BrechtDebruyne    154
Well, you're right that something stinks here: I setted the shapes of the actor of the charactercontroller to the correct collisiongroups. But If you read the documentation, you will find out that changing anything about the actor of the charactercontroller is "undefined", "however, purely information gathering-methods are OK".

I did this because I know no other way to set the collisiongroup of a charactercontroller, and I can't find it in the physX documentation either. (Let me know if you do!)
Chances are that this is my problem, but it could just as well not be this causing the problem, because I've set actor information like this before and it never gave any problems.

The problem here is that a charactercontroller is really made because you don't want all the features of the physX framework, you just want a simple system to move your character. However, I really need a character controller, but I also need it to work with the forcefield.

Any ideas?

Share this post


Link to post
Share on other sites
DjMaSh    198
I've never used physx myself so I cant give you any specific details on how to implement.

I dont suppose you have the source code for the character controller?

So I imagine the character controller is basically a wrapper class around a rigidbody, that controls the velocity and position based on inputs from the user? Do other, non-character controller physx objects in the world successfully collide with it? can other rigid bodies knock the controller around?

What might be happening is the forcefield collides with the charactercontroller, but then the character controller just stomps on any forces applied with its own. If the character controller is implemented via setting velocity each frame, applying forces to the controller wont work.

Share this post


Link to post
Share on other sites
BrechtDebruyne    154
Yes, it works with other phsyics objects.

This is how a character controller works more or less: each frame, you must calculate a displacement vector for it (make no mistake, not a force or even velocity vector!)
You must calculate how the character moves (left, right, front, back), and most likely even calculate gravity yourself(although I'm not sure if this is what I'm supposed to do, but there's no information about it, and it doesn't seem to go down without me calculating gravity myself). Then each frame you hand over a displacement vector based on those calculations.

What nvidia will do with that displacement vector, I'm not certain of, but here's some things: it will do auto-stepping(for stairs), and it will also go up a ramp, if that ramp has an angle with the up vector, smaller than some value you have defined in initialisation.

I still need it to work with my force field though! There must be a way...

Share this post


Link to post
Share on other sites
DjMaSh    198
Btw im totally guessing about everything here. Just going off intuition.

Right. It sounds like its not part of the overall simulation at all. Physx will take your displacement vector and perform the appropriate collision tests and to make sure it doesn't tunnel through other objects, then simply set the transform to somewhere safe.

How have you constructed your forcefield? Is it basically a static trigger volume for which you handle collision events and apply forces to those objects? You might be able to subclass the character controller class to include a 'external force' member, which the forcefield sets. You could then take the value of the external force into account when calculating your displacement vector in your character controller.

Share this post


Link to post
Share on other sites

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

Sign in to follow this