当玩家射击时,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
就变得奇怪了。
有时子弹甚至会朝相反的方向发射。你知道吗
我该怎么修?你知道吗
可以基于距离缩放约束,直至最大值。瞄准点离目标的距离比枪手远是没有意义的。你知道吗
相关问题 更多 >
编程相关推荐