Python 我想朝角色的方向开枪

Python 我想朝角色的方向开枪,python,python-2.7,pygame,Python,Python 2.7,Pygame,我想朝着主要玩家的方向开枪,在本课中,子弹朝着玩家的方向: class bala(pygame.sprite.sprite): 定义初始值(self、img、posX、posY、velproyectil、xmax、ymax): pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我) self.Bala=img self.Bala=pygame.transform.rotate(self.Bala,90) self.rect=self.Bala.get_rect(

我想朝着主要玩家的方向开枪,在本课中,子弹朝着玩家的方向:

class bala(pygame.sprite.sprite):
定义初始值(self、img、posX、posY、velproyectil、xmax、ymax):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
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
定义指令(自我、人物、人物、人物):
dx,dy=self.rect.x-personajex,self.rect.y-personajey
dist=低血压(dx,dy)
dx,dy=dx/dist,dy/dist
self.rect.x+=dx*-self.speedx
self.rect.y+=dy*-self
def dibujar(自我、超级):
超链接(self.Bala,self.rect)
但当我移动播放器时,子弹不会继续前进,控制台显示错误:

当按下空格键时,子弹会被激活,我希望按下空格键时发射的子弹也会以同样的方式通过。 我想要的是朝玩家方向射击子弹,玩家可以躲开它们


下面是发生的情况(gif):

如果对象和目标位于同一位置,则距离(
dist
)为0。这会导致以下错误:

ZeroDivisionError:浮点除以零

仅当距离(
dist
)大于0时,才能移动项目符号:

class bala(pygame.sprite.sprite):
# [...]
定义指令(自我、人物、人物、人物):
dx,dy=personajex-self.rect.x,personajey-self.rect.y
dist=低血压(dx,dy)
如果距离>0:
dx,dy=dx/dist,dy/dist
self.rect.x+=dx*self.speedx
self.rect.y+=dy*self

dist
必须等于零。在进行除法之前,需要使用if语句来确保
dist
不是0。但是项目符号不会一直移动。这里有一个“gif”显示发生了什么。()在某一点上,
self.rext.x
必须等于
personajex
self.rect.y
必须等于
personajey
(假设我猜
hypot(dx,dy)
)。这将使
dist
等于0。
"File "Juego_clases (Prueba2).py", line 99, in direccion
   dx, dy = dx / dist, dy / dist
ZeroDivisionError: float division by zero"