Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import math
- pygame.init()
- def degrees_to_radians(degrees):
- return degrees * (math.pi / 180.0)
- class Projectile(pygame.sprite.Sprite):
- def __init__(self, boss, ddx, ddy):
- self.shotsound = pygame.mixer.Sound('src/sound/weapons/rifle.ogg')
- pygame.sprite.Sprite.__init__(self)
- self.load_image = pygame.image.load("src/images/projectile.png")
- """Owner of the shot"""
- self.boss = boss
- clock = pygame.time.Clock()
- self.bulletspeed = 20.0 # pixel per second ?
- self.ddx = ddx
- self.ddy = ddy
- self.pos = [0,0]
- self.rect = self.load_image.get_rect()
- self.lifetime = 5 # 5 seconds
- self.angle = self.boss.angle_to_pointer
- self.pos[0] = self.boss.rect.centerx
- self.pos[1] = self.boss.rect.centery
- self.calculate_origin()
- self.image = pygame.transform.rotate(self.load_image, self.angle)
- self.startlength = 0
- self.maxlength = 5
- self.dx = self.ddx * self.bulletspeed
- self.dy = self.ddy * self.bulletspeed
- def calculate_origin(self):
- # - spawn bullet at end of turret barrel instead tank center -
- # cannon is around Tank.side long, calculatet from Tank center
- # later subtracted 20 pixel from this distance
- # so that bullet spawns closer to tank muzzle
- self.pos[0] += math.cos(degrees_to_radians(self.boss.angle_to_pointer)) #* (self.boss.rect.width)
- self.pos[1] += math.sin(degrees_to_radians(-self.boss.angle_to_pointer)) #* (self.boss.rect.width)
- def update(self, block_group):
- self.block_group = block_group
- self.pos[0] += self.dx * 0.2 #0.016
- self.pos[1] += self.dy * 0.2 #0.016
- self.rect.centerx = round(self.pos[0],0)
- self.rect.centery = round(self.pos[1],0)
- self.image = pygame.transform.rotate(self.load_image, self.angle)
- if self.rect.x >= 720:
- self.kill()
- elif self.rect.x <= 0:
- self.kill()
- elif self.rect.y >= 560:
- self.kill()
- elif self.rect.y <= 0:
- self.kill()
- if pygame.sprite.spritecollide(self, self.block_group, False):
- self.kill()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement