コード例 #1
0
 def updateMovement(self):
     for obj in self.objects:
         obj = self.objects[obj]
         if obj.TYPE=="MovingObject":
             obj.setSpeed(maths.getReducedSpeedByPercent(obj.FRICTION, obj.getSpeed()))
             vec = maths.polarToCartesian(obj.getAngle(), obj.getSpeed())
             obj.setVector(vec)
             #print vec, obj.getAngle(), obj.getSpeed(), obj.getPosition()
             obj.setPosition((obj.getPosition()[0]+vec[0], obj.getPosition()[1]+vec[1]))
コード例 #2
0
 def handleCollide(self, object_, objectsHit):
     for obj in objectsHit:
         if not objectsHit[obj] in object_.handledCollisions: 
             obj = objectsHit[obj]
             if object_.getType()=="MovingObject" and obj.getType()=="StationaryObject":
                 c = self.getCollisionDirection(object_, obj)
                 if c[0] or c[1]:
                     object_.setAngle(maths.getAngleOfReflection(object_.getAngle(), 0))
                     pos = object_.getPosition()
                     vec = maths.polarToCartesian((180+object_.getAngle())%360, 3)
                     pos = pos[0]-vec[0], pos[1]-vec[1]
                     object_.setPosition(pos)
                 elif c[2] or c[3]:
                     object_.setAngle(maths.getAngleOfReflection(object_.getAngle(), 90))
                     pos = object_.getPosition()
                     vec = maths.polarToCartesian((180-object_.getAngle())%360, 3)
                     pos = pos[0]-vec[0], pos[1]-vec[1]
                     object_.setPosition(pos)
                 
                 
                 object_.setSpeed(maths.getReducedSpeedByPercent(object_.BOUNCYNESS, object_.getSpeed()))
                 object_.onCollide(obj)                         
             elif object_.getType()=="StationaryObject" and obj.getType()=="StationaryObject":
                 object_.onCollide(obj)
             elif object_.getType()=="MovingObject" and obj.getType()=="MovingObject":
                 object_.moveBack(object_.getSpeed()*2)        
                 print object_.getName(), obj.getName()                  
                 vec = maths.getFinalPolarVectorFromVector(object_.MASS, object_.getVector(), obj.MASS, obj.getVector())
                 #vec = maths.getFinalPolarVectorFromVector(obj.MASS, obj.getVector(), object_.MASS, object_.getVector())
                 
                 if object_.getName()!="Ball":
                     obj.setSpeed(vec[0][1])
                     obj.setAngle(vec[0][0])
                     obj.addHandledCollision(object_)
                     object_.setSpeed(vec[1][1])
                     object_.setAngle(vec[1][0])
                 else:
                     obj.setSpeed(vec[1][1])
                     obj.setAngle(vec[1][0])
                     obj.addHandledCollision(object_)
                     object_.setSpeed(vec[0][1])
                     object_.setAngle(vec[0][0])
 
             elif object_.getType()=="StationaryObject" and obj.getType()=="MovingObject":
                 object_.onCollide(obj)
             elif object_.getType()=="ContainerObject" and obj.getType()=="MovingObject":
                 object_.onCollide(obj)
             elif object_.getType()=="MovingObject" and obj.getType()=="ContainerObject":
                 object_.onCollide(obj)
             else:
                 self.logger.error("Invalid Object(s): "+str(object_.getType())+", "+str(obj.getType()))