Возможно, вы захотите задать для пули значения x_speed и y_speed при его запуске, а затем обновить каждый кадр, перемещая указанное количество.Допустим, вы щелкаете по (cx,cy)
с начальным местоположением пули (sx,sy)
.Отсюда вы хотите получить угол, чтобы найти cos(angle)
и sin(angle)
.К счастью, мы можем получить это, даже не имея угла!При прямом расстоянии от точки щелчка и начальной точки r = ((sx-cx)**2+(sy-cy)**2)**0.5
у нас будет:
cos_angle = (cx-sx)/r
sin_angle = (cy-sy)/r
, которые можно сохранить в экземпляре пули иумноженный на скорость вашей пули, чтобы определить, насколько далеко вы хотите переместить указанную пулю в направлении x
и y
:
def updatebulletbycallingthiseveryframe(self):
self.x += self.bullet_speed*self.cos_angle
self.y += self.bullet_speed*self.sin_angle
Это будет поддерживать движение пули навсегда, добавьте проверку, чтобы увидеть,выходит за пределы и удалите пулю, если это произойдет.