0

我有这个代码:

def getAngle(x1, y1, x2, y2):
rise = y1 - y2
run = x1 - x2
angle = math.atan2(run, rise) # get the angle in radians
angle = angle * (180 / math.pi) # convert to degrees
angle = (angle) % 360 # adjust for a right-facing sprite
return angle

...根据屏幕上的鼠标位置返回一个角度。

我想设置一个时间间隔,我的对象的旋转将在特定点停止。例如:如果角度大于 90°,我希望我的对象停止获得更高的角度。在这种情况下,90° 应该像旋转停止的某个边界。

我认为我需要 2 个条件,因为角度不应该高于左右 90°。

有人知道如何解决这个问题吗?

这部分代码在游戏循环中(它使用定义的 getAngle):

    mousex, mousey = pygame.mouse.get_pos()
    for cannonx, cannony in (((width/2)-45, height-25), ((width/2)-45, height-25)):
        degrees = getAngle(cannonx, cannony, mousex, mousey)
        rotcannonImg = pygame.transform.rotate(cannonImg, degrees)
        rotcannonRect = rotcannonImg.get_rect()
        rotcannonRect.center = (cannonx, cannony)
        windowSurface.blit(rotcannonImg, rotcannonRect)
4

1 回答 1

0

“角度不应该高于左右90°”这句话在英语中没有明确的含义,所以我不确定你的意思。然而,下图显示了当点 (x1, y1) 位于线交叉处且 (x2, y2) 尤其是八分圆时,各种角度与上升和运行符号之间的关系。注意,dy = 上升,dx = 运行。也就是说,您可能能够测试上升迹象并运行以获得您想要的信息。 线和八分圆关系

于 2012-12-18T05:31:44.887 回答