I am new to Panda3d and have looked at a few different situations using CollisionTubes/CollisionCapsule and can’t figure out what I am not doing correctly.
The tutorial lesson I was following is linked here:
The relevant code is here but if you want the full code, I can provide it but it also accessible at lesson 06 link. The tut uses Tubes, but upon reading, I guess those are old. So i made the switch to Capsule and it did make no difference. Showing the tubes demonstrates they are present. The tutorial doesn’t do anything with the traverser/pusher. I tried adding it to the traverser but you cannot add collision nodes to the pusher and so I’m not sure it was even relevant. I commented it out. I think the into and from concepts means that if it’s in the traverser/pusher system it’s the ‘into’ role so you probably don’t put the walls there anyway. Regardless, I’m not managing to get collisions with my tubes and my sprite. Any thoughts or obvious mistakes jumping out?
self.traverser = CollisionTraverser()
self.pusher = CollisionHandlerPusher()
colliderNode = CollisionNode("player")
colliderNode.addSolid(CollisionSphere(0, 0, 0, 0.3))
collider = self.pchan.attachNewNode(colliderNode)
collider.show()
self.pusher.addCollider(collider,self.pchan)
self.traverser.addCollider(collider,self.pusher)
self.pusher.setHorizontal(True)
wallSolid = CollisionCapsule(-8.0, 0, 0, 8.0, 0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setY(8.0)
#wall.show()
#self.traverser.addCollider(wall,self.pusher)
wallSolid = CollisionCapsule(-8.0, 0, 0, 8.0, 0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setY(-8.0)
#wall.show()
#self.traverser.addCollider(wall,self.pusher)
wallSolid = CollisionCapsule(0, -8.0, 0, 0, 8.0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setX(8.0)
#wall.show()
#self.traverser.addCollider(wall,self.pusher)
wallSolid = CollisionCapsule(0, -8.0, 0, 0, 8.0, 0, 0.2)
wallNode = CollisionNode("wall")
wallNode.addSolid(wallSolid)
wall = self.render.attachNewNode(wallNode)
wall.setX(-8.0)
#wall.show()
#self.traverser.addCollider(wall,self.pusher)