How do I detect the collision points between this ray
def cast_ray(self, a, b):
self.draw_line(a, b)
self.ray = CollisionRay()
self.ray.setOrigin(a)
self.ray.setDirection(b-a)
rayNode = CollisionNode("ray")
rayNode.addSolid(self.ray)
self.rayNodePath = self.scene.render.attachNewNode(rayNode)
self.rayQueue = CollisionHandlerQueue()
self.scene.cTrav.addCollider(self.rayNodePath, self.rayQueue)
if self.rayQueue.getNumEntries() > 0:
self.rayQueue.sortEntries()
rayHit = self.rayQueue.getEntry(0)
hitPos = rayHit.getSurfacePoint(self.scene.render)
hitNodePath = rayHit.getIntoNodePath()
print(hitPos)
print(hitNodePath)
else: print("No entries found")
And these boxes
def add_box(self, position, tag):
box_n = self.scene.loader.loadModel("models/box")
box_n.setScale(1, 1, 1)
box_n.setPos(position)
box_n.flattenLight()
box_n.setTextureOff()
box_n.setTag('myObjectTag', tag)
colliderNode = CollisionNode("box")
colliderNode.addSolid(CollisionBox(position, 2.5, 5, 2))
collider = box_n.attachNewNode(colliderNode)
collider.show()
box_n.reparentTo(self.scene.render)
With
self.scene.cTrav = CollisionTraverser()