我想朝着角色的方向射击子弹

时间:2017-05-10 17:25:06

标签: python python-2.7 pygame

我想朝着主要球员的方向射击子弹,在这个类中,子弹沿着玩家的方向前进:

class bala(pygame.sprite.Sprite):
def __init__(self, img, posX, posY, velproyectil, xmax, ymax):
    pygame.sprite.Sprite.__init__(self)
    self.Bala = img
    self.Bala = pygame.transform.rotate(self.Bala, 90)
    self.rect = self.Bala.get_rect()
    self.speedx = velproyectil
    self.speedy = velproyectil
    self.rect.top = posY - ymax
    self.rect.left = posX - xmax

def direccion(self, personaje, personajex, personajey):
    dx, dy = self.rect.x - personajex, self.rect.y - personajey
    dist = hypot(dx, dy)
    dx, dy = dx / dist, dy / dist
    self.rect.x += dx * -self.speedx
    self.rect.y += dy * -self.speedy


def dibujar(self, superficie):
    superficie.blit(self.Bala, self.rect)

但是当我移动播放器时,子弹不会继续运行,控制台会显示错误:  “文件”Juego_clases(Prueba2).py“,第99行,处于直接状态     dx,dy = dx / dist,dy / dist ZeroDivisionError:浮点除零“

当按下空格键时子弹被激活,我想要按下栏时发射的子弹,以同样的方式进行。 我想要的是在玩家方向射击子弹,玩家可以躲闪他们。

以下是发生的事情(gif):https://1drv.ms/i/s!Amz_9onOWtRI3XfQPC4aq_LhuTnj

1 个答案:

答案 0 :(得分:0)

如果物体和目标在同一位置,距离( "timestamp": { "type": "date" } )为0。这会导致错误:

<块引用>

ZeroDivisionError: 浮点数除以零

只有在距离 (dist) 大于 0 时才能移动子弹:

dist