-2
我有让我的球员的方向拍摄的一个问题球员正在射击的方向
class Player(pygame.sprite.Sprite):
def __init__(self, screen, (posx, posy), shell):
'Called the Sprite class constructor'
pygame.sprite.Sprite.__init__(self)
'Save a reference to the screen'
self.screen = screen
self.shell = shell
'Create the image for the sprite'
self.image = pygame.image.load("player0.png")
self.image = self.image.convert()
tranColor = self.image.get_at((1, 1))
self.image.set_colorkey(tranColor)
self.rect = self.image.get_rect()
self.charge = 50
'Position the sprite'
self.x = posx
self.y = posy
self.rect.center = (self.x, self.y)
self.velocity = Vectors.Vector2D(2, 2)
self.imgDown = []
self.imgRight = []
self.imgLeft = []
self.imgUp = []
self.frame = 0
self.delay = 3
self.pause = self.delay
self.speed = 5
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
self.rect.centerx -= self.velocity.mulscaler(self.speed).x
self.loadPicsLeft()
self.calcDelay()
self.image = self.imgLeft[self.frame]
if keys[pygame.K_d]:
self.rect.centerx += self.velocity.mulscaler(self.speed).x
self.loadPicsRight()
self.calcDelay()
self.image = self.imgRight[self.frame]
if keys[pygame.K_w]:
self.rect.centery -= self.velocity.mulscaler(self.speed).y
self.loadPicsUp()
self.calcDelay()
self.image = self.imgUp[self.frame]
if keys[pygame.K_s]:
self.rect.centery += self.velocity.mulscaler(self.speed).y
self.loadPics()
self.calcDelay()
self.image = self.imgDown[self.frame]
if self.velocity.x > self.speed:
self.velocity.x = self.speed
if self.velocity.x < -self.speed:
self.velocity.x = -self.speed
if self.velocity.y > self.speed:
self.velocity.y = self.speed
if self.velocity.y < -self.speed:
self.velocity.y = -self.speed
if keys[pygame.K_SPACE]:
self.shell.x = self.rect.centerx
self.shell.y = self.rect.centery
self.shell.speed = self.charge
def calcDelay(self):
self.pause -= 1
if self.pause <= 0:
self.pause = self.delay
self.frame += 1
if self.frame > 2:
self.frame = 0
def loadPics(self):
for i in range (7):
imgName = "player%d.png"% i
tmpImg = pygame.image.load(imgName)
tmpImg.convert()
tranColor = tmpImg.get_at((0,0))
tmpImg.set_colorkey(tranColor)
self.imgDown.append(tmpImg)
def loadPicsRight(self):
for i in range (7):
imgName = "playerRight%d.png"% i
tmpImg = pygame.image.load(imgName)
tmpImg.convert()
tranColor = tmpImg.get_at((0,0))
tmpImg.set_colorkey(tranColor)
self.imgRight.append(tmpImg)
def loadPicsLeft(self):
for i in range (7):
imgName = "playerLeft%d.png"% i
tmpImg = pygame.image.load(imgName)
tmpImg.convert()
tranColor = tmpImg.get_at((0,0))
tmpImg.set_colorkey(tranColor)
self.imgLeft.append(tmpImg)
def loadPicsUp(self):
for i in range (7):
imgName = "playerUp%d.png"% i
tmpImg = pygame.image.load(imgName)
tmpImg.convert()
tranColor = tmpImg.get_at((0,0))
tmpImg.set_colorkey(tranColor)
self.imgUp.append(tmpImg)
class Shell(pygame.sprite.Sprite):
def __init__(self, screen):
pygame.sprite.Sprite.__init__(self)
self.screen = screen
self.image = pygame.Surface((50, 50))
self.image.fill((0xff, 0xff, 0xff))
self.image.set_colorkey((0xff, 0xff, 0xff))
pygame.draw.circle(self.image, (0, 0, 0), (25, 25), 25)
self.image = pygame.transform.scale(self.image, (10, 10))
self.rect = self.image.get_rect()
self.rect.center = (-100, -100)
self.speed = 0
self.dir =0
self.reset()
def update(self):
self.checkBounds()
self.rect.center = (self.x, self.y)
def reset(self):
""" move off stage and stop"""
self.x = -100
self.y = -100
self.speed = 0
这是我的球员,我的壳类,在我所有的外壳程序是出现在当下我的球员的位置,即时寻找的是我的球员,当他看起来正确时向右射击子弹,向左看时留下等等。任何人都可以为我提供关于我能做些什么来达到此目的的任何提示。林才刚刚开始编码在此刻大学,所以我挣扎了一下
代码你在哪里存储的方向是什么? – YXD
嗯我不知道,我认为它在玩家的更新方法中,因为在每次我按下空间时,强化器都会朝那个方向开火 –
您应该使用Shell.update来移动子弹的速度。不知道你在哪里移动它。 – ninMonkey