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()
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
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
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()
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