Nvidia PhysX character controller not responding to Force Field

Started by
5 comments, last by BrechtDebruyne 12 years, 3 months ago
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.
Advertisement
If its not colliding, how do you know you hooked up the collision groups properly?
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?
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.
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...
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.
yes forcefield is someth like that. Hmm I don't know about the external force, can't find it

This topic is closed to new replies.

Advertisement