Does CollisionHandlerPusher work with CollisionTube?
In the following example it doesn’t, while CollisionSphere does:
import direct.directbase.DirectStart
from pandac.PandaModules import *
from direct.showbase.DirectObject import DirectObject
import sys
base.cTrav = CollisionTraverser()
pusher = CollisionHandlerPusher()
class Into():
def __init__(self):
self.intoNode = render.attachNewNode('intoNode')
self.intoNode.setPos(0, 0, 0)
self.intoColNode = CollisionNode('intoColNode')
self.intoColNode.addSolid(CollisionSphere(0, 0, 0, 1))
self.intoColNP = self.intoNode.attachNewNode(self.intoColNode)
self.intoColNP.show()
class From(DirectObject):
def __init__(self):
self.fromNode = render.attachNewNode('fromNode')
self.fromNode.setPos(0, -5, 0)
self.fromColNode = CollisionNode('fromColNode')
# Use CollisionSphere:
#self.fromColNode.addSolid(CollisionSphere(0, 0, 0, 1))
# Use CollisionTube:
self.fromColNode.addSolid(CollisionTube(-1, 0, 0, 1, 0, 0, 1))
self.fromColNP = self.fromNode.attachNewNode(self.fromColNode)
self.fromColNP.show()
base.cTrav.addCollider(self.fromColNP, pusher)
pusher.addCollider(self.fromColNP, self.fromNode)
self.defineMovements()
def defineMovements(self):
'''Create keymap for moving the From object,
and accept events.'''
self.keyMap = {"forward" : 0,
"backward" : 0}
self.accept("w", self.forward)
self.accept("w-repeat", self.forward)
self.accept("s", self.backward)
self.accept("s-repeat", self.backward)
self.accept("escape", sys.exit)
def forward(self):
self.fromNode.setPos(self.fromNode, 0, 0.1, 0)
print "Forward"
def backward(self):
self.fromNode.setPos(self.fromNode, 0, -0.1, 0)
print "Backward"
base.cam.setPos(0, 0, 20)
base.cam.lookAt(0, 0, 0)
intoO = Into()
fromO = From()
run()