角度和目标坐标的问题

时间:2014-09-25 05:51:40

标签: python math pygame

当正在初始化玩家射击Bullet时。

class Bullet(BaseClass):
    def __init__(self, x, y, tx, ty, angle):
        ...
        self.tx, self.ty = tx, ty
        # Here's the problematic part
        self.tx += random.uniform(-15, 15)
        self.ty += random.uniform(-15, 15)

        self.angle = get_angle(x, y, self.tx, self.ty)
        ...
        self.velx, self.vely = get_vel(self.angle, 18)

def get_angle(x1, y1, x2, y2):
    rise = y1 - y2
    run = x1 - x2
    angle = math.atan2(run, rise)
    angle = angle / (math.pi / 180)
    return angle

def get_vel(angle, offset):
   return (math.sin(angle * (math.pi / 180)) * offset, math.cos(angle * (math.pi / 180)) * offset)

xtxyty之间的距离很小angle时,距离会变得很奇怪。 有时子弹甚至会朝着相反的方向发展。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您可以根据距离缩放约束,最大值。目标点与目标距离远远超过射击者是没有意义的。