def movement_controls(self, pressed, tilemap): if pressed[A]: self.rotation += 2 self.rotate_vehicle(358) collision_result = collision_check(self, tilemap, Vec2d(0,0)) if collision_result.collisions: self.rotation -= 2 self.rotate_vehicle(2) if pressed[D]: self.rotation -= 2 self.rotate_vehicle(2) collision_result = collision_check(self, tilemap, Vec2d(0,0)) if collision_result.collisions: self.rotation += 2 self.rotate_vehicle(358) if pressed[W] and abs(self.speed) < self.top_speed: self.speed += self.acceleration if pressed[S] and abs(self.speed) < self.top_speed: self.speed -= self.acceleration if not pressed[W] and not pressed[S] and self.speed != 0: if abs(self.speed) < abs(self.acceleration): self.speed = 0 else: self.speed -= math.copysign(self.acceleration, self.speed) if pressed[A] or pressed[D]: self.image = transform.rotate(self.base_image, self.rotation) self.rect = self.image.get_rect()
def update(self, pressed, time_delta, tilemap): direction = Vec2d(math.sin(math.radians(self.rotation)), math.cos(math.radians(self.rotation))) direction.length = self.speed predicted_collision_result = collision_check(self, tilemap, direction) collision_result = collision_check(self, tilemap, Vec2d(0,0)) self.result = collision_result self.movement_controls(pressed, tilemap) if predicted_collision_result.collisions and not self.speed == 0: self.collision_points = collision_result.collisions if collision_result.collisions: self.speed = - self.speed * time_delta * 2 else: self.collision_reactor(predicted_collision_result.collision_lines[0]) self.update_position(time_delta) else: self.update_position(time_delta) self.items_layer.update(Vec2d(self.rect.center[0] - tilemap.viewport[0], self.rect.center[1] - tilemap.viewport[1]), self)
def update(self, pressed, time_delta, tilemap): if self.kill_in_the_next_frame or not self.life: self.kill() self.direction.length = self.speed self.position += self.direction self.rect.center = self.position self.life -= 1 predicted_collision_result = collision_check(self, tilemap, self.direction) bullet_collisions = predicted_collision_result if bullet_collisions.collisions: self.rect.center = predicted_collision_result.collisions[0] predicted_collision_result self.kill_in_the_next_frame = True if bullet_collisions.collided_objects[0].cell.health > 0: if bullet_collisions.collided_objects[0].cell.health > 2: bullet_collisions.collided_objects[0].cell.health -= 2 else: bullet_collisions.collided_objects[0].cell.health = 0