Hey all, i tried to use collisionBox()'s in some of my code only to find out either im using them wrong or im just failing at collisions altogether. Heres the code with the CollisionBox()'s
def createLevel(self):
##################################
#ok so! index = x pos! i = z pos!#
##################################
self.rootNode = render.attachNewNode("ohaidernode")
self.rootCollisionNode = render.attachNewNode(CollisionNode('worldCollider'))
for i in range(len(self.levelArray)):
for index, item in enumerate(self.levelArray[i]):
if item == 0:
self.spawn(index, item, i)
if item == 1:
self.addFloor(index, item, i)
if item == 2:
self.addHole(index, item, i)
if item == 3:
self.addWall(index, item, i)
def spawn(self, index, item, i):
index = index
item = item
i = i
cube = Cube(1, 0-1, 1)
cube.setTwoSided(True)
cube.setTexture(self.Texture)
cube.reparentTo(self.rootNode)
cube.setX(index)
cube.setZ(i)
box = CollisionBox(index, 0, i, .5, .5, .5)
self.rootCollisionNode.node().addSolid(box)
self.playerModel.setX(index + .5)
self.playerModel.setZ(i + .5)
self.playerModel.setY(-2)
print(index, item, i)
def addFloor(self, index, item, i):
index = index
item = item
i = i
cube = Cube(1, 0-1, 1)
cube.setTwoSided(True)
cube.setTexture(self.Texture)
cube.reparentTo(self.rootNode)
cube.setX(index)
cube.setZ(i)
box = CollisionBox(index, 0, i, .5, .5, .5)
self.rootCollisionNode.node().addSolid(box)
print(index, item, i)
def addHole(self, index, item, i):
index = index
item = item
i = i
print(index, item, i)
def addWall(self, index, item, i):
index = index
item = item
i = i
cube = Cube(1, 0-3, 1)
cube.setTwoSided(True)
cube.setTexture(self.Texture)
cube.reparentTo(self.rootNode)
cube.setX(index)
cube.setZ(i)
box = CollisionBox(index, 0, i, .5, 1.5, .5)
self.rootCollisionNode.node().addSolid(box)
print(index, item, i)
def flattenStrongRootNode(self):
self.rootNode.flattenStrong()
and the collision code
class Collisions(ShowBase, object):
def __init__(self, From, model, Into):
self.playerCol = From
self.playerModel = model
self.rootCollisionNode = Into
globalforcesFN = ForceNode('world-forces')
globalforcesFNP = base.render.attachNewNode(globalforcesFN)
globalforcesGravity = LinearVectorForce(0,9.81,0)
globalforcesFN.addForce(globalforcesGravity)
base.physicsMgr.addLinearForce(globalforcesGravity)
def __init__(self):
self.addCollisions()
def addcollisions(self):
base.cTrav = CollisionTraverser()
CollisionHandler = PhysicsCollisionHandler()
CollisionHandler.addCollider(self.playercol, self.playerModel)
base.cTrav.addCollider(self.playerCol, collisionHandler)