角度和目标坐标问题

2024-04-26 12:53:22 发布

您现在位置:Python中文网/ 问答频道 /正文

当玩家射击时,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就变得奇怪了。 有时子弹甚至会朝相反的方向发射。你知道吗

我该怎么修?你知道吗


Tags: selfgetdefpirandommathuniformoffset