Example #1
0
    def run(self):
        AbilityInstance.run(self)
        if self.player.world.is_master:
            # create the bounding circle to check collision against
            bounding_cone = collision.BoundingCone(self.hit_radius,
                                                   self.player.rotation,
                                                   self.hit_angle)

            # get a list of colliding players
            self.targets = self.player.world.get_colliders(
                bounding_cone, self.player.position, [self.player],
                objects.Player)

            # for each player, apply effects
            for player in self.targets:
                # get force vector for other player
                force_vector = ((player.position[0] - self.player.position[0],
                                 player.position[1] - self.player.position[1]))
                force_vector = CollisionDetector.normalise_vector(force_vector)
                player.force_vector = (force_vector[0] *
                                       self.starting_strength,
                                       force_vector[1] *
                                       self.starting_strength)
                print "Gust of wind collided with another player!"

        # end the effect
        self.expire()
Example #2
0
 def apply_force(self,
                 vector,
                 strength,
                 acceleration_factor=1,
                 duration=False):
     self.force_vector = CollisionDetector.normalise_vector(vector)
     self.force_strength = strength
     self.force_duration = duration
     self.force_acceleration = acceleration_factor
     self.force_applied = True
Example #3
0
 def update(self, dt):
     AbilityInstance.update(self, dt)
     if self.player.world.is_master:
         if self.player_hooked is None:
             return
         if collision.CollisionDetector.check_collision(collision.BoundingCircle(8), 
                                                        self.player_hooked.position,
                                                        self.player.bounding_shape, 
                                                        self.player.position):
             self.player_hooked.is_hooked = False
             self.player_hooked.force_vector = (0, 0)
             self.expire()
         else:
             fv = (self.player.position[0] - self.player_hooked.position[0],
                   self.player.position[1] - self.player_hooked.position[1])
             fv = CollisionDetector.normalise_vector(fv)
             fv = (fv[0] * self.retraction_speed, fv[1] * self.retraction_speed)
             self.player_hooked.force_vector = fv
Example #4
0
 def run(self):
     AbilityInstance.run(self)
     if self.player.world.is_master:
         # create the bounding circle to check collision against
         bounding_cone = collision.BoundingCone(self.hit_radius, self.player.rotation, self.hit_angle) 
         
         # get a list of colliding players
         self.targets = self.player.world.get_colliders(bounding_cone, self.player.position,
                                                     [self.player], objects.Player)
         
         # for each player, apply effects
         for player in self.targets:
             # get force vector for other player
             force_vector = ((player.position[0] - self.player.position[0],
                              player.position[1] - self.player.position[1]))
             force_vector = CollisionDetector.normalise_vector(force_vector)
             player.force_vector = (force_vector[0] * self.starting_strength,
                 force_vector[1] * self.starting_strength)
             # print "Gust of wind collided with another player!"
             
     # end the effect
     self.expire()
Example #5
0
 def apply_force(self, vector, strength, acceleration_factor=1, duration=False):
     self.force_vector = CollisionDetector.normalise_vector(vector)
     self.force_strength = strength
     self.force_duration = duration
     self.force_acceleration = acceleration_factor
     self.force_applied = True