我想朝着主要球员的方向射击子弹,在这个类中,子弹沿着玩家的方向前进:
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
答案 0 :(得分:0)
如果物体和目标在同一位置,距离( "timestamp": {
"type": "date"
}
)为0。这会导致错误:
ZeroDivisionError: 浮点数除以零
只有在距离 (dist
) 大于 0 时才能移动子弹:
dist