Nov-06-2019, 03:41 PM
(Nov-05-2019, 08:58 PM)SheeppOSU Wrote: Are there any problems in using the boomerang. Also, there's a question that's been itching at me. What is pos? Whenever I make a game, I make it representing an x and y value. But the way pos is being interacted with makes it look like it's not made that sort of way. Could you give me an example of what it would look like printed?
I'm not sure if you mean this:
WEAPONS['boomerang'] = {'img': 'boomerang.png', 'speed': 340, 'lifetime': 550, 'rate': 900, 'kickback': 0, 'spread': 3, 'damage': 8, 'size': 'boomerang', 'count': 1}This is in the player class, that the player is able to shoot weapons:
def shoot(self): if self.shoot_ammo == True: now = pg.time.get_ticks() if now - self.last_shot > WEAPONS[self.weapon]['rate']: self.last_shot = now dir = vec(1, 0).rotate(-self.rot) pos = self.pos + BARREL_OFFSET.rotate(-self.rot) self.vel = vec(-WEAPONS[self.weapon]['rate'], 0).rotate(-self.rot) for i in range(WEAPONS[self.weapon]['count']): spread = uniform(-WEAPONS[self.weapon]['spread'], WEAPONS[self.weapon]['spread']) Blowpipe(self.game, pos, dir.rotate(spread))The position is a vector. vec is defined as this: vec = pg.math.Vector2
class Boomerang(pg.sprite.Sprite): def __init__(self, game, pos, dir): self.groups = game.all_sprites, game.blowpipes pg.sprite.Sprite.__init__(self, self.groups) self.game = game self.image = game.blowpipe_images[WEAPONS[game.player.weapon]['size']] self.rect = self.image.get_rect() self.pos = vec(pos) self.rect.center = pos # spread = uniform(-BLOWPIPE_SPREAD, BLOWPIPE_SPREAD) self.vel = dir * WEAPONS[game.player.weapon]['speed'] self.spawn_time = pg.time.get_ticks() self.rot = 360 self.last = pg.time.get_ticks() self.cooldown = 300 self.direction = +1 def update(self): self.pos += self.vel * self.game.dt self.rect.center = self.pos if pg.sprite.spritecollideany(self, self.game.walls): self.kill() if pg.time.get_ticks() - self.spawn_time > WEAPONS[self.game.player.weapon]['lifetime']: self.kill() if self.game.player.weapon == 'boomerang': now = pg.time.get_ticks() if now - self.last >= self.cooldown: self.direction = -1 #self.pos -= self.vel * self.game.dt self.pos += self.vel * self.game.dt self.rect.center = self.posAnd yes, I can use the boomerang. It flies forward but is not coming back to the player.