multiple CollisionHandlers for a CollisionNode?

wallHandler = CollisionHandlerPusher()
queueHandler = CollisionHandlerQueue()

base.cTrav.addCollider(colnp, wallHandler)
base.cTrav.addCollider(colnp, queueHandler)

Looks like one overwites the other.

But I not only want my characters to slide when hitting the wall, but also know when that happens (to play the walking animation slower, stop NPC AI from moving further). What can I do?


Another typical example: using the same collision spheres which you use for colliding players with walls to trigger doors and such.

Hmm… I don’t know why the use of multiple handlers doesn’t work, but if you don’t mind using the CollisionHandlerEvent system instead of CollisionHandlerQueue, you may have another option.

Looking at the hierarchy (and prompted by a vague memory of having done this myself), I see that CollisionHandlerPusher is a child of CollisionHandlerEvent, meaning that, if I’m not much mistaken, you should be able to receive events from a CollisionHandlerPusher just as you would if it were a CollisionHandlerEvent (because, well, it is).

This should at least allow you to enact such scenarios as triggering doors and the like, although you might still have problems if the queue behaviour is important to what you’re doing.

If said queue behaviour is indeed important, perhaps you could use multiple colliders, one each for the queue system and the pusher/event system.