Hi everyone,
I have a problem with my collision system.
I have 2 collisions spheres.
One is around a planet and the other is around a spaceship.
I’m able to catch the collision in normal behavior
(when the spaceship REALLY hit the planet) but something strange is happening before that.
As soon as my game start, 2 collisions are detected. But what is strange is that my spaceship and my planet didn’t move. So everytime my game start, this event is catch and my spaceship explode for nothing…
So I was wondering if anyone here already have this issues.
Here is the code from my collision class:
from random import *
import os
from direct.task import Task
from direct.showbase.DirectObject import DirectObject
import direct.directbase.DirectStart
from pandac.PandaModules import *
import math
class CollisionDetection:
def __init__(self,world):
self.world = world
self.queue = CollisionHandlerQueue()
self.traverser = CollisionTraverser()
self.traverser.showCollisions(render)
taskMgr.add(self.collisionTask, 'collision task')
def addFromNodePath(self, nodePath):
self.traverser.addCollider(nodePath, self.queue)
def removeFromNodePath(self, nodePath):
self.traverser.removeCollider(nodePath)
def collisionTask(self,task):
self.traverser.setRespectPrevTransform(True)
self.traverser.traverse(render)
entries = self.queue.getNumEntries()
for i in range(entries):
entry = self.queue.getEntry(i)
#print entry
self.findIntoNodes(entry)
return Task.cont
def findIntoNodes(self, colEntry):
fromNode = colEntry.getFromNodePath()
intoNode = colEntry.getIntoNodePath()
self.normal = colEntry.getSurfaceNormal(render)
self.point = colEntry.getSurfacePoint(render)
intoType = intoNode.getNetTag('collisionType')
fromType = fromNode.getNetTag('collisionType')
if (intoType == 'planet'): self.handlePlanetCollision(intoNode, fromNode, fromType)
def handlePlanetCollision(self, intoNode, fromNode, fromType):
if fromType == "fighter":
try:
print "The fighter collide"
self.world.killFighter()
except KeyError,e:
pass # pro
Don’t hesitate to ask question, I can provide more code.
Thanks
Jaff