当正在初始化玩家射击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)
当x
和tx
或y
和ty
之间的距离很小angle
时,距离会变得很奇怪。
有时子弹甚至会朝着相反的方向发展。
我该如何解决?
答案 0 :(得分:1)
您可以根据距离缩放约束,最大值。目标点与目标距离远远超过射击者是没有意义的。