I have attempted to get collision from “collisionEntry” by coding like this below…and what wrong
When I tried to get the number of collision of my ray downward using
print self.queue.getNumEntries()
but do not have anything happen (collision return number = 0)
::::::::::::::What wrong:::::::::::::::::
I cried and felt baaaad…Help me please THX
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
base.cTrav = CollisionTraverser()#traverser
base.cTrav.setRespectPrevTransform(1)
class EntryCollision(DirectObject):
def __init__(self):
#set camera
base.disableMouse()
lens = OrthographicLens()
lens.setFilmSize(800, 600)
lens.setNearFar(-500,500)
base.cam.node().setLens(lens)
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#create collision Traverser
base.cTrav = CollisionTraverser()
base.cTrav.showCollisions(render)
self.queue = CollisionHandlerQueue()
#load object
obj = loader.loadModel("smiley.egg")
obj.setScale(20)
obj.setPos(0,0,100)
obj.reparentTo(render)
obj.setCollideMask(BitMask32.allOff())
#add collision ray to the object
self.rayNode = CollisionNode('Obj_ray')
self.raySolid = CollisionRay(0,0,0,0,0,-1)
self.rayNode.addSolid(self.raySolid)
#create collision node from object and collision solide
self.collisionRayNode = obj.attachNewNode(self.rayNode)
self.rayNode.setIntoCollideMask( BitMask32.allOff())
self.rayNode.setFromCollideMask( BitMask32.bit(1))
self.collisionRayNode.show()
base.cTrav.addCollider(self.collisionRayNode, self.queue)
base.cTrav.traverse(render)
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#load wall
wall = loader.loadModel('floor.egg')
wall.setScale(10)
wall.setPos(0,0,-100)
wall.reparentTo(render)
wall.setCollideMask( BitMask32.allOn())
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#get Collision Entry
print self.queue.getNumEntries()
x = EntryCollision()
run()
[code]